From: Emmanuel Grumbach This function is ap mode related, move it to ap.c. Also, don't call iwl_mld_ftm_responder_clear from stop_ap() since mac80211 does it now before stopping the AP. Signed-off-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/ap.c | 37 ++++++++++++++++++- drivers/net/wireless/intel/iwlwifi/mld/ap.h | 8 ++-- .../net/wireless/intel/iwlwifi/mld/mac80211.c | 33 ----------------- 3 files changed, 40 insertions(+), 38 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/ap.c b/drivers/net/wireless/intel/iwlwifi/mld/ap.c index c29e4a77be05..bc426b911ce5 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/ap.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/ap.c @@ -239,8 +239,8 @@ int iwl_mld_store_ap_early_key(struct iwl_mld *mld, return -ENOSPC; } -void iwl_mld_stop_beacon(struct iwl_mld *mld, struct ieee80211_vif *vif, - struct ieee80211_bss_conf *link) +static void iwl_mld_stop_beacon(struct iwl_mld *mld, struct ieee80211_vif *vif, + struct ieee80211_bss_conf *link) { struct iwl_mld_link *mld_link = iwl_mld_link_from_mac80211(link); struct iwl_mac_beacon_cmd cmd = {}; @@ -258,6 +258,39 @@ void iwl_mld_stop_beacon(struct iwl_mld *mld, struct ieee80211_vif *vif, iwl_mld_send_cmd_pdu(mld, BEACON_TEMPLATE_CMD, &cmd); } +void +iwl_mld_link_info_changed_ap_ibss(struct iwl_mld *mld, + struct ieee80211_vif *vif, + struct ieee80211_bss_conf *link, + u64 changes) +{ + u32 link_changes = 0; + + if (changes & BSS_CHANGED_ERP_SLOT) + link_changes |= LINK_CONTEXT_MODIFY_RATES_INFO; + + if (changes & (BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_HT)) + link_changes |= LINK_CONTEXT_MODIFY_PROTECT_FLAGS; + + if (changes & (BSS_CHANGED_QOS | BSS_CHANGED_BANDWIDTH)) + link_changes |= LINK_CONTEXT_MODIFY_QOS_PARAMS; + + if (changes & BSS_CHANGED_HE_BSS_COLOR) + link_changes |= LINK_CONTEXT_MODIFY_HE_PARAMS; + + if (link_changes) + iwl_mld_change_link_in_fw(mld, link, link_changes); + + if (changes & BSS_CHANGED_BEACON) { + WARN_ON(!link->enable_beacon); + iwl_mld_update_beacon_template(mld, vif, link); + } + + /* Enabling beacons was already covered above */ + if ((changes & BSS_CHANGED_BEACON_ENABLED) && !link->enable_beacon) + iwl_mld_stop_beacon(mld, vif, link); +} + static int iwl_mld_send_ap_early_keys(struct iwl_mld *mld, struct ieee80211_vif *vif, struct ieee80211_bss_conf *link) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/ap.h b/drivers/net/wireless/intel/iwlwifi/mld/ap.h index a3b6bed814ad..f10e9c9a38ff 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/ap.h +++ b/drivers/net/wireless/intel/iwlwifi/mld/ap.h @@ -14,9 +14,11 @@ int iwl_mld_update_beacon_template(struct iwl_mld *mld, struct ieee80211_vif *vif, struct ieee80211_bss_conf *link_conf); -void iwl_mld_stop_beacon(struct iwl_mld *mld, - struct ieee80211_vif *vif, - struct ieee80211_bss_conf *link_conf); +void +iwl_mld_link_info_changed_ap_ibss(struct iwl_mld *mld, + struct ieee80211_vif *vif, + struct ieee80211_bss_conf *link, + u64 changes); int iwl_mld_start_ap_ibss(struct ieee80211_hw *hw, struct ieee80211_vif *vif, diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c index 403bc38ac2bc..c02994e63b14 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c @@ -1235,39 +1235,6 @@ int iwl_mld_mac80211_set_rts_threshold(struct ieee80211_hw *hw, int radio_idx, return 0; } -static void -iwl_mld_link_info_changed_ap_ibss(struct iwl_mld *mld, - struct ieee80211_vif *vif, - struct ieee80211_bss_conf *link, - u64 changes) -{ - u32 link_changes = 0; - - if (changes & BSS_CHANGED_ERP_SLOT) - link_changes |= LINK_CONTEXT_MODIFY_RATES_INFO; - - if (changes & (BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_HT)) - link_changes |= LINK_CONTEXT_MODIFY_PROTECT_FLAGS; - - if (changes & (BSS_CHANGED_QOS | BSS_CHANGED_BANDWIDTH)) - link_changes |= LINK_CONTEXT_MODIFY_QOS_PARAMS; - - if (changes & BSS_CHANGED_HE_BSS_COLOR) - link_changes |= LINK_CONTEXT_MODIFY_HE_PARAMS; - - if (link_changes) - iwl_mld_change_link_in_fw(mld, link, link_changes); - - if (changes & BSS_CHANGED_BEACON) { - WARN_ON(!link->enable_beacon); - iwl_mld_update_beacon_template(mld, vif, link); - } - - /* Enabling beacons was already covered above */ - if ((changes & BSS_CHANGED_BEACON_ENABLED) && !link->enable_beacon) - iwl_mld_stop_beacon(mld, vif, link); -} - static u32 iwl_mld_link_changed_mapping(struct iwl_mld *mld, struct ieee80211_vif *vif, -- 2.34.1