Commit fc8fd340 authored by Larry Finger's avatar Larry Finger Committed by Jeff Garzik

[PATCH] Convert bcm43xx-softmac to use the ieee80211_is_valid_channel routine

The current version of bcm43xx-softmac uses local routines to check
if a channel is valid. As noted in the comments, these routines do
not take any regulatory information into account. This patch converts
the code to use the equivalent routine in ieee80211, which is being
converted to know about regulatory information.
Signed-Off-By: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 60d48f1e
...@@ -112,30 +112,6 @@ int bcm43xx_channel_to_freq(struct bcm43xx_private *bcm, ...@@ -112,30 +112,6 @@ int bcm43xx_channel_to_freq(struct bcm43xx_private *bcm,
return bcm43xx_channel_to_freq_bg(channel); return bcm43xx_channel_to_freq_bg(channel);
} }
/* Lightweight function to check if a channel number is valid.
* Note that this does _NOT_ check for geographical restrictions!
*/
static inline
int bcm43xx_is_valid_channel_a(u8 channel)
{
return (channel >= IEEE80211_52GHZ_MIN_CHANNEL
&& channel <= IEEE80211_52GHZ_MAX_CHANNEL);
}
static inline
int bcm43xx_is_valid_channel_bg(u8 channel)
{
return (channel >= IEEE80211_24GHZ_MIN_CHANNEL
&& channel <= IEEE80211_24GHZ_MAX_CHANNEL);
}
static inline
int bcm43xx_is_valid_channel(struct bcm43xx_private *bcm,
u8 channel)
{
if (bcm43xx_current_phy(bcm)->type == BCM43xx_PHYTYPE_A)
return bcm43xx_is_valid_channel_a(channel);
return bcm43xx_is_valid_channel_bg(channel);
}
void bcm43xx_tsf_read(struct bcm43xx_private *bcm, u64 *tsf); void bcm43xx_tsf_read(struct bcm43xx_private *bcm, u64 *tsf);
void bcm43xx_tsf_write(struct bcm43xx_private *bcm, u64 tsf); void bcm43xx_tsf_write(struct bcm43xx_private *bcm, u64 tsf);
......
...@@ -1594,11 +1594,11 @@ int bcm43xx_radio_selectchannel(struct bcm43xx_private *bcm, ...@@ -1594,11 +1594,11 @@ int bcm43xx_radio_selectchannel(struct bcm43xx_private *bcm,
u16 r8, tmp; u16 r8, tmp;
u16 freq; u16 freq;
if (!ieee80211_is_valid_channel(bcm->ieee, channel))
return -EINVAL;
if ((radio->manufact == 0x17F) && if ((radio->manufact == 0x17F) &&
(radio->version == 0x2060) && (radio->version == 0x2060) &&
(radio->revision == 1)) { (radio->revision == 1)) {
if (channel > 200)
return -EINVAL;
freq = channel2freq_a(channel); freq = channel2freq_a(channel);
r8 = bcm43xx_radio_read16(bcm, 0x0008); r8 = bcm43xx_radio_read16(bcm, 0x0008);
...@@ -1651,9 +1651,6 @@ int bcm43xx_radio_selectchannel(struct bcm43xx_private *bcm, ...@@ -1651,9 +1651,6 @@ int bcm43xx_radio_selectchannel(struct bcm43xx_private *bcm,
TODO(); //TODO: TSSI2dbm workaround TODO(); //TODO: TSSI2dbm workaround
bcm43xx_phy_xmitpower(bcm);//FIXME correct? bcm43xx_phy_xmitpower(bcm);//FIXME correct?
} else { } else {
if ((channel < 1) || (channel > 14))
return -EINVAL;
if (synthetic_pu_workaround) if (synthetic_pu_workaround)
bcm43xx_synth_pu_workaround(bcm, channel); bcm43xx_synth_pu_workaround(bcm, channel);
......
...@@ -119,7 +119,7 @@ static int bcm43xx_wx_set_channelfreq(struct net_device *net_dev, ...@@ -119,7 +119,7 @@ static int bcm43xx_wx_set_channelfreq(struct net_device *net_dev,
channel = bcm43xx_freq_to_channel(bcm, data->freq.m); channel = bcm43xx_freq_to_channel(bcm, data->freq.m);
freq = data->freq.m; freq = data->freq.m;
} }
if (!bcm43xx_is_valid_channel(bcm, channel)) if (!ieee80211_is_valid_channel(bcm->ieee, channel))
goto out_unlock; goto out_unlock;
if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED) { if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED) {
//ieee80211softmac_disassoc(softmac, $REASON); //ieee80211softmac_disassoc(softmac, $REASON);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment