iwlwifi: mvm: beacon statistics shouldn't go backwards
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Fri, 17 Apr 2020 07:08:10 +0000 (10:08 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Apr 2020 14:31:31 +0000 (16:31 +0200)
commit 290d5e4951832e39d10f4184610dbf09038f8483 upstream.

We reset statistics also in case that we didn't reassoc so in
this cases keep last beacon counter.

Cc: stable@vger.kernel.org # v4.19+
Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/iwlwifi.20200417100405.1f9142751fbc.Ifbfd0f928a0a761110b8f4f2ca5483a61fb21131@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/intel/iwlwifi/mvm/rx.c

index e6a67bc022090a52f9000a43df05cdef6197b971..bdb87d8e96445c5b4759af8691c0f3c645a8b20f 100644 (file)
@@ -587,6 +587,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
 
 struct iwl_mvm_stat_data {
        struct iwl_mvm *mvm;
+       __le32 flags;
        __le32 mac_id;
        u8 beacon_filter_average_energy;
        void *general;
@@ -630,6 +631,13 @@ static void iwl_mvm_stat_iterator(void *_data, u8 *mac,
                }
        }
 
+       /* make sure that beacon statistics don't go backwards with TCM
+        * request to clear statistics
+        */
+       if (le32_to_cpu(data->flags) & IWL_STATISTICS_REPLY_FLG_CLEAR)
+               mvmvif->beacon_stats.accu_num_beacons +=
+                       mvmvif->beacon_stats.num_beacons;
+
        if (mvmvif->id != id)
                return;
 
@@ -790,6 +798,7 @@ void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm,
 
                flags = stats->flag;
        }
+       data.flags = flags;
 
        iwl_mvm_rx_stats_check_trigger(mvm, pkt);