]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iwlwifi: mvm: Disconnect on large beacon loss
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Sun, 4 Nov 2018 19:56:31 +0000 (21:56 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 29 Jan 2019 14:10:31 +0000 (16:10 +0200)
Some buggy APs stop sending beacons, but continue to ack our null data
packets or even run some traffic. It's better not to stick connected to
such an AP forever, so disconnect after some larger beacon loss
threshold is crossed.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h

index c868ebfa10ceb0a0a9d1c69d09894575d070e8a8..7cfdd07d873694b0fc99810f257227ebabad1943 100644 (file)
@@ -1415,8 +1415,9 @@ void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm,
         * TODO: the threshold should be adjusted based on latency conditions,
         * and/or in case of a CS flow on one of the other AP vifs.
         */
-       if (le32_to_cpu(mb->consec_missed_beacons_since_last_rx) >
-            IWL_MVM_MISSED_BEACONS_THRESHOLD)
+       if (rx_missed_bcon > IWL_MVM_MISSED_BEACONS_THRESHOLD_LONG)
+               iwl_mvm_connection_loss(mvm, vif, "missed beacons");
+       else if (rx_missed_bcon_since_rx > IWL_MVM_MISSED_BEACONS_THRESHOLD)
                ieee80211_beacon_loss(vif);
 
        trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif),
index 5d28080e257e7f22ffd5e7a5f74214a6a8251692..55f08e43333135808afaf2f56148c279bcba7d3d 100644 (file)
@@ -94,6 +94,8 @@
 /* RSSI offset for WkP */
 #define IWL_RSSI_OFFSET 50
 #define IWL_MVM_MISSED_BEACONS_THRESHOLD 8
+#define IWL_MVM_MISSED_BEACONS_THRESHOLD_LONG 16
+
 /* A TimeUnit is 1024 microsecond */
 #define MSEC_TO_TU(_msec)      (_msec*1000/1024)