aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/orinoco.c
diff options
context:
space:
mode:
authorDavid Gibson <hermes@gibson.dropbear.id.au>2005-05-12 20:03:36 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-05-12 20:03:36 -0400
commitd51d8b1f249b23a717ae489d6ccf2c25030988e6 (patch)
tree2fe062e1eb563e0223193c851ddacd9bf6791203 /drivers/net/wireless/orinoco.c
parent1fc5eb642805fa724b67fd17f008b582b0400919 (diff)
[PATCH] Orinoco: don't set channel in managed mode
Don't attempt to manually set the channel in infrastructure mode, the firmware doesn't like that much. Also don't attempt to override the firmware's default channel number for IBSS mode (I believe default channel can vary by regulatory domain). Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless/orinoco.c')
-rw-r--r--drivers/net/wireless/orinoco.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 6e4d0e7d43a9..b79aebf83e47 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -1615,17 +1615,15 @@ static int __orinoco_program_rids(struct net_device *dev)
1615 return err; 1615 return err;
1616 } 1616 }
1617 /* Set the channel/frequency */ 1617 /* Set the channel/frequency */
1618 if (priv->channel == 0) { 1618 if (priv->channel != 0 && priv->iw_mode != IW_MODE_INFRA) {
1619 printk(KERN_DEBUG "%s: Channel is 0 in __orinoco_program_rids()\n", dev->name); 1619 err = hermes_write_wordrec(hw, USER_BAP,
1620 if (priv->createibss) 1620 HERMES_RID_CNFOWNCHANNEL,
1621 priv->channel = 10; 1621 priv->channel);
1622 } 1622 if (err) {
1623 err = hermes_write_wordrec(hw, USER_BAP, HERMES_RID_CNFOWNCHANNEL, 1623 printk(KERN_ERR "%s: Error %d setting channel %d\n",
1624 priv->channel); 1624 dev->name, err, priv->channel);
1625 if (err) { 1625 return err;
1626 printk(KERN_ERR "%s: Error %d setting channel\n", 1626 }
1627 dev->name, err);
1628 return err;
1629 } 1627 }
1630 1628
1631 if (priv->has_ibss) { 1629 if (priv->has_ibss) {
@@ -2405,7 +2403,7 @@ static int orinoco_init(struct net_device *dev)
2405 /* By default use IEEE/IBSS ad-hoc mode if we have it */ 2403 /* By default use IEEE/IBSS ad-hoc mode if we have it */
2406 priv->prefer_port3 = priv->has_port3 && (! priv->has_ibss); 2404 priv->prefer_port3 = priv->has_port3 && (! priv->has_ibss);
2407 set_port_type(priv); 2405 set_port_type(priv);
2408 priv->channel = 10; /* default channel, more-or-less arbitrary */ 2406 priv->channel = 0; /* use firmware default */
2409 2407
2410 priv->promiscuous = 0; 2408 priv->promiscuous = 0;
2411 priv->wep_on = 0; 2409 priv->wep_on = 0;