diff options
author | Luis R. Rodriguez <lrodriguez@atheros.com> | 2010-01-07 17:24:55 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-14 18:16:53 -0500 |
commit | e99c7cd57b2481ee36b2338040e3ce1cd17e0763 (patch) | |
tree | c4571af4478a1b020702b361aec4bd6e34f4ec58 /net/wireless/reg.c | |
parent | 6021e08db47386507108a475e6c820a7006a4632 (diff) |
cfg80211: fix 2 GHz subband calculation for country IEs
Country IEs triplets are getting an extra channel with
the current count. This does not affect regulatory because
we always took the intersection between what the AP gave
and what CRDA believed is correct.
This however does fix processing some Country IEs with multiple
sequential 2 GHz triplets. Since our parser and the spec mandates
all channels be monitonically increasing we would drop the IE after
noticing the second triplet begins on a channel already processed.
APs that send these type of country IEs seems rare though.
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/reg.c')
-rw-r--r-- | net/wireless/reg.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index a5c2d3a6cbb2..f0859eada758 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
@@ -740,7 +740,7 @@ static struct ieee80211_regdomain *country_ie_2_rd( | |||
740 | /* 2 GHz */ | 740 | /* 2 GHz */ |
741 | if (triplet->chans.first_channel <= 14) | 741 | if (triplet->chans.first_channel <= 14) |
742 | end_channel = triplet->chans.first_channel + | 742 | end_channel = triplet->chans.first_channel + |
743 | triplet->chans.num_channels; | 743 | triplet->chans.num_channels - 1; |
744 | else | 744 | else |
745 | /* | 745 | /* |
746 | * 5 GHz -- For example in country IEs if the first | 746 | * 5 GHz -- For example in country IEs if the first |
@@ -863,7 +863,7 @@ static struct ieee80211_regdomain *country_ie_2_rd( | |||
863 | /* 2 GHz */ | 863 | /* 2 GHz */ |
864 | if (triplet->chans.first_channel <= 14) | 864 | if (triplet->chans.first_channel <= 14) |
865 | end_channel = triplet->chans.first_channel + | 865 | end_channel = triplet->chans.first_channel + |
866 | triplet->chans.num_channels; | 866 | triplet->chans.num_channels -1; |
867 | else | 867 | else |
868 | end_channel = triplet->chans.first_channel + | 868 | end_channel = triplet->chans.first_channel + |
869 | (4 * (triplet->chans.num_channels - 1)); | 869 | (4 * (triplet->chans.num_channels - 1)); |