From: Thomas Pedersen <thomas@adapt-ip.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
Thomas Pedersen <thomas@adapt-ip.com>
Subject: [PATCH 06/22] {cfg,mac}80211: get correct default channel width for S1G
Date: Thu, 27 Aug 2020 15:32:48 -0700 [thread overview]
Message-ID: <20200827223304.16155-7-thomas@adapt-ip.com> (raw)
In-Reply-To: <20200827223304.16155-1-thomas@adapt-ip.com>
Until now, the wifi default channels were assumed to be
NL80211_CHAN_NO_HT, or NL80211_CHAN_WIDTH_20_NOHT. S1G
devices however do not support these channel types/width.
When a default channel width is requested (during default
chandef init, or chanctx removal when not using channel
context), for S1G calculate the correct width. Fixes eg.
configuring strange (20Mhz) width during a scan on the S1G
band.
Signed-off-by: Thomas Pedersen <thomas@adapt-ip.com>
---
net/mac80211/chan.c | 9 ++++++++-
net/wireless/chan.c | 10 ++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c
index bdc0f29dc6cd..8f48aff74c7b 100644
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -536,7 +536,14 @@ static void ieee80211_del_chanctx(struct ieee80211_local *local,
if (!local->use_chanctx) {
struct cfg80211_chan_def *chandef = &local->_oper_chandef;
- chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
+ /* S1G doesn't have 20MHz, so get the correct width for the
+ * current channel.
+ */
+ if (chandef->chan->band == NL80211_BAND_S1GHZ)
+ chandef->width =
+ ieee80211_s1g_channel_width(chandef->chan);
+ else
+ chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
chandef->center_freq1 = chandef->chan->center_freq;
chandef->freq1_offset = chandef->chan->freq_offset;
chandef->center_freq2 = 0;
diff --git a/net/wireless/chan.c b/net/wireless/chan.c
index 0a4b8d3eaed9..3bff52d51b05 100644
--- a/net/wireless/chan.c
+++ b/net/wireless/chan.c
@@ -32,6 +32,16 @@ void cfg80211_chandef_create(struct cfg80211_chan_def *chandef,
chandef->edmg.bw_config = 0;
chandef->edmg.channels = 0;
+ /* S1G allows a single width per channel, and since chan_type seems to
+ * be for backwards compatibility only, ignore it and return the per
+ * frequency width.
+ */
+ if (chan->band == NL80211_BAND_S1GHZ) {
+ chandef->width = ieee80211_s1g_channel_width(chan);
+ chandef->center_freq1 = chan->center_freq;
+ return;
+ }
+
switch (chan_type) {
case NL80211_CHAN_NO_HT:
chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
--
2.20.1
next prev parent reply other threads:[~2020-08-27 22:33 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-27 22:32 [PATCH 00/22] add initial S1G support Thomas Pedersen
2020-08-27 22:32 ` [PATCH 01/22] nl80211: advertise supported channel width in S1G Thomas Pedersen
2020-08-27 22:32 ` [PATCH 02/22] cfg80211: regulatory: pass min. bandwidth to regulatory rule extractor Thomas Pedersen
2020-08-28 1:38 ` kernel test robot
2020-08-28 6:21 ` Thomas Pedersen
2020-08-27 22:32 ` [PATCH 03/22] cfg80211: regulatory: handle S1G channels Thomas Pedersen
2020-08-27 22:32 ` [PATCH 04/22] nl80211: correctly validate S1G beacon head Thomas Pedersen
2020-08-27 22:32 ` [PATCH 05/22] nl80211: support setting S1G channels Thomas Pedersen
2020-08-27 22:32 ` Thomas Pedersen [this message]
2020-08-27 22:32 ` [PATCH 07/22] mac80211: s1g: choose scanning width based on frequency Thomas Pedersen
2020-08-27 22:32 ` [PATCH 08/22] nl80211: support S1G capabilities Thomas Pedersen
2020-08-27 22:32 ` [PATCH 09/22] mac80211: support S1G STA capabilities Thomas Pedersen
2020-08-27 22:32 ` [PATCH 10/22] cfg80211: convert S1G beacon to scan results Thomas Pedersen
2020-08-27 22:32 ` [PATCH 11/22] cfg80211: parse S1G Operation element for BSS channel Thomas Pedersen
2020-08-27 22:32 ` [PATCH 12/22] mac80211: convert S1G beacon to scan results Thomas Pedersen
2020-08-27 22:32 ` [PATCH 13/22] cfg80211: handle Association Response from S1G STA Thomas Pedersen
2020-08-27 22:32 ` [PATCH 14/22] mac80211: encode listen interval for S1G Thomas Pedersen
2020-08-27 22:32 ` [PATCH 15/22] mac80211: don't calculate duration " Thomas Pedersen
2020-08-27 22:32 ` [PATCH 16/22] mac80211: handle S1G low rates Thomas Pedersen
2020-08-27 22:32 ` [PATCH 17/22] mac80211: avoid rate init for S1G band Thomas Pedersen
2020-08-27 22:33 ` [PATCH 18/22] mac80211: receive and process S1G beacons Thomas Pedersen
2020-08-27 22:33 ` [PATCH 19/22] mac80211: support S1G association Thomas Pedersen
2020-08-27 22:33 ` [PATCH 20/22] nl80211: include frequency offset in survey info Thomas Pedersen
2020-08-27 22:33 ` [PATCH 21/22] mac80211_hwsim: indicate support for S1G Thomas Pedersen
2020-08-28 6:54 ` kernel test robot
2020-08-28 7:52 ` Kalle Valo
2020-08-31 16:42 ` Thomas Pedersen
2020-08-30 2:28 ` [mac80211_hwsim] dc5ef7078b: BUG:KASAN:stack-out-of-bounds_in__freq_reg_info kernel test robot
2020-08-27 22:33 ` [PATCH 22/22] mac80211_hwsim: fix TSF timestamp write to S1G beacon Thomas Pedersen
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=20200827223304.16155-7-thomas@adapt-ip.com \
--to=thomas@adapt-ip.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).