Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 351742
b: refs/heads/master
c: fe7ef5e
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg committed Jan 3, 2013
1 parent f878a63 commit 984bf9a
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 50 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6913b49a5071064f49f7a74b432286fa735f7612
refs/heads/master: fe7ef5e9ba0c60bab01390493a4c6790f7b093af
7 changes: 2 additions & 5 deletions trunk/drivers/net/wireless/ath/regd.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,6 @@ ath_reg_apply_beaconing_flags(struct wiphy *wiphy,
const struct ieee80211_reg_rule *reg_rule;
struct ieee80211_channel *ch;
unsigned int i;
u32 bandwidth = 0;
int r;

for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
Expand All @@ -216,7 +215,6 @@ ath_reg_apply_beaconing_flags(struct wiphy *wiphy,
if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
r = freq_reg_info(wiphy,
ch->center_freq,
bandwidth,
&reg_rule);
if (r)
continue;
Expand Down Expand Up @@ -254,7 +252,6 @@ ath_reg_apply_active_scan_flags(struct wiphy *wiphy,
struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch;
const struct ieee80211_reg_rule *reg_rule;
u32 bandwidth = 0;
int r;

sband = wiphy->bands[IEEE80211_BAND_2GHZ];
Expand Down Expand Up @@ -283,15 +280,15 @@ ath_reg_apply_active_scan_flags(struct wiphy *wiphy,
*/

ch = &sband->channels[11]; /* CH 12 */
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, &reg_rule);
r = freq_reg_info(wiphy, ch->center_freq, &reg_rule);
if (!r) {
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
}

ch = &sband->channels[12]; /* CH 13 */
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, &reg_rule);
r = freq_reg_info(wiphy, ch->center_freq, &reg_rule);
if (!r) {
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/brcm80211/brcmsmac/channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ brcms_reg_apply_beaconing_flags(struct wiphy *wiphy,

if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
ret = freq_reg_info(wiphy, ch->center_freq,
0, &rule);
&rule);
if (ret)
continue;

Expand Down
9 changes: 3 additions & 6 deletions trunk/drivers/net/wireless/rtlwifi/regd.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ static void _rtl_reg_apply_beaconing_flags(struct wiphy *wiphy,
const struct ieee80211_reg_rule *reg_rule;
struct ieee80211_channel *ch;
unsigned int i;
u32 bandwidth = 0;
int r;

for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
Expand All @@ -174,8 +173,7 @@ static void _rtl_reg_apply_beaconing_flags(struct wiphy *wiphy,
(ch->flags & IEEE80211_CHAN_RADAR))
continue;
if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
r = freq_reg_info(wiphy, ch->center_freq,
bandwidth, &reg_rule);
r = freq_reg_info(wiphy, ch->center_freq, &reg_rule);
if (r)
continue;

Expand Down Expand Up @@ -211,7 +209,6 @@ static void _rtl_reg_apply_active_scan_flags(struct wiphy *wiphy,
struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch;
const struct ieee80211_reg_rule *reg_rule;
u32 bandwidth = 0;
int r;

if (!wiphy->bands[IEEE80211_BAND_2GHZ])
Expand Down Expand Up @@ -240,15 +237,15 @@ static void _rtl_reg_apply_active_scan_flags(struct wiphy *wiphy,
*/

ch = &sband->channels[11]; /* CH 12 */
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, &reg_rule);
r = freq_reg_info(wiphy, ch->center_freq, &reg_rule);
if (!r) {
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
}

ch = &sband->channels[12]; /* CH 13 */
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, &reg_rule);
r = freq_reg_info(wiphy, ch->center_freq, &reg_rule);
if (!r) {
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
Expand Down
8 changes: 1 addition & 7 deletions trunk/include/net/cfg80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -2938,10 +2938,6 @@ extern void wiphy_apply_custom_regulatory(
* 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
* @desired_bw_khz: the desired max bandwidth you want to use per
* channel. Note that this is still 20 MHz if you want to use HT40
* as HT40 makes use of two channels for its 40 MHz width bandwidth.
* If set to 0 we'll assume you want the standard 20 MHz.
* @reg_rule: the regulatory rule which we have for this frequency
*
* Use this function to get the regulatory rule for a specific frequency on
Expand All @@ -2956,9 +2952,7 @@ extern void wiphy_apply_custom_regulatory(
* freq_in_rule_band() for our current definition of a band -- this is purely
* subjective and right now its 802.11 specific.
*/
extern int freq_reg_info(struct wiphy *wiphy,
u32 center_freq,
u32 desired_bw_khz,
extern int freq_reg_info(struct wiphy *wiphy, u32 center_freq,
const struct ieee80211_reg_rule **reg_rule);

/*
Expand Down
44 changes: 14 additions & 30 deletions trunk/net/wireless/reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,7 @@ static bool is_valid_rd(const struct ieee80211_regdomain *rd)
}

static bool reg_does_bw_fit(const struct ieee80211_freq_range *freq_range,
u32 center_freq_khz,
u32 bw_khz)
u32 center_freq_khz, u32 bw_khz)
{
u32 start_freq_khz, end_freq_khz;

Expand Down Expand Up @@ -682,19 +681,14 @@ static u32 map_regdom_flags(u32 rd_flags)
return channel_flags;
}

static int freq_reg_info_regd(struct wiphy *wiphy,
u32 center_freq,
u32 desired_bw_khz,
static int freq_reg_info_regd(struct wiphy *wiphy, u32 center_freq,
const struct ieee80211_reg_rule **reg_rule,
const struct ieee80211_regdomain *regd)
{
int i;
bool band_rule_found = false;
bool bw_fits = false;

if (!desired_bw_khz)
desired_bw_khz = MHZ_TO_KHZ(20);

if (!regd)
return -EINVAL;

Expand All @@ -713,7 +707,7 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
if (!band_rule_found)
band_rule_found = freq_in_rule_band(fr, center_freq);

bw_fits = reg_does_bw_fit(fr, center_freq, desired_bw_khz);
bw_fits = reg_does_bw_fit(fr, center_freq, MHZ_TO_KHZ(20));

if (band_rule_found && bw_fits) {
*reg_rule = rr;
Expand All @@ -727,7 +721,7 @@ static int freq_reg_info_regd(struct wiphy *wiphy,
return -EINVAL;
}

int freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 desired_bw_khz,
int freq_reg_info(struct wiphy *wiphy, u32 center_freq,
const struct ieee80211_reg_rule **reg_rule)
{
const struct ieee80211_regdomain *regd;
Expand All @@ -746,8 +740,7 @@ int freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 desired_bw_khz,
else
regd = cfg80211_regdomain;

return freq_reg_info_regd(wiphy, center_freq, desired_bw_khz,
reg_rule, regd);
return freq_reg_info_regd(wiphy, center_freq, reg_rule, regd);
}
EXPORT_SYMBOL(freq_reg_info);

Expand All @@ -770,7 +763,6 @@ static const char *reg_initiator_name(enum nl80211_reg_initiator initiator)
}

static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
u32 desired_bw_khz,
const struct ieee80211_reg_rule *reg_rule)
{
const struct ieee80211_power_rule *power_rule;
Expand All @@ -785,8 +777,8 @@ static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
else
snprintf(max_antenna_gain, 32, "%d", power_rule->max_antenna_gain);

REG_DBG_PRINT("Updating information on frequency %d MHz for a %d MHz width channel with regulatory rule:\n",
chan->center_freq, KHZ_TO_MHZ(desired_bw_khz));
REG_DBG_PRINT("Updating information on frequency %d MHz with regulatory rule:\n",
chan->center_freq);

REG_DBG_PRINT("%d KHz - %d KHz @ %d KHz), (%s mBi, %d mBm)\n",
freq_range->start_freq_khz, freq_range->end_freq_khz,
Expand All @@ -795,7 +787,6 @@ static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
}
#else
static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
u32 desired_bw_khz,
const struct ieee80211_reg_rule *reg_rule)
{
return;
Expand All @@ -805,19 +796,14 @@ static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
/*
* Note that right now we assume the desired channel bandwidth
* is always 20 MHz for each individual channel (HT40 uses 20 MHz
* per channel, the primary and the extension channel). To support
* smaller custom bandwidths such as 5 MHz or 10 MHz we'll need a
* new ieee80211_channel.target_bw and re run the regulatory check
* on the wiphy with the target_bw specified. Then we can simply use
* that below for the desired_bw_khz below.
* per channel, the primary and the extension channel).
*/
static void handle_channel(struct wiphy *wiphy,
enum nl80211_reg_initiator initiator,
struct ieee80211_channel *chan)
{
int r;
u32 flags, bw_flags = 0;
u32 desired_bw_khz = MHZ_TO_KHZ(20);
const struct ieee80211_reg_rule *reg_rule = NULL;
const struct ieee80211_power_rule *power_rule = NULL;
const struct ieee80211_freq_range *freq_range = NULL;
Expand All @@ -829,8 +815,7 @@ static void handle_channel(struct wiphy *wiphy,

flags = chan->orig_flags;

r = freq_reg_info(wiphy, MHZ_TO_KHZ(chan->center_freq),
desired_bw_khz, &reg_rule);
r = freq_reg_info(wiphy, MHZ_TO_KHZ(chan->center_freq), &reg_rule);
if (r) {
/*
* We will disable all channels that do not match our
Expand All @@ -851,7 +836,7 @@ static void handle_channel(struct wiphy *wiphy,
return;
}

chan_reg_rule_print_dbg(chan, desired_bw_khz, reg_rule);
chan_reg_rule_print_dbg(chan, reg_rule);

power_rule = &reg_rule->power_rule;
freq_range = &reg_rule->freq_range;
Expand Down Expand Up @@ -1223,23 +1208,22 @@ static void handle_channel_custom(struct wiphy *wiphy,
const struct ieee80211_regdomain *regd)
{
int r;
u32 desired_bw_khz = MHZ_TO_KHZ(20);
u32 bw_flags = 0;
const struct ieee80211_reg_rule *reg_rule = NULL;
const struct ieee80211_power_rule *power_rule = NULL;
const struct ieee80211_freq_range *freq_range = NULL;

r = freq_reg_info_regd(wiphy, MHZ_TO_KHZ(chan->center_freq),
desired_bw_khz, &reg_rule, regd);
&reg_rule, regd);

if (r) {
REG_DBG_PRINT("Disabling freq %d MHz as custom regd has no rule that fits a %d MHz wide channel\n",
chan->center_freq, KHZ_TO_MHZ(desired_bw_khz));
REG_DBG_PRINT("Disabling freq %d MHz as custom regd has no rule that fits it\n",
chan->center_freq);
chan->flags = IEEE80211_CHAN_DISABLED;
return;
}

chan_reg_rule_print_dbg(chan, desired_bw_khz, reg_rule);
chan_reg_rule_print_dbg(chan, reg_rule);

power_rule = &reg_rule->power_rule;
freq_range = &reg_rule->freq_range;
Expand Down

0 comments on commit 984bf9a

Please sign in to comment.