summaryrefslogtreecommitdiffstats
path: root/net/mac80211/iface.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2023-08-28 15:09:26 +0200
committerJohannes Berg <johannes.berg@intel.com>2023-09-11 11:27:18 +0200
commite3640a82e573f008e5c2058a7971873fa1d438c5 (patch)
treeee96e1a632b6ae7b96d8057e02ddbea22c5530b2 /net/mac80211/iface.c
parentwifi: mac80211: Fix SMPS handling in the context of MLO (diff)
downloadlinux-e3640a82e573f008e5c2058a7971873fa1d438c5.tar.xz
linux-e3640a82e573f008e5c2058a7971873fa1d438c5.zip
wifi: mac80211: fix SMPS status handling
The current SMPS status handling isn't per link, so we only ever change the deflink, which is obviously wrong, it's not even used for multi-link connections, but the request API actually includes the link ID. Use the new status_data changes to move the handling to the right link, this also saves parsing the frame again on the status report, instead we can now check only if it was an SMPS frame. Of course, move the worker to be a wiphy work so that we're able to cancel it safely for the link. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r--net/mac80211/iface.c11
1 files changed, 0 insertions, 11 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index be586bc0b5b7..4beab027e0f9 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -518,8 +518,6 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
del_timer_sync(&local->dynamic_ps_timer);
cancel_work_sync(&local->dynamic_ps_enable_work);
- cancel_work_sync(&sdata->recalc_smps);
-
sdata_lock(sdata);
WARN(ieee80211_vif_is_mld(&sdata->vif),
"destroying interface with valid links 0x%04x\n",
@@ -1692,14 +1690,6 @@ static void ieee80211_iface_work(struct wiphy *wiphy, struct wiphy_work *work)
}
}
-static void ieee80211_recalc_smps_work(struct work_struct *work)
-{
- struct ieee80211_sub_if_data *sdata =
- container_of(work, struct ieee80211_sub_if_data, recalc_smps);
-
- ieee80211_recalc_smps(sdata, &sdata->deflink);
-}
-
static void ieee80211_activate_links_work(struct work_struct *work)
{
struct ieee80211_sub_if_data *sdata =
@@ -1745,7 +1735,6 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
skb_queue_head_init(&sdata->skb_queue);
skb_queue_head_init(&sdata->status_queue);
wiphy_work_init(&sdata->work, ieee80211_iface_work);
- INIT_WORK(&sdata->recalc_smps, ieee80211_recalc_smps_work);
INIT_WORK(&sdata->activate_links_work, ieee80211_activate_links_work);
switch (type) {