|
@@ -498,6 +498,7 @@ static struct ieee80211_regdomain *country_ie_2_rd(
|
|
|
* calculate the number of reg rules we will need. We will need one
|
|
|
* for each channel subband */
|
|
|
while (country_ie_len >= 3) {
|
|
|
+ int end_channel = 0;
|
|
|
struct ieee80211_country_ie_triplet *triplet =
|
|
|
(struct ieee80211_country_ie_triplet *) country_ie;
|
|
|
int cur_sub_max_channel = 0, cur_channel = 0;
|
|
@@ -509,9 +510,25 @@ static struct ieee80211_regdomain *country_ie_2_rd(
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ /* 2 GHz */
|
|
|
+ if (triplet->chans.first_channel <= 14)
|
|
|
+ end_channel = triplet->chans.first_channel +
|
|
|
+ triplet->chans.num_channels;
|
|
|
+ else
|
|
|
+ /*
|
|
|
+ * 5 GHz -- For example in country IEs if the first
|
|
|
+ * channel given is 36 and the number of channels is 4
|
|
|
+ * then the individual channel numbers defined for the
|
|
|
+ * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
|
|
|
+ * and not 36, 37, 38, 39.
|
|
|
+ *
|
|
|
+ * See: http://tinyurl.com/11d-clarification
|
|
|
+ */
|
|
|
+ end_channel = triplet->chans.first_channel +
|
|
|
+ (4 * (triplet->chans.num_channels - 1));
|
|
|
+
|
|
|
cur_channel = triplet->chans.first_channel;
|
|
|
- cur_sub_max_channel = ieee80211_channel_to_frequency(
|
|
|
- cur_channel + triplet->chans.num_channels);
|
|
|
+ cur_sub_max_channel = end_channel;
|
|
|
|
|
|
/* Basic sanity check */
|
|
|
if (cur_sub_max_channel < cur_channel)
|
|
@@ -590,15 +607,6 @@ static struct ieee80211_regdomain *country_ie_2_rd(
|
|
|
end_channel = triplet->chans.first_channel +
|
|
|
triplet->chans.num_channels;
|
|
|
else
|
|
|
- /*
|
|
|
- * 5 GHz -- For example in country IEs if the first
|
|
|
- * channel given is 36 and the number of channels is 4
|
|
|
- * then the individual channel numbers defined for the
|
|
|
- * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
|
|
|
- * and not 36, 37, 38, 39.
|
|
|
- *
|
|
|
- * See: http://tinyurl.com/11d-clarification
|
|
|
- */
|
|
|
end_channel = triplet->chans.first_channel +
|
|
|
(4 * (triplet->chans.num_channels - 1));
|
|
|
|