Commit c4b9d655 authored by Ganapathi Bhat's avatar Ganapathi Bhat Committed by Johannes Berg

wireless: fix enabling channel 12 for custom regulatory domain

Commit e33e2241 ("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: default avatarCathy Luo <xiaohua.luo@nxp.com>
Signed-off-by: default avatarGanapathi 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: default avatarJohannes Berg <johannes.berg@intel.com>
parent 02a61449
...@@ -2261,14 +2261,15 @@ static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator) ...@@ -2261,14 +2261,15 @@ static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator)
static void handle_channel_custom(struct wiphy *wiphy, static void handle_channel_custom(struct wiphy *wiphy,
struct ieee80211_channel *chan, struct ieee80211_channel *chan,
const struct ieee80211_regdomain *regd) const struct ieee80211_regdomain *regd,
u32 min_bw)
{ {
u32 bw_flags = 0; u32 bw_flags = 0;
const struct ieee80211_reg_rule *reg_rule = NULL; const struct ieee80211_reg_rule *reg_rule = NULL;
const struct ieee80211_power_rule *power_rule = NULL; const struct ieee80211_power_rule *power_rule = NULL;
u32 bw; 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), reg_rule = freq_reg_info_regd(MHZ_TO_KHZ(chan->center_freq),
regd, bw); regd, bw);
if (!IS_ERR(reg_rule)) if (!IS_ERR(reg_rule))
...@@ -2324,8 +2325,14 @@ static void handle_band_custom(struct wiphy *wiphy, ...@@ -2324,8 +2325,14 @@ static void handle_band_custom(struct wiphy *wiphy,
if (!sband) if (!sband)
return; 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++) 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 */ /* Used by drivers prior to wiphy registration */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment