Commit f028905c authored by Luciano Coelho's avatar Luciano Coelho Committed by Emmanuel Grumbach

iwlwifi: mvm: use new pre_channel_switch op instead of channel_switch_beacon

A new callback has been added to prepare the device for a channel
switch.  Use the new callback instead of the old channel_switch_beacon
operation.

This makes it possible to remove the channel_switch_beacon operation
from mac80211.
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
parent 1d3c3f63
...@@ -3100,27 +3100,34 @@ static int iwl_mvm_mac_testmode_cmd(struct ieee80211_hw *hw, ...@@ -3100,27 +3100,34 @@ static int iwl_mvm_mac_testmode_cmd(struct ieee80211_hw *hw,
} }
#endif #endif
static void iwl_mvm_channel_switch_beacon(struct ieee80211_hw *hw, static int iwl_mvm_pre_channel_switch(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct cfg80211_chan_def *chandef) struct ieee80211_channel_switch *chsw)
{ {
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
struct ieee80211_vif *csa_vif; struct ieee80211_vif *csa_vif;
int ret;
mutex_lock(&mvm->mutex); mutex_lock(&mvm->mutex);
csa_vif = rcu_dereference_protected(mvm->csa_vif, csa_vif = rcu_dereference_protected(mvm->csa_vif,
lockdep_is_held(&mvm->mutex)); lockdep_is_held(&mvm->mutex));
if (WARN(csa_vif && csa_vif->csa_active, if (WARN(csa_vif && csa_vif->csa_active,
"Another CSA is already in progress")) "Another CSA is already in progress")) {
ret = -EBUSY;
goto out_unlock; goto out_unlock;
}
IWL_DEBUG_MAC80211(mvm, "CSA started to freq %d\n", IWL_DEBUG_MAC80211(mvm, "CSA started to freq %d\n",
chandef->center_freq1); chsw->chandef.center_freq1);
rcu_assign_pointer(mvm->csa_vif, vif); rcu_assign_pointer(mvm->csa_vif, vif);
ret = 0;
out_unlock: out_unlock:
mutex_unlock(&mvm->mutex); mutex_unlock(&mvm->mutex);
return ret;
} }
static void iwl_mvm_mac_flush(struct ieee80211_hw *hw, static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
...@@ -3215,7 +3222,7 @@ const struct ieee80211_ops iwl_mvm_hw_ops = { ...@@ -3215,7 +3222,7 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
.set_tim = iwl_mvm_set_tim, .set_tim = iwl_mvm_set_tim,
.channel_switch_beacon = iwl_mvm_channel_switch_beacon, .pre_channel_switch = iwl_mvm_pre_channel_switch,
.tdls_channel_switch = iwl_mvm_tdls_channel_switch, .tdls_channel_switch = iwl_mvm_tdls_channel_switch,
.tdls_cancel_channel_switch = iwl_mvm_tdls_cancel_channel_switch, .tdls_cancel_channel_switch = iwl_mvm_tdls_cancel_channel_switch,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment