OSDN Git Service

iwlwifi: mvm: perform 6GHz passive scan after suspend
authorAvraham Stern <avraham.stern@intel.com>
Sun, 19 Dec 2021 10:18:20 +0000 (12:18 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 21 Dec 2021 10:35:07 +0000 (12:35 +0200)
The 6GHz passive scan is performed only once every 50 minutes.
However, in case of suspend/resume, the regulatory information
is reset, so 6GHz channels may become disabled.
Fix it by performing a 6GHz passive scan within 60 seconds after
suspend/resume even if the 50 minutes timeout did not expire yet.

Signed-off-by: Avraham Stern <avraham.stern@intel.com>
Fixes: e8fe3b41c3a3 ("iwlwifi: mvm: Add support for 6GHz passive scan")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211219121514.6d5c043372cf.I251dd5618a3f0b8febbcca788eb861f1cd6039bc@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/scan.c

index cad190f..68ee577 100644 (file)
@@ -1925,22 +1925,19 @@ static void iwl_mvm_scan_6ghz_passive_scan(struct iwl_mvm *mvm,
        }
 
        /*
-        * 6GHz passive scan is allowed while associated in a defined time
-        * interval following HW reset or resume flow
+        * 6GHz passive scan is allowed in a defined time interval following HW
+        * reset or resume flow, or while not associated and a large interval
+        * has passed since the last 6GHz passive scan.
         */
-       if (vif->bss_conf.assoc &&
+       if ((vif->bss_conf.assoc ||
+            time_after(mvm->last_6ghz_passive_scan_jiffies +
+                       (IWL_MVM_6GHZ_PASSIVE_SCAN_TIMEOUT * HZ), jiffies)) &&
            (time_before(mvm->last_reset_or_resume_time_jiffies +
                         (IWL_MVM_6GHZ_PASSIVE_SCAN_ASSOC_TIMEOUT * HZ),
                         jiffies))) {
-               IWL_DEBUG_SCAN(mvm, "6GHz passive scan: associated\n");
-               return;
-       }
-
-       /* No need for 6GHz passive scan if not enough time elapsed */
-       if (time_after(mvm->last_6ghz_passive_scan_jiffies +
-                      (IWL_MVM_6GHZ_PASSIVE_SCAN_TIMEOUT * HZ), jiffies)) {
-               IWL_DEBUG_SCAN(mvm,
-                              "6GHz passive scan: timeout did not expire\n");
+               IWL_DEBUG_SCAN(mvm, "6GHz passive scan: %s\n",
+                              vif->bss_conf.assoc ? "associated" :
+                              "timeout did not expire");
                return;
        }