Commit f4745cbb authored by Avraham Stern's avatar Avraham Stern Committed by Luca Coelho
Browse files

iwlwifi: mvm: perform 6GHz passive scan after suspend



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: default avatarAvraham Stern <avraham.stern@intel.com>
Fixes: e8fe3b41 ("iwlwifi: mvm: Add support for 6GHz passive scan")
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211219121514.6d5c043372cf.I251dd5618a3f0b8febbcca788eb861f1cd6039bc@changeid


Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 39e9e796
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -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;
	}