ath9k: add counters for good and errorneous FFT/spectral frames
authorSimon Wunderlich <sw@simonwunderlich.de>
Mon, 1 Oct 2018 14:26:42 +0000 (17:26 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 2 Oct 2018 04:43:32 +0000 (07:43 +0300)
This is helpful to see whether spectral samples get discarded.

Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath9k/common-debug.c
drivers/net/wireless/ath/ath9k/common-debug.h
drivers/net/wireless/ath/ath9k/common-spectral.c

index 239429f..53ca4b0 100644 (file)
@@ -144,6 +144,8 @@ static ssize_t read_file_recv(struct file *file, char __user *user_buf,
        RXS_ERR("BEACONS", rx_beacons);
        RXS_ERR("FRAGS", rx_frags);
        RXS_ERR("SPECTRAL", rx_spectral);
+       RXS_ERR("SPECTRAL SMPL GOOD", rx_spectral_sample_good);
+       RXS_ERR("SPECTRAL SMPL ERR", rx_spectral_sample_err);
 
        RXS_ERR("CRC ERR", crc_err);
        RXS_ERR("DECRYPT CRC ERR", decrypt_crc_err);
index 3376990..2938b5b 100644 (file)
@@ -39,6 +39,8 @@
  * @rx_beacons:  No. of beacons received.
  * @rx_frags:  No. of rx-fragements received.
  * @rx_spectral: No of spectral packets received.
+ * @rx_spectral_sample_good: No. of good spectral samples
+ * @rx_spectral_sample_err: No. of good spectral samples
  */
 struct ath_rx_stats {
        u32 rx_pkts_all;
@@ -58,6 +60,8 @@ struct ath_rx_stats {
        u32 rx_beacons;
        u32 rx_frags;
        u32 rx_spectral;
+       u32 rx_spectral_sample_good;
+       u32 rx_spectral_sample_err;
 };
 
 #ifdef CONFIG_ATH9K_COMMON_DEBUG
index 440e16e..0c55590 100644 (file)
@@ -501,6 +501,7 @@ int ath_cmn_process_fft(struct ath_spec_scan_priv *spec_priv, struct ieee80211_h
        u8 sample_buf[SPECTRAL_SAMPLE_MAX_LEN] = {0};
        struct ath_hw *ah = spec_priv->ah;
        struct ath_common *common = ath9k_hw_common(spec_priv->ah);
+       struct ath_softc *sc = (struct ath_softc *)common->priv;
        u8 num_bins, *vdata = (u8 *)hdr;
        struct ath_radar_info *radar_info;
        int len = rs->rs_datalen;
@@ -649,8 +650,13 @@ int ath_cmn_process_fft(struct ath_spec_scan_priv *spec_priv, struct ieee80211_h
                                                       sample_buf, sample_len,
                                                       sample_bytes);
 
-                               fft_handler(rs, spec_priv, sample_buf,
-                                           tsf, freq, chan_type);
+                               ret = fft_handler(rs, spec_priv, sample_buf,
+                                                 tsf, freq, chan_type);
+
+                               if (ret == 0)
+                                       RX_STAT_INC(rx_spectral_sample_good);
+                               else
+                                       RX_STAT_INC(rx_spectral_sample_err);
 
                                memset(sample_buf, 0, SPECTRAL_SAMPLE_MAX_LEN);
 
@@ -665,6 +671,11 @@ int ath_cmn_process_fft(struct ath_spec_scan_priv *spec_priv, struct ieee80211_h
                                ret = fft_handler(rs, spec_priv, sample_start,
                                                  tsf, freq, chan_type);
 
+                               if (ret == 0)
+                                       RX_STAT_INC(rx_spectral_sample_good);
+                               else
+                                       RX_STAT_INC(rx_spectral_sample_err);
+
                                /* Mix the received bins to the /dev/random
                                 * pool
                                 */