]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: iwlwifi: abort scan when rfkill on but device enabled
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 4 Oct 2023 09:36:28 +0000 (12:36 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 23 Oct 2023 10:21:48 +0000 (12:21 +0200)
In RFKILL we first set the RFKILL bit, then we abort scan
(if one exists) by waiting for the notification from FW
and notifying mac80211. And then we stop the device.
But in case we have a scan ongoing in the period of time between
rfkill on and before the device is stopped - we will not wait for the
FW notification because of the iwl_mvm_is_radio_killed() condition,
and then the scan_status and uid_status are misconfigured,
(scan_status is cleared but uid_status not)
and when the notification suddenly arrives (before stopping the device)
we will get into the assert about scan_status and uid_status mismatch.
Fix this by waiting for FW notif when rfkill is on but the device isn't
disabled yet.

Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20231004123422.c43b69aa2c77.Icc7b5efb47974d6f499156ff7510b786e177993b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/scan.c

index 3cbe2c0b8d6bcddd5416eae3d0c3524e0e149843..75c5c58e14a516e95e02f5fd2d6577d716d75d51 100644 (file)
@@ -3408,7 +3408,7 @@ int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify)
        if (!(mvm->scan_status & type))
                return 0;
 
-       if (iwl_mvm_is_radio_killed(mvm)) {
+       if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) {
                ret = 0;
                goto out;
        }