]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
iwlwifi: mvm: don't allow CSA if we haven't been fully associated
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 30 Mar 2021 13:24:52 +0000 (16:24 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 14 Apr 2021 09:05:26 +0000 (12:05 +0300)
"Fully associated" means that we heard a beacon with the DTIM
information and the firmware is configured to track the beacons.
Since the firmware needs to track the beacons for the CSA, we
can't configure the firmware for CSA before it knows when the
beacons are expected otherwise we'd get ASSERT 301D.
If we are required to start CSA before we told the firmware
when the beacons are expected to arrive, just report a
failure and let mac80211 disconnect.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210330162204.9adaedeb59e4.Idaad6aaf3f9759d023b8e00b10064915c0db9aa3@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index baf7404c137dbdf6addde33045c3bdf4841d0e57..9ed6e2783cc40ab16a4991106911577dc76f8551 100644 (file)
@@ -4610,6 +4610,16 @@ static int iwl_mvm_pre_channel_switch(struct ieee80211_hw *hw,
 
                break;
        case NL80211_IFTYPE_STATION:
+               /*
+                * We haven't configured the firmware to be associated yet since
+                * we don't know the dtim period. In this case, the firmware can't
+                * track the beacons.
+                */
+               if (!vif->bss_conf.assoc || !vif->bss_conf.dtim_period) {
+                       ret = -EBUSY;
+                       goto out_unlock;
+               }
+
                if (chsw->delay > IWL_MAX_CSA_BLOCK_TX)
                        schedule_delayed_work(&mvmvif->csa_work, 0);