Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 26588
b: refs/heads/master
c: 869aaab
h: refs/heads/master
v: v3
  • Loading branch information
Michael Buesch authored and John W. Linville committed May 5, 2006
1 parent b6c4a53 commit 2ff254d
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 20 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: f9f7b9602ecb66f55718d6d1afa3e2b1e721b22d
refs/heads/master: 869aaab1812c4212e65fb181e94b824cf49f9509
43 changes: 26 additions & 17 deletions trunk/drivers/net/wireless/bcm43xx/bcm43xx_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -939,17 +939,20 @@ static int bcm43xx_sprom_extract(struct bcm43xx_private *bcm)
return 0;
}

static void bcm43xx_geo_init(struct bcm43xx_private *bcm)
static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
{
struct ieee80211_geo geo;
struct ieee80211_geo *geo;
struct ieee80211_channel *chan;
int have_a = 0, have_bg = 0;
int i;
u8 channel;
struct bcm43xx_phyinfo *phy;
const char *iso_country;

memset(&geo, 0, sizeof(geo));
geo = kzalloc(sizeof(*geo), GFP_KERNEL);
if (!geo)
return -ENOMEM;

for (i = 0; i < bcm->nr_80211_available; i++) {
phy = &(bcm->core_80211_ext[i].phy);
switch (phy->type) {
Expand All @@ -967,31 +970,36 @@ static void bcm43xx_geo_init(struct bcm43xx_private *bcm)
iso_country = bcm43xx_locale_iso(bcm->sprom.locale);

if (have_a) {
for (i = 0, channel = 0; channel < 201; channel++) {
chan = &geo.a[i++];
for (i = 0, channel = IEEE80211_52GHZ_MIN_CHANNEL;
channel <= IEEE80211_52GHZ_MAX_CHANNEL; channel++) {
chan = &geo->a[i++];
chan->freq = bcm43xx_channel_to_freq_a(channel);
chan->channel = channel;
}
geo.a_channels = i;
geo->a_channels = i;
}
if (have_bg) {
for (i = 0, channel = 1; channel < 15; channel++) {
chan = &geo.bg[i++];
for (i = 0, channel = IEEE80211_24GHZ_MIN_CHANNEL;
channel <= IEEE80211_24GHZ_MAX_CHANNEL; channel++) {
chan = &geo->bg[i++];
chan->freq = bcm43xx_channel_to_freq_bg(channel);
chan->channel = channel;
}
geo.bg_channels = i;
geo->bg_channels = i;
}
memcpy(geo.name, iso_country, 2);
memcpy(geo->name, iso_country, 2);
if (0 /*TODO: Outdoor use only */)
geo.name[2] = 'O';
geo->name[2] = 'O';
else if (0 /*TODO: Indoor use only */)
geo.name[2] = 'I';
geo->name[2] = 'I';
else
geo.name[2] = ' ';
geo.name[3] = '\0';
geo->name[2] = ' ';
geo->name[3] = '\0';

ieee80211_set_geo(bcm->ieee, geo);
kfree(geo);

ieee80211_set_geo(bcm->ieee, &geo);
return 0;
}

/* DummyTransmission function, as documented on
Expand Down Expand Up @@ -3479,6 +3487,9 @@ static int bcm43xx_attach_board(struct bcm43xx_private *bcm)
goto err_80211_unwind;
bcm43xx_wireless_core_disable(bcm);
}
err = bcm43xx_geo_init(bcm);
if (err)
goto err_80211_unwind;
bcm43xx_pctl_set_crystal(bcm, 0);

/* Set the MAC address in the networking subsystem */
Expand All @@ -3487,8 +3498,6 @@ static int bcm43xx_attach_board(struct bcm43xx_private *bcm)
else
memcpy(bcm->net_dev->dev_addr, bcm->sprom.il0macaddr, 6);

bcm43xx_geo_init(bcm);

snprintf(bcm->nick, IW_ESSID_MAX_SIZE,
"Broadcom %04X", bcm->chip_id);

Expand Down
6 changes: 4 additions & 2 deletions trunk/drivers/net/wireless/bcm43xx/bcm43xx_main.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,12 +118,14 @@ int bcm43xx_channel_to_freq(struct bcm43xx_private *bcm,
static inline
int bcm43xx_is_valid_channel_a(u8 channel)
{
return (channel <= 200);
return (channel >= IEEE80211_52GHZ_MIN_CHANNEL
&& channel <= IEEE80211_52GHZ_MAX_CHANNEL);
}
static inline
int bcm43xx_is_valid_channel_bg(u8 channel)
{
return (channel >= 1 && channel <= 14);
return (channel >= IEEE80211_24GHZ_MIN_CHANNEL
&& channel <= IEEE80211_24GHZ_MAX_CHANNEL);
}
static inline
int bcm43xx_is_valid_channel(struct bcm43xx_private *bcm,
Expand Down

0 comments on commit 2ff254d

Please sign in to comment.