mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 08:04:24 -04:00
wifi: iwlwifi: mvm: dissolve iwl_mvm_mac_add_interface_common()
This wasn't really common anymore, so dissolve it, it has a pretty strange calling convention that's confusing. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230524203151.44320ab2e842.Ie1d6b9c28caca3b541ca383a4c0c8799b0e72fe0@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -1478,21 +1478,37 @@ iwl_mvm_chandef_get_primary_80(struct cfg80211_chan_def *chandef)
|
||||
return (control_start - data_start) / 80;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns true if addding the interface is done
|
||||
* (either with success or failure)
|
||||
*
|
||||
* FIXME: remove this again and merge it in
|
||||
*/
|
||||
static bool iwl_mvm_mac_add_interface_common(struct iwl_mvm *mvm,
|
||||
struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
int *ret)
|
||||
static int iwl_mvm_alloc_bcast_mcast_sta(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
|
||||
ret = iwl_mvm_alloc_bcast_sta(mvm, vif);
|
||||
if (ret) {
|
||||
IWL_ERR(mvm, "Failed to allocate bcast sta\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Only queue for this station is the mcast queue,
|
||||
* which shouldn't be in TFD mask anyway
|
||||
*/
|
||||
return iwl_mvm_allocate_int_sta(mvm, &mvmvif->deflink.mcast_sta, 0,
|
||||
vif->type,
|
||||
IWL_STA_MULTICAST);
|
||||
}
|
||||
|
||||
static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&mvm->mutex);
|
||||
|
||||
mvmvif->mvm = mvm;
|
||||
|
||||
/* the first link always points to the default one */
|
||||
@@ -1510,12 +1526,18 @@ static bool iwl_mvm_mac_add_interface_common(struct iwl_mvm *mvm,
|
||||
mvmvif->deflink.beacon_stats.num_beacons;
|
||||
|
||||
/* Allocate resources for the MAC context, and add it to the fw */
|
||||
*ret = iwl_mvm_mac_ctxt_init(mvm, vif);
|
||||
if (*ret)
|
||||
return true;
|
||||
ret = iwl_mvm_mac_ctxt_init(mvm, vif);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif);
|
||||
|
||||
/* Currently not much to do for NAN */
|
||||
if (vif->type == NL80211_IFTYPE_NAN) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* The AP binding flow can be done only after the beacon
|
||||
* template is configured (which happens only in the mac80211
|
||||
@@ -1530,50 +1552,12 @@ static bool iwl_mvm_mac_add_interface_common(struct iwl_mvm *mvm,
|
||||
if (vif->type == NL80211_IFTYPE_AP ||
|
||||
vif->type == NL80211_IFTYPE_ADHOC) {
|
||||
iwl_mvm_vif_dbgfs_register(mvm, vif);
|
||||
return true;
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
mvmvif->features |= hw->netdev_features;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int iwl_mvm_alloc_bcast_mcast_sta(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
|
||||
ret = iwl_mvm_alloc_bcast_sta(mvm, vif);
|
||||
if (ret) {
|
||||
IWL_ERR(mvm, "Failed to allocate bcast sta\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Only queue for this station is the mcast queue,
|
||||
* which shouldn't be in TFD mask anyway
|
||||
*/
|
||||
return iwl_mvm_allocate_int_sta(mvm, &mvmvif->deflink.mcast_sta, 0,
|
||||
vif->type,
|
||||
IWL_STA_MULTICAST);
|
||||
}
|
||||
|
||||
static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&mvm->mutex);
|
||||
|
||||
/* Common for MLD and non-MLD API */
|
||||
if (iwl_mvm_mac_add_interface_common(mvm, hw, vif, &ret))
|
||||
goto out;
|
||||
|
||||
ret = iwl_mvm_mac_ctxt_add(mvm, vif);
|
||||
if (ret)
|
||||
goto out_unlock;
|
||||
|
||||
Reference in New Issue
Block a user