aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Achirica <achirica@gmail.com>2006-01-17 08:01:01 -0500
committerJeff Garzik <jgarzik@pobox.com>2006-01-17 08:01:01 -0500
commit2610c733023850be2db9fef9c81f851a64bb9f67 (patch)
tree62db077203a86e8b67cde10941f7034caed02c4e
parent38bd3b2629702894ca3528358ffc447bbacc9442 (diff)
airo: Off-by-one channel fix
-rw-r--r--drivers/net/wireless/airo.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 65057348838..a4c7ae94614 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -5668,13 +5668,13 @@ static int airo_set_freq(struct net_device *dev,
int channel = fwrq->m;
/* We should do a better check than that,
* based on the card capability !!! */
- if((channel < 1) || (channel > 16)) {
+ if((channel < 1) || (channel > 14)) {
printk(KERN_DEBUG "%s: New channel value of %d is invalid!\n", dev->name, fwrq->m);
rc = -EINVAL;
} else {
readConfigRid(local, 1);
/* Yes ! We can set it !!! */
- local->config.channelSet = (u16)(channel - 1);
+ local->config.channelSet = (u16) channel;
set_bit (FLAG_COMMIT, &local->flags);
}
}
@@ -5692,6 +5692,7 @@ static int airo_get_freq(struct net_device *dev,
{
struct airo_info *local = dev->priv;
StatusRid status_rid; /* Card status info */
+ int ch;
readConfigRid(local, 1);
if ((local->config.opmode & 0xFF) == MODE_STA_ESS)
@@ -5699,16 +5700,14 @@ static int airo_get_freq(struct net_device *dev,
else
readStatusRid(local, &status_rid, 1);
-#ifdef WEXT_USECHANNELS
- fwrq->m = ((int)status_rid.channel) + 1;
- fwrq->e = 0;
-#else
- {
- int f = (int)status_rid.channel;
- fwrq->m = frequency_list[f] * 100000;
+ ch = (int)status_rid.channel;
+ if((ch > 0) && (ch < 15)) {
+ fwrq->m = frequency_list[ch - 1] * 100000;
fwrq->e = 1;
+ } else {
+ fwrq->m = ch;
+ fwrq->e = 0;
}
-#endif
return 0;
}