All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless@vger.kernel.org
Cc: Rajkumar Manoharan <rmanohar@codeaurora.org>,
	Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>,
	Johannes Berg <johannes.berg@intel.com>
Subject: [PATCH 08/24] cfg80211: add and expose HE 6 GHz band capabilities
Date: Thu, 28 May 2020 16:50:04 +0200	[thread overview]
Message-ID: <20200528165011.244cd5cb9db8.Icd8c773277a88c837e7e3af1d4d1013cc3b66543@changeid> (raw)
In-Reply-To: <20200528165011.993f108e96ca.I0086ae42d672379380d04ac5effb2f3d5135731b@changeid>

From: Johannes Berg <johannes.berg@intel.com>

These capabilities cover what would otherwise be transported
in HT/VHT capabilities, but only a subset thereof that is
actually needed on 6 GHz with HE already present. Expose the
capabilities to userspace, drivers are expected to set them
as using the 6 GHz band (currently) requires HE capability.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 include/net/cfg80211.h       | 3 +++
 include/uapi/linux/nl80211.h | 3 +++
 net/wireless/nl80211.c       | 9 ++++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index da734ea71b5a..9b76be3d561a 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -354,10 +354,13 @@ struct ieee80211_sta_he_cap {
  *
  * @types_mask: interface types mask
  * @he_cap: holds the HE capabilities
+ * @he_6ghz_capa: HE 6 GHz capabilities, must be filled in for a
+ *	6 GHz band channel (and 0 may be valid value).
  */
 struct ieee80211_sband_iftype_data {
 	u16 types_mask;
 	struct ieee80211_sta_he_cap he_cap;
+	struct ieee80211_he_6ghz_capa he_6ghz_capa;
 };
 
 /**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index e42ae429383e..5b350d032fa3 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -3565,6 +3565,8 @@ enum nl80211_mpath_info {
  *     defined in HE capabilities IE
  * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
  *     defined
+ * @NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA: HE 6GHz band capabilities (__le16),
+ *	given for all 6 GHz band channels
  * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
  */
 enum nl80211_band_iftype_attr {
@@ -3575,6 +3577,7 @@ enum nl80211_band_iftype_attr {
 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
+	NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
 
 	/* keep last */
 	__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bf8bd8268cb7..3a24e6add13e 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1562,6 +1562,7 @@ static int nl80211_send_coalesce(struct sk_buff *msg,
 
 static int
 nl80211_send_iftype_data(struct sk_buff *msg,
+			 const struct ieee80211_supported_band *sband,
 			 const struct ieee80211_sband_iftype_data *iftdata)
 {
 	const struct ieee80211_sta_he_cap *he_cap = &iftdata->he_cap;
@@ -1585,6 +1586,12 @@ nl80211_send_iftype_data(struct sk_buff *msg,
 			return -ENOBUFS;
 	}
 
+	if (sband->band == NL80211_BAND_6GHZ &&
+	    nla_put(msg, NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
+		    sizeof(iftdata->he_6ghz_capa),
+		    &iftdata->he_6ghz_capa))
+		return -ENOBUFS;
+
 	return 0;
 }
 
@@ -1633,7 +1640,7 @@ static int nl80211_send_band_rateinfo(struct sk_buff *msg,
 			if (!iftdata)
 				return -ENOBUFS;
 
-			err = nl80211_send_iftype_data(msg,
+			err = nl80211_send_iftype_data(msg, sband,
 						       &sband->iftype_data[i]);
 			if (err)
 				return err;
-- 
2.26.2


  parent reply	other threads:[~2020-05-28 14:50 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-28 14:49 [PATCH 01/24] nl80211: really allow client-only BIGTK support Johannes Berg
2020-05-28 14:49 ` [PATCH 02/24] cfg80211: add a helper to identify 6 GHz PSCs Johannes Berg
2020-05-28 14:49 ` [PATCH 03/24] ieee80211: definitions for reduced neighbor reports Johannes Berg
2020-05-28 14:50 ` [PATCH 04/24] ieee80211: add code to obtain and parse 6 GHz operation field Johannes Berg
2020-05-28 14:50 ` [PATCH 05/24] ieee80211: add HE ext EIDs and 6 GHz capability defines Johannes Berg
2020-05-28 14:50 ` [PATCH 06/24] cfg80211: handle 6 GHz capability of new station Johannes Berg
2020-05-28 14:50 ` [PATCH 07/24] mac80211: add HE 6 GHz Band Capabilities into parse extension Johannes Berg
2020-05-28 14:50 ` Johannes Berg [this message]
2020-05-28 14:50 ` [PATCH 09/24] mac80211: add HE 6 GHz Band Capability element Johannes Berg
2020-05-28 14:50 ` [PATCH 10/24] mac80211: build HE operation with 6 GHz oper information Johannes Berg
2020-05-28 14:50 ` [PATCH 11/24] mac80211: do not allow HT/VHT IEs in 6 GHz mesh mode Johannes Berg
2020-05-28 14:50 ` [PATCH 12/24] mac80211: avoid using ext NSS high BW if not supported Johannes Berg
2020-05-28 17:50   ` Johannes Berg
2020-05-28 17:53     ` Johannes Berg
2020-05-28 14:50 ` [PATCH 13/24] mac80211: determine chandef from HE 6 GHz operation Johannes Berg
2020-05-28 14:50 ` [PATCH 14/24] mac80211: check the correct bit for EMA AP Johannes Berg
2020-05-28 14:50 ` [PATCH 15/24] mac80211: use HE 6 GHz band capability and pass it to the driver Johannes Berg
2020-05-28 14:50 ` [PATCH 16/24] mac80211: Add HE 6GHz capabilities element to probe request Johannes Berg
2020-05-28 14:50 ` [PATCH 17/24] cfg80211: treat 6 GHz channels as valid regardless of capability Johannes Berg
2020-05-28 14:50 ` [PATCH 18/24] cfg80211: reject HT/VHT capabilities on 6 GHz band Johannes Berg
2020-05-28 14:50 ` [PATCH 19/24] cfg80211: require HE capabilities for " Johannes Berg
2020-05-28 14:50 ` [PATCH 20/24] cfg80211: Update 6GHz starting frequency Johannes Berg
2020-05-28 14:50 ` [PATCH 21/24] mac80211: accept aggregation sessions on 6 GHz Johannes Berg
2020-05-28 14:50 ` [PATCH 22/24] mac80211: Consider 6 GHz band when handling power constraint Johannes Berg
2020-05-28 14:50 ` [PATCH 23/24] mac80211: set short_slot for 6 GHz band Johannes Berg
2020-05-28 14:50 ` [PATCH 24/24] nl80211/cfg80211: support 6 GHz scanning Johannes Berg
2020-05-29 19:56   ` kbuild test robot
2020-05-28 16:39 ` [PATCH 01/24] nl80211: really allow client-only BIGTK support Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200528165011.244cd5cb9db8.Icd8c773277a88c837e7e3af1d4d1013cc3b66543@changeid \
    --to=johannes@sipsolutions.net \
    --cc=johannes.berg@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pradeepc@codeaurora.org \
    --cc=rmanohar@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.