mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 12:37:00 +07:00
iwlwifi: mvm: add some missing cleanups in iwl_mvm_mac_add_interface
iwl_mvm_mac_add_interface() didn't clean up beacon filtering configuration and ctxt allocation in some error cases. Signed-off-by: Eliad Peller <eliad@wizery.com> Reviewed-by: Alexander Bondar <alexander.bondar@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
5fdda0476c
commit
bd3351ba3e
@ -564,6 +564,10 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
iwl_mvm_power_update_mode(mvm, vif);
|
||||
|
||||
/* beacon filtering */
|
||||
ret = iwl_mvm_disable_beacon_filter(mvm, vif);
|
||||
if (ret)
|
||||
goto out_remove_mac;
|
||||
|
||||
if (!mvm->bf_allowed_vif &&
|
||||
vif->type == NL80211_IFTYPE_STATION && !vif->p2p &&
|
||||
mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BF_UPDATED){
|
||||
@ -571,10 +575,6 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
|
||||
}
|
||||
|
||||
ret = iwl_mvm_disable_beacon_filter(mvm, vif);
|
||||
if (ret)
|
||||
goto out_release;
|
||||
|
||||
/*
|
||||
* P2P_DEVICE interface does not have a channel context assigned to it,
|
||||
* so a dedicated PHY context is allocated to it and the corresponding
|
||||
@ -585,7 +585,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
mvmvif->phy_ctxt = iwl_mvm_get_free_phy_ctxt(mvm);
|
||||
if (!mvmvif->phy_ctxt) {
|
||||
ret = -ENOSPC;
|
||||
goto out_remove_mac;
|
||||
goto out_free_bf;
|
||||
}
|
||||
|
||||
iwl_mvm_phy_ctxt_ref(mvm, mvmvif->phy_ctxt);
|
||||
@ -609,6 +609,11 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
iwl_mvm_binding_remove_vif(mvm, vif);
|
||||
out_unref_phy:
|
||||
iwl_mvm_phy_ctxt_unref(mvm, mvmvif->phy_ctxt);
|
||||
out_free_bf:
|
||||
if (mvm->bf_allowed_vif == mvmvif) {
|
||||
mvm->bf_allowed_vif = NULL;
|
||||
vif->driver_flags &= ~IEEE80211_VIF_BEACON_FILTER;
|
||||
}
|
||||
out_remove_mac:
|
||||
mvmvif->phy_ctxt = NULL;
|
||||
iwl_mvm_mac_ctxt_remove(mvm, vif);
|
||||
|
Loading…
Reference in New Issue
Block a user