iwlwifi: mvm: refactor iwl_mvm_switch_vif_chanctx to support other modes
Currently we only support the CHANCTX_SWMODE_SWAP_CONTEXTS mode, but we need to support other modes as well. Spin a new function off in order to make it easier to support other modes. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
6b20d77437
commit
50cc9574d6
|
@ -2954,18 +2954,12 @@ static void iwl_mvm_unassign_vif_chanctx(struct ieee80211_hw *hw,
|
|||
mutex_unlock(&mvm->mutex);
|
||||
}
|
||||
|
||||
static int iwl_mvm_switch_vif_chanctx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif_chanctx_switch *vifs,
|
||||
int n_vifs,
|
||||
enum ieee80211_chanctx_switch_mode mode)
|
||||
static int
|
||||
iwl_mvm_switch_vif_chanctx_swap(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif_chanctx_switch *vifs)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
int ret;
|
||||
|
||||
/* we only support SWAP_CONTEXTS and with a single-vif right now */
|
||||
if (mode != CHANCTX_SWMODE_SWAP_CONTEXTS || n_vifs > 1)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mutex_lock(&mvm->mutex);
|
||||
__iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true);
|
||||
__iwl_mvm_remove_chanctx(mvm, vifs[0].old_ctx);
|
||||
|
@ -3015,6 +3009,34 @@ out_restart:
|
|||
|
||||
out:
|
||||
mutex_unlock(&mvm->mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int iwl_mvm_switch_vif_chanctx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif_chanctx_switch *vifs,
|
||||
int n_vifs,
|
||||
enum ieee80211_chanctx_switch_mode mode)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
int ret;
|
||||
|
||||
/* we only support a single-vif right now */
|
||||
if (n_vifs > 1)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (mode) {
|
||||
case CHANCTX_SWMODE_SWAP_CONTEXTS:
|
||||
ret = iwl_mvm_switch_vif_chanctx_swap(mvm, vifs);
|
||||
break;
|
||||
case CHANCTX_SWMODE_REASSIGN_VIF:
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
default:
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue