mirror of https://github.com/ipxe/ipxe.git
[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>pull/1/head
parent
f128a6db21
commit
1e810bebe9
|
@ -794,6 +794,11 @@ int net80211_register ( struct net80211_device *dev,
|
||||||
memcpy ( dev->hw, hw, sizeof ( *hw ) );
|
memcpy ( dev->hw, hw, sizeof ( *hw ) );
|
||||||
memcpy ( dev->netdev->ll_addr, hw->hwaddr, ETH_ALEN );
|
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 );
|
list_add_tail ( &dev->list, &net80211_devices );
|
||||||
return register_netdev ( dev->netdev );
|
return register_netdev ( dev->netdev );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue