iwlwifi: mvm: re-enable TX after channel switch
authorSara Sharon <sara.sharon@intel.com>
Thu, 8 Oct 2020 15:09:44 +0000 (18:09 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 8 Oct 2020 17:09:33 +0000 (20:09 +0300)
The FW relies on the re-enablement of the TX in order to know
it can exit quiet mode. Currently in case of CSA with quiet mode,
the quiet mode is never cancelled, resulting in a complete traffic
hang.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/iwlwifi.20201008180656.fee389c83ded.I09550fdadb61f899242d7e7b7578672372e2b7fe@changeid
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index afd3e220e8935573dbbb6fc0200a1f381b0899b5..cbdebefb854ac84f772096236cfcaad72b399945 100644 (file)
@@ -1597,9 +1597,7 @@ void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm,
                RCU_INIT_POINTER(mvm->csa_vif, NULL);
                return;
        case NL80211_IFTYPE_STATION:
-               if (!fw_has_capa(&mvm->fw->ucode_capa,
-                                IWL_UCODE_TLV_CAPA_CHANNEL_SWITCH_CMD))
-                       iwl_mvm_csa_client_absent(mvm, vif);
+               iwl_mvm_csa_client_absent(mvm, vif);
                cancel_delayed_work(&mvmvif->csa_work);
                ieee80211_chswitch_done(vif, true);
                break;
index 8695041ec3a64027cb305e3b1c4c06f1a75570bb..d56458ab5634bceaaa746df0f1bb2a41edb43088 100644 (file)
@@ -1370,9 +1370,7 @@ static int iwl_mvm_post_channel_switch(struct ieee80211_hw *hw,
                        goto out_unlock;
                }
 
-               if (!fw_has_capa(&mvm->fw->ucode_capa,
-                                IWL_UCODE_TLV_CAPA_CHANNEL_SWITCH_CMD))
-                       iwl_mvm_sta_modify_disable_tx(mvm, mvmsta, false);
+               iwl_mvm_sta_modify_disable_tx(mvm, mvmsta, false);
 
                iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);