wifi: nl80211: support advertising S1G capabilities
authorKieran Frewen <kieran.frewen@morsemicro.com>
Thu, 23 Feb 2023 21:29:17 +0000 (10:29 +1300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 30 Mar 2023 10:02:59 +0000 (12:02 +0200)
Include S1G capabilities in netlink band info messages.

Signed-off-by: Kieran Frewen <kieran.frewen@morsemicro.com>
Co-developed-by: Gilad Itzkovitch <gilad.itzkovitch@morsemicro.com>
Signed-off-by: Gilad Itzkovitch <gilad.itzkovitch@morsemicro.com>
Link: https://lore.kernel.org/r/20230223212917.4010246-1-gilad.itzkovitch@virscient.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/uapi/linux/nl80211.h
net/wireless/nl80211.c

index cf4fb98..c59fec4 100644 (file)
@@ -4061,6 +4061,10 @@ enum nl80211_band_iftype_attr {
  * @NL80211_BAND_ATTR_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes
  *     the allowed channel bandwidth configurations.
  *     Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
+ * @NL80211_BAND_ATTR_S1G_MCS_NSS_SET: S1G capabilities, supported S1G-MCS and NSS
+ *     set subfield, as in the S1G information IE, 5 bytes
+ * @NL80211_BAND_ATTR_S1G_CAPA: S1G capabilities information subfield as in the
+ *     S1G information IE, 10 bytes
  * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
  * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
  */
@@ -4081,6 +4085,9 @@ enum nl80211_band_attr {
        NL80211_BAND_ATTR_EDMG_CHANNELS,
        NL80211_BAND_ATTR_EDMG_BW_CONFIG,
 
+       NL80211_BAND_ATTR_S1G_MCS_NSS_SET,
+       NL80211_BAND_ATTR_S1G_CAPA,
+
        /* keep last */
        __NL80211_BAND_ATTR_AFTER_LAST,
        NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
index f1cd3d9..2c9edb0 100644 (file)
@@ -1961,6 +1961,16 @@ static int nl80211_send_band_rateinfo(struct sk_buff *msg,
 
        nla_nest_end(msg, nl_rates);
 
+       /* S1G capabilities */
+       if (sband->band == NL80211_BAND_S1GHZ && sband->s1g_cap.s1g &&
+           (nla_put(msg, NL80211_BAND_ATTR_S1G_CAPA,
+                    sizeof(sband->s1g_cap.cap),
+                    sband->s1g_cap.cap) ||
+            nla_put(msg, NL80211_BAND_ATTR_S1G_MCS_NSS_SET,
+                    sizeof(sband->s1g_cap.nss_mcs),
+                    sband->s1g_cap.nss_mcs)))
+               return -ENOBUFS;
+
        return 0;
 }