From: Johannes Berg Date: Fri, 24 Jun 2022 13:14:26 +0000 (+0200) Subject: wifi: mac80211: expect powersave handling in driver for MLO X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8c7c6b581987dda035c73661cf83973a02a055d8;p=linux.git wifi: mac80211: expect powersave handling in driver for MLO In MLO, expect the driver fully handles powersave handling, including tracking whether or not a beacon was received, the DTIM period, etc. Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 1258e506377ec..8d5b18318b20e 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -984,7 +984,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) return -EINVAL; if (WARN_ON(ieee80211_hw_check(hw, SUPPORTS_PS) && - !ieee80211_hw_check(hw, SUPPORTS_DYNAMIC_PS))) + (!ieee80211_hw_check(hw, SUPPORTS_DYNAMIC_PS) || + ieee80211_hw_check(hw, PS_NULLFUNC_STACK)))) return -EINVAL; if (WARN_ON(!ieee80211_hw_check(hw, MFP_CAPABLE))) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index f8be05804e597..5400b3e567fa5 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1786,6 +1786,7 @@ static void ieee80211_change_ps(struct ieee80211_local *local) static bool ieee80211_powersave_allowed(struct ieee80211_sub_if_data *sdata) { + struct ieee80211_local *local = sdata->local; struct ieee80211_if_managed *mgd = &sdata->u.mgd; struct sta_info *sta = NULL; bool authorized = false; @@ -1802,7 +1803,8 @@ static bool ieee80211_powersave_allowed(struct ieee80211_sub_if_data *sdata) if (mgd->flags & IEEE80211_STA_CONNECTION_POLL) return false; - if (!sdata->deflink.u.mgd.have_beacon) + if (!(local->hw.wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO) && + !sdata->deflink.u.mgd.have_beacon) return false; rcu_read_lock();