ath10k: fix invalid survey reporting for QCA99X0
authorVasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
Wed, 12 Aug 2015 10:54:04 +0000 (16:24 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 17 Aug 2015 13:45:50 +0000 (16:45 +0300)
There are three WMI_CHAN_INFO events reported per channel
in QCA99X0 firmware. First one is a notification at the begining
of the channel dwell time with cmd_flag as CHAN_INFO_START(cmd_flag = 0),
second one is a notification at the end of the dwell time with cmd_flag
CHAN_INFO_PRE_COMPLETE (cmd_flag = 2) and the third is the indication
with CHAN_INFO_COMPLETE (cmd_flag = 1) which is the last indication for
the channel. Since there is a new state before the completion, the handler
is to fixed so that the counts are deducted from the ones reported with
CHAN_INFO_START rather than the ones reported with CHAN_INFO_PRE_COMPLETE.
Without this fix there will be lots of 0 msecs reported as active
and busy time.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/wmi.c
drivers/net/wireless/ath/ath10k/wmi.h

index 36b8f7148b5162da910d0f1fc46c8133ceabe1f8..a0a0b09743024aebbade148f2026e48f1b4eda4d 100644 (file)
@@ -2412,8 +2412,10 @@ void ath10k_wmi_event_chan_info(struct ath10k *ar, struct sk_buff *skb)
                ar->ch_info_can_report_survey = true;
        }
 
-       ar->survey_last_rx_clear_count = rx_clear_count;
-       ar->survey_last_cycle_count = cycle_count;
+       if (!(cmd_flags & WMI_CHAN_INFO_FLAG_PRE_COMPLETE)) {
+               ar->survey_last_rx_clear_count = rx_clear_count;
+               ar->survey_last_cycle_count = cycle_count;
+       }
 
 exit:
        spin_unlock_bh(&ar->data_lock);
index 232500a5d7bd9e41da6a6380e22908873a92850b..870265e7867b765ae4633f0da4d2d01a1b8e8090 100644 (file)
@@ -5590,6 +5590,7 @@ struct wmi_peer_sta_kickout_event {
 } __packed;
 
 #define WMI_CHAN_INFO_FLAG_COMPLETE BIT(0)
+#define WMI_CHAN_INFO_FLAG_PRE_COMPLETE BIT(1)
 
 /* Beacon filter wmi command info */
 #define BCN_FLT_MAX_SUPPORTED_IES      256