linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 02/22] cfg80211: regulatory: pass min. bandwidth to regulatory rule extractor
Date: Thu, 27 Aug 2020 15:32:44 -0700	[thread overview]
Message-ID: <20200827223304.16155-3-thomas@adapt-ip.com> (raw)
In-Reply-To: <20200827223304.16155-1-thomas@adapt-ip.com>

The regulatory code assumed 20Mhz is the minimum channel
bandwidth supported. Make this a parameter so S1G code can
pass smaller bandwidths.

Signed-off-by: Thomas Pedersen <thomas@adapt-ip.com>
---
 drivers/net/wireless/ath/regd.c                            | 2 +-
 drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c | 3 ++-
 drivers/net/wireless/realtek/rtlwifi/regd.c                | 7 ++++---
 include/net/cfg80211.h                                     | 3 ++-
 net/mac80211/util.c                                        | 2 +-
 net/wireless/nl80211.c                                     | 3 ++-
 net/wireless/reg.c                                         | 7 ++++---
 7 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c
index bee9110b91f3..f9c9ac16d2da 100644
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -268,7 +268,7 @@ static void ath_force_clear_no_ir_chan(struct wiphy *wiphy,
 {
 	const struct ieee80211_reg_rule *reg_rule;
 
-	reg_rule = freq_reg_info(wiphy, MHZ_TO_KHZ(ch->center_freq));
+	reg_rule = freq_reg_info(wiphy, MHZ_TO_KHZ(ch->center_freq), 20);
 	if (IS_ERR(reg_rule))
 		return;
 
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
index 5a6d9c86552a..d85b2707e2fa 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
@@ -677,7 +677,8 @@ brcms_reg_apply_beaconing_flags(struct wiphy *wiphy,
 
 			if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
 				rule = freq_reg_info(wiphy,
-						     MHZ_TO_KHZ(ch->center_freq));
+						MHZ_TO_KHZ(ch->center_freq),
+						20);
 				if (IS_ERR(rule))
 					continue;
 
diff --git a/drivers/net/wireless/realtek/rtlwifi/regd.c b/drivers/net/wireless/realtek/rtlwifi/regd.c
index 8be31e0ad878..3f9dd4941bb1 100644
--- a/drivers/net/wireless/realtek/rtlwifi/regd.c
+++ b/drivers/net/wireless/realtek/rtlwifi/regd.c
@@ -151,7 +151,8 @@ static void _rtl_reg_apply_beaconing_flags(struct wiphy *wiphy,
 				continue;
 			if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
 				reg_rule = freq_reg_info(wiphy,
-							 ch->center_freq);
+							 ch->center_freq,
+							 20);
 				if (IS_ERR(reg_rule))
 					continue;
 				/*
@@ -213,7 +214,7 @@ static void _rtl_reg_apply_active_scan_flags(struct wiphy *wiphy,
 	 */
 
 	ch = &sband->channels[11];	/* CH 12 */
-	reg_rule = freq_reg_info(wiphy, ch->center_freq);
+	reg_rule = freq_reg_info(wiphy, ch->center_freq, 20);
 	if (!IS_ERR(reg_rule)) {
 		if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
 			if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
@@ -221,7 +222,7 @@ static void _rtl_reg_apply_active_scan_flags(struct wiphy *wiphy,
 	}
 
 	ch = &sband->channels[12];	/* CH 13 */
-	reg_rule = freq_reg_info(wiphy, ch->center_freq);
+	reg_rule = freq_reg_info(wiphy, ch->center_freq, 20);
 	if (!IS_ERR(reg_rule)) {
 		if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
 			if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 3db0444086e2..2c737d6be9a1 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -5862,6 +5862,7 @@ void wiphy_apply_custom_regulatory(struct wiphy *wiphy,
  * freq_reg_info - get regulatory information for the given frequency
  * @wiphy: the wiphy for which we want to process this rule for
  * @center_freq: Frequency in KHz for which we want regulatory information for
+ * @min_bw: Minimum channel bandwidth in MHz for which we want regulatory information for
  *
  * Use this function to get the regulatory rule for a specific frequency on
  * a given wireless device. If the device has a specific regulatory domain
@@ -5877,7 +5878,7 @@ void wiphy_apply_custom_regulatory(struct wiphy *wiphy,
  * purely subjective and right now it's 802.11 specific.
  */
 const struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy,
-					       u32 center_freq);
+					       u32 center_freq, u32 min_bw);
 
 /**
  * reg_initiator_name - map regulatory request initiator enum to name
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index c8504ffc71a1..9ba1afe4ba1f 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1453,7 +1453,7 @@ void ieee80211_regulatory_limit_wmm_params(struct ieee80211_sub_if_data *sdata,
 		return;
 	}
 
-	rrule = freq_reg_info(sdata->wdev.wiphy, MHZ_TO_KHZ(center_freq));
+	rrule = freq_reg_info(sdata->wdev.wiphy, MHZ_TO_KHZ(center_freq), 20);
 
 	if (IS_ERR_OR_NULL(rrule) || !rrule->has_wmm) {
 		rcu_read_unlock();
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 5aded5de35cd..dd0f62e942ed 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1013,7 +1013,8 @@ static int nl80211_msg_put_channel(struct sk_buff *msg, struct wiphy *wiphy,
 
 	if (large) {
 		const struct ieee80211_reg_rule *rule =
-			freq_reg_info(wiphy, MHZ_TO_KHZ(chan->center_freq));
+			freq_reg_info(wiphy, MHZ_TO_KHZ(chan->center_freq),
+				      20);
 
 		if (!IS_ERR_OR_NULL(rule) && rule->has_wmm) {
 			if (nl80211_msg_put_wmm_rules(msg, rule))
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 35b8847a2f6d..6c130cec22c3 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1629,9 +1629,10 @@ __freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 min_bw)
 }
 
 const struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy,
-					       u32 center_freq)
+					       u32 center_freq,
+					       u32 min_bw)
 {
-	return __freq_reg_info(wiphy, center_freq, MHZ_TO_KHZ(20));
+	return __freq_reg_info(wiphy, center_freq, MHZ_TO_KHZ(min_bw));
 }
 EXPORT_SYMBOL(freq_reg_info);
 
@@ -1711,7 +1712,7 @@ static void handle_channel(struct wiphy *wiphy,
 
 	flags = chan->orig_flags;
 
-	reg_rule = freq_reg_info(wiphy, ieee80211_channel_to_khz(chan));
+	reg_rule = freq_reg_info(wiphy, ieee80211_channel_to_khz(chan), 20);
 	if (IS_ERR(reg_rule)) {
 		/*
 		 * We will disable all channels that do not match our
-- 
2.20.1


  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 ` Thomas Pedersen [this message]
2020-08-28  1:38   ` [PATCH 02/22] cfg80211: regulatory: pass min. bandwidth to regulatory rule extractor 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 ` [PATCH 06/22] {cfg,mac}80211: get correct default channel width for S1G Thomas Pedersen
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-3-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).