|
@@ -946,6 +946,7 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
|
|
|
u8 channel;
|
|
|
struct bcm43xx_phyinfo *phy;
|
|
|
const char *iso_country;
|
|
|
+ u8 max_bg_channel;
|
|
|
|
|
|
geo = kzalloc(sizeof(*geo), GFP_KERNEL);
|
|
|
if (!geo)
|
|
@@ -967,6 +968,23 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
|
|
|
}
|
|
|
iso_country = bcm43xx_locale_iso(bcm->sprom.locale);
|
|
|
|
|
|
+/* set the maximum channel based on locale set in sprom or witle locale option */
|
|
|
+ switch (bcm->sprom.locale) {
|
|
|
+ case BCM43xx_LOCALE_THAILAND:
|
|
|
+ case BCM43xx_LOCALE_ISRAEL:
|
|
|
+ case BCM43xx_LOCALE_JORDAN:
|
|
|
+ case BCM43xx_LOCALE_USA_CANADA_ANZ:
|
|
|
+ case BCM43xx_LOCALE_USA_LOW:
|
|
|
+ max_bg_channel = 11;
|
|
|
+ break;
|
|
|
+ case BCM43xx_LOCALE_JAPAN:
|
|
|
+ case BCM43xx_LOCALE_JAPAN_HIGH:
|
|
|
+ max_bg_channel = 14;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ max_bg_channel = 13;
|
|
|
+ }
|
|
|
+
|
|
|
if (have_a) {
|
|
|
for (i = 0, channel = IEEE80211_52GHZ_MIN_CHANNEL;
|
|
|
channel <= IEEE80211_52GHZ_MAX_CHANNEL; channel++) {
|
|
@@ -978,7 +996,7 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
|
|
|
}
|
|
|
if (have_bg) {
|
|
|
for (i = 0, channel = IEEE80211_24GHZ_MIN_CHANNEL;
|
|
|
- channel <= IEEE80211_24GHZ_MAX_CHANNEL; channel++) {
|
|
|
+ channel <= max_bg_channel; channel++) {
|
|
|
chan = &geo->bg[i++];
|
|
|
chan->freq = bcm43xx_channel_to_freq_bg(channel);
|
|
|
chan->channel = channel;
|