summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
diff options
context:
space:
mode:
authorGregory Greenman <gregory.greenman@intel.com>2023-03-28 10:59:05 +0300
committerJohannes Berg <johannes.berg@intel.com>2023-03-30 12:07:55 +0200
commit62e0ccb2170e7a20d62d38f781f90a8ef031c450 (patch)
treea48dbad2f725f53454da63d8803178be4772be13 /drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
parent22c588343529d34e971b7cafae99d23f80dff7e9 (diff)
wifi: iwlwifi: mvm: adjust internal stations to MLO
Internal stations are mcast/bcast and sniffer. They need some link specific data like bss id/phy id. Add link_conf as a parameter. Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230328104949.25b013fd30de.I7f9f5906123acae05040cceec470c9acb07b9d42@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
index 950f252c1a5a..c81b92d2e8f7 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
@@ -78,7 +78,7 @@ static int iwl_mvm_mld_mac_add_interface(struct ieee80211_hw *hw,
if (ret)
goto out_remove_link;
- ret = iwl_mvm_mld_add_bcast_sta(mvm, vif);
+ ret = iwl_mvm_mld_add_bcast_sta(mvm, vif, &vif->bss_conf);
if (ret)
goto out_remove_link;
@@ -194,7 +194,9 @@ static void iwl_mvm_mld_mac_remove_interface(struct ieee80211_hw *hw,
if (vif->type == NL80211_IFTYPE_P2P_DEVICE) {
mvm->p2p_device_vif = NULL;
- iwl_mvm_mld_rm_bcast_sta(mvm, vif);
+
+ /* P2P device uses only one link */
+ iwl_mvm_mld_rm_bcast_sta(mvm, vif, &vif->bss_conf);
/* Link needs to be deactivated before removal */
iwl_mvm_link_changed(mvm, vif, &vif->bss_conf,
LINK_CONTEXT_MODIFY_ACTIVE, false);
@@ -255,7 +257,8 @@ static int __iwl_mvm_mld_assign_vif_chanctx(struct iwl_mvm *mvm,
iwl_mvm_power_update_mac(mvm);
if (vif->type == NL80211_IFTYPE_MONITOR) {
- ret = iwl_mvm_mld_add_snif_sta(mvm, vif);
+ ret = iwl_mvm_mld_add_snif_sta(mvm, vif,
+ &vif->bss_conf);
if (ret)
goto deactivate;
}
@@ -348,14 +351,14 @@ static int iwl_mvm_mld_start_ap_ibss(struct ieee80211_hw *hw,
if (ret)
goto out_unlock;
- ret = iwl_mvm_mld_add_mcast_sta(mvm, vif);
+ ret = iwl_mvm_mld_add_mcast_sta(mvm, vif, link_conf);
if (ret)
goto out_unlock;
/* Send the bcast station. At this stage the TBTT and DTIM time
* events are added and applied to the scheduler
*/
- ret = iwl_mvm_mld_add_bcast_sta(mvm, vif);
+ ret = iwl_mvm_mld_add_bcast_sta(mvm, vif, link_conf);
if (ret)
goto out_rm_mcast;
@@ -379,9 +382,9 @@ static int iwl_mvm_mld_start_ap_ibss(struct ieee80211_hw *hw,
out_failed:
iwl_mvm_power_update_mac(mvm);
mvmvif->ap_ibss_active = false;
- iwl_mvm_mld_rm_bcast_sta(mvm, vif);
+ iwl_mvm_mld_rm_bcast_sta(mvm, vif, link_conf);
out_rm_mcast:
- iwl_mvm_mld_rm_mcast_sta(mvm, vif);
+ iwl_mvm_mld_rm_mcast_sta(mvm, vif, link_conf);
out_unlock:
mutex_unlock(&mvm->mutex);
return ret;
@@ -416,8 +419,8 @@ static void iwl_mvm_mld_stop_ap_ibss(struct ieee80211_hw *hw,
iwl_mvm_ftm_responder_clear(mvm, vif);
- iwl_mvm_mld_rm_bcast_sta(mvm, vif);
- iwl_mvm_mld_rm_mcast_sta(mvm, vif);
+ iwl_mvm_mld_rm_bcast_sta(mvm, vif, link_conf);
+ iwl_mvm_mld_rm_mcast_sta(mvm, vif, link_conf);
iwl_mvm_power_update_mac(mvm);
mutex_unlock(&mvm->mutex);