All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
	Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>,
	Jouni Malinen <j@w1.fi>
Subject: [PATCH V2] cfg80211: adapt to new channelization of the 6GHz band
Date: Fri, 29 May 2020 11:41:43 +0200	[thread overview]
Message-ID: <edf07cdd-ad15-4012-3afd-d8b961a80b69@broadcom.com> (raw)
In-Reply-To: <1590744414-55473-1-git-send-email-arend.vanspriel@broadcom.com>

The 6GHz band does not have regulatory approval yet, but things are
moving forward. However, that has led to a change in the channelization
of the 6GHz band which has been accepted in the 11ax specification. It
also fixes a missing MHZ_TO_KHZ() macro for 6GHz channels while at it.

This change is primarily thrown in to discuss how to deal with it.
I noticed ath11k adding 6G support with old channelization and ditto
for iw. It probably involves changes in hostapd as well.

Cc: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
Cc: Jouni Malinen <jouni@w1.fi>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
V2:
  - deal with channel 2 in ieee80211_chandef_to_operating_class()
---
  net/wireless/util.c | 49 ++++++++++++++++++++++++++++++++++++++++-----
  1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/net/wireless/util.c b/net/wireless/util.c
index df75e58eca5d..220f44ae3a70 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -92,9 +92,11 @@ u32 ieee80211_channel_to_freq_khz(int chan, enum 
nl80211_band band)
  			return MHZ_TO_KHZ(5000 + chan * 5);
  		break;
  	case NL80211_BAND_6GHZ:
-		/* see 802.11ax D4.1 27.3.22.2 */
+		/* see 802.11ax D6.1 27.3.23.2 */
+		if (chan == 2)
+			return MHZ_TO_KHZ(5935);
  		if (chan <= 253)
-			return 5940 + chan * 5;
+			return MHZ_TO_KHZ(5950 + chan * 5);
  		break;
  	case NL80211_BAND_60GHZ:
  		if (chan < 7)
@@ -119,11 +121,14 @@ int ieee80211_freq_khz_to_channel(u32 freq)
  		return (freq - 2407) / 5;
  	else if (freq >= 4910 && freq <= 4980)
  		return (freq - 4000) / 5;
-	else if (freq < 5945)
+	else if (freq < 5935)
  		return (freq - 5000) / 5;
+	else if (freq == 5935)
+		/* see 802.11ax D6.1 27.3.23.2 */
+		return 2;
  	else if (freq <= 45000) /* DMG band lower limit */
-		/* see 802.11ax D4.1 27.3.22.2 */
-		return (freq - 5940) / 5;
+		/* see 802.11ax D6.1 27.3.23.2 */
+		return (freq - 5950) / 5;
  	else if (freq >= 58320 && freq <= 70200)
  		return (freq - 56160) / 2160;
  	else
@@ -1662,6 +1667,40 @@ bool ieee80211_chandef_to_operating_class(struct 
cfg80211_chan_def *chandef,
  		return true;
  	}
+	/* 6GHz, channels 1..233 */
+	if (freq == 5935) {
+		if (chandef->width != NL80211_CHAN_WIDTH_20)
+			return false;
+
+		*op_class = 136;
+		return true;
+	} else if (freq > 5935 && freq <= 7115) {
+		switch (chandef->width) {
+		case NL80211_CHAN_WIDTH_20:
+			*op_class = 131;
+			break;
+		case NL80211_CHAN_WIDTH_40:
+			*op_class = 132;
+			break;
+		case NL80211_CHAN_WIDTH_80:
+			*op_class = 133;
+			break;
+		case NL80211_CHAN_WIDTH_160:
+			*op_class = 134;
+			break;
+		case NL80211_CHAN_WIDTH_80P80:
+			*op_class = 135;
+			break;
+		case NL80211_CHAN_WIDTH_5:
+		case NL80211_CHAN_WIDTH_10:
+		case NL80211_CHAN_WIDTH_20_NOHT:
+		default:
+			return false;
+		}
+
+		return true;
+	}
+
  	/* 56.16 GHz, channel 1..4 */
  	if (freq >= 56160 + 2160 * 1 && freq <= 56160 + 2160 * 6) {
  		if (chandef->width >= NL80211_CHAN_WIDTH_40)
-- 
2.18.0


       reply	other threads:[~2020-05-29  9:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1590744414-55473-1-git-send-email-arend.vanspriel@broadcom.com>
2020-05-29  9:41 ` Arend Van Spriel [this message]
2020-05-29  9:53   ` [PATCH V2] cfg80211: adapt to new channelization of the 6GHz band Johannes Berg
2020-05-29 11:46     ` Arend Van Spriel

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=edf07cdd-ad15-4012-3afd-d8b961a80b69@broadcom.com \
    --to=arend.vanspriel@broadcom.com \
    --cc=j@w1.fi \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pradeepc@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.