| From 505e3f402e09fda7843bed5d65d189d3f6c59922 Mon Sep 17 00:00:00 2001 |
| From: Ganapathi Bhat <ganapathi.bhat@nxp.com> |
| Date: Fri, 20 Dec 2019 10:14:32 +0000 |
| Subject: [PATCH] wireless: fix enabling channel 12 for custom regulatory |
| domain |
| |
| commit c4b9d655e445a8be0bff624aedea190606b5ebbc upstream. |
| |
| Commit e33e2241e272 ("Revert "cfg80211: Use 5MHz bandwidth by |
| default when checking usable channels"") fixed a broken |
| regulatory (leaving channel 12 open for AP where not permitted). |
| Apply a similar fix to custom regulatory domain processing. |
| |
| Signed-off-by: Cathy Luo <xiaohua.luo@nxp.com> |
| Signed-off-by: Ganapathi Bhat <ganapathi.bhat@nxp.com> |
| Link: https://lore.kernel.org/r/1576836859-8945-1-git-send-email-ganapathi.bhat@nxp.com |
| [reword commit message, fix coding style, add a comment] |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/wireless/reg.c b/net/wireless/reg.c |
| index 36eba5804efe..92fe4d78710c 100644 |
| --- a/net/wireless/reg.c |
| +++ b/net/wireless/reg.c |
| @@ -2261,14 +2261,15 @@ static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator) |
| |
| static void handle_channel_custom(struct wiphy *wiphy, |
| struct ieee80211_channel *chan, |
| - const struct ieee80211_regdomain *regd) |
| + const struct ieee80211_regdomain *regd, |
| + u32 min_bw) |
| { |
| u32 bw_flags = 0; |
| const struct ieee80211_reg_rule *reg_rule = NULL; |
| const struct ieee80211_power_rule *power_rule = NULL; |
| u32 bw; |
| |
| - for (bw = MHZ_TO_KHZ(20); bw >= MHZ_TO_KHZ(5); bw = bw / 2) { |
| + for (bw = MHZ_TO_KHZ(20); bw >= min_bw; bw = bw / 2) { |
| reg_rule = freq_reg_info_regd(MHZ_TO_KHZ(chan->center_freq), |
| regd, bw); |
| if (!IS_ERR(reg_rule)) |
| @@ -2324,8 +2325,14 @@ static void handle_band_custom(struct wiphy *wiphy, |
| if (!sband) |
| return; |
| |
| + /* |
| + * We currently assume that you always want at least 20 MHz, |
| + * otherwise channel 12 might get enabled if this rule is |
| + * compatible to US, which permits 2402 - 2472 MHz. |
| + */ |
| for (i = 0; i < sband->n_channels; i++) |
| - handle_channel_custom(wiphy, &sband->channels[i], regd); |
| + handle_channel_custom(wiphy, &sband->channels[i], regd, |
| + MHZ_TO_KHZ(20)); |
| } |
| |
| /* Used by drivers prior to wiphy registration */ |
| -- |
| 2.7.4 |
| |