OSDN Git Service

wifi: mac80211: expect powersave handling in driver for MLO
authorJohannes Berg <johannes.berg@intel.com>
Fri, 24 Jun 2022 13:14:26 +0000 (15:14 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Jul 2022 09:43:15 +0000 (11:43 +0200)
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 <johannes.berg@intel.com>
net/mac80211/main.c
net/mac80211/mlme.c

index 1258e50..8d5b183 100644 (file)
@@ -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)))
index f8be058..5400b3e 100644 (file)
@@ -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();