diff options
author | Joshua Oreman <oremanj@rwcr.net> | 2009-08-01 09:52:59 -0700 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2009-08-09 00:11:33 +0100 |
commit | 1e810bebe95eafc3c8427d7c5ddf753debb1316e (patch) | |
tree | d1e00b123b5402cf9d6f1532066a91af4a9d2d17 | |
parent | f128a6db21339964c52fb7bcfc6c8a3ffa96387b (diff) | |
download | ipxe-1e810bebe95eafc3c8427d7c5ddf753debb1316e.tar.gz |
[802.11] Set channels early on to avoid tuning to an undefined channel
Some cards (such as ath5k) always need to tune to a particular channel
when they are reset; the reset may happen upon open(), which is before
the channels array would be set up (in prepare_probe()). Avoid tuning
the card to an inconsistent state by copying the hardware
supported-channels array to the 802.11 device's allowable-channels
array even before channels are "properly" set up.
Signed-off-by: Michael Brown <mcb30@etherboot.org>
-rw-r--r-- | src/net/80211/net80211.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/net/80211/net80211.c b/src/net/80211/net80211.c index 32547b5f3..1b2ffd385 100644 --- a/src/net/80211/net80211.c +++ b/src/net/80211/net80211.c @@ -794,6 +794,11 @@ int net80211_register ( struct net80211_device *dev, memcpy ( dev->hw, hw, sizeof ( *hw ) ); memcpy ( dev->netdev->ll_addr, hw->hwaddr, ETH_ALEN ); + /* Set some sensible channel defaults for driver's open() function */ + memcpy ( dev->channels, dev->hw->channels, + NET80211_MAX_CHANNELS * sizeof ( dev->channels[0] ) ); + dev->channel = 0; + list_add_tail ( &dev->list, &net80211_devices ); return register_netdev ( dev->netdev ); } |