]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: cfg80211: disallow SMPS in AP mode
authorJohannes Berg <johannes.berg@intel.com>
Mon, 7 Oct 2024 12:00:46 +0000 (15:00 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Oct 2024 14:43:03 +0000 (16:43 +0200)
In practice, userspace hasn't been able to set this for many
years, and mac80211 has already rejected it (which is now no
longer needed), so reject SMPS mode (other than "OFF" to be
a bit more compatible) in AP mode. Also remove the parameter
from the AP settings struct.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20241007144851.fe1fc46484cf.I8676fb52b818a4bedeb9c25b901e1396277ffc0b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/quantenna/qtnfmac/commands.c
include/net/cfg80211.h
net/mac80211/cfg.c
net/wireless/nl80211.c

index 9540ad6196d727ab23815db03d59fb4642e49e60..956c5763662f6c2b1624a452379868e3192ea006 100644 (file)
@@ -257,7 +257,7 @@ int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
        cmd->beacon_interval = cpu_to_le16(s->beacon_interval);
        cmd->hidden_ssid = qlink_hidden_ssid_nl2q(s->hidden_ssid);
        cmd->inactivity_timeout = cpu_to_le16(s->inactivity_timeout);
-       cmd->smps_mode = s->smps_mode;
+       cmd->smps_mode = NL80211_SMPS_OFF;
        cmd->p2p_ctwindow = s->p2p_ctwindow;
        cmd->p2p_opp_ps = s->p2p_opp_ps;
        cmd->pbss = s->pbss;
index 69ec1eb41a0906ccd83e00dc052e46e2e2c58e4d..c8ce5c2e14f4d7cdcb618873b45a6715286d615a 100644 (file)
@@ -1460,7 +1460,6 @@ struct cfg80211_unsol_bcast_probe_resp {
  * @crypto: crypto settings
  * @privacy: the BSS uses privacy
  * @auth_type: Authentication type (algorithm)
- * @smps_mode: SMPS mode
  * @inactivity_timeout: time in seconds to determine station's inactivity.
  * @p2p_ctwindow: P2P CT Window
  * @p2p_opp_ps: P2P opportunistic PS
@@ -1498,7 +1497,6 @@ struct cfg80211_ap_settings {
        struct cfg80211_crypto_settings crypto;
        bool privacy;
        enum nl80211_auth_type auth_type;
-       enum nl80211_smps_mode smps_mode;
        int inactivity_timeout;
        u8 p2p_ctwindow;
        bool p2p_opp_ps;
index ce9558cd1576cb5c1812da26b1e5050199778671..548b9bbdac0450f183f15c0b100e8cd60a7be8fa 100644 (file)
@@ -1312,9 +1312,6 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
        if (old)
                return -EALREADY;
 
-       if (params->smps_mode != NL80211_SMPS_OFF)
-               return -EOPNOTSUPP;
-
        link->smps_mode = IEEE80211_SMPS_OFF;
 
        link->needed_rx_chains = sdata->local->rx_chains;
index 4e3609176880f71fac339236f1ee9ce940fd859b..fb35c03af34c4a867ad3e9d2379a9fffdecc42c3 100644 (file)
@@ -6227,33 +6227,9 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
                        goto out;
        }
 
-       if (info->attrs[NL80211_ATTR_SMPS_MODE]) {
-               params->smps_mode =
-                       nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]);
-               switch (params->smps_mode) {
-               case NL80211_SMPS_OFF:
-                       break;
-               case NL80211_SMPS_STATIC:
-                       if (!(rdev->wiphy.features &
-                             NL80211_FEATURE_STATIC_SMPS)) {
-                               err = -EINVAL;
-                               goto out;
-                       }
-                       break;
-               case NL80211_SMPS_DYNAMIC:
-                       if (!(rdev->wiphy.features &
-                             NL80211_FEATURE_DYNAMIC_SMPS)) {
-                               err = -EINVAL;
-                               goto out;
-                       }
-                       break;
-               default:
-                       err = -EINVAL;
-                       goto out;
-               }
-       } else {
-               params->smps_mode = NL80211_SMPS_OFF;
-       }
+       if (info->attrs[NL80211_ATTR_SMPS_MODE] &&
+           nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]) != NL80211_SMPS_OFF)
+               return -EOPNOTSUPP;
 
        params->pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]);
        if (params->pbss && !rdev->wiphy.bands[NL80211_BAND_60GHZ]) {