aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00dev.c
diff options
context:
space:
mode:
authorMattias Nissler <mattias.nissler@gmx.de>2008-08-29 15:05:21 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-08-29 16:24:11 -0400
commit2575c11d6ee7266f0f035e55c5056b36597cd336 (patch)
treeecbe0d61936b31c2c8d072194576d2299f736714 /drivers/net/wireless/rt2x00/rt2x00dev.c
parent3ee54a07d34fd9b5c34bb1488113fb32be58e38f (diff)
rt2x00: Only configure hardware when radio is enabled
Some hardware configuration registers such as antenna and channel configuration can only be written when the radio is enabled. Previously, we didn't consider this, so some configuration items could be set inconsistently after reenabling the radio. This patch changes the config() handler to only reprogram the hardware when the radio is enabled. Configuration changes that are made while the radio is off are postponed until the radio is switched back on. We also leave the radio turned off during initialization and only enable it when requested by mac80211. This allows us to get rid of the DIRTY_CONFIG flag, because the device is now guaranteed to be completely initialized when brought up by mac80211. Signed-off-by: Mattias Nissler <mattias.nissler@gmx.de> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00dev.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 330ab77902f7..5278ae2e374c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1014,21 +1014,11 @@ int rt2x00lib_start(struct rt2x00_dev *rt2x00dev)
1014 if (retval) 1014 if (retval)
1015 return retval; 1015 return retval;
1016 1016
1017 /*
1018 * Enable radio.
1019 */
1020 retval = rt2x00lib_enable_radio(rt2x00dev);
1021 if (retval) {
1022 rt2x00lib_uninitialize(rt2x00dev);
1023 return retval;
1024 }
1025
1026 rt2x00dev->intf_ap_count = 0; 1017 rt2x00dev->intf_ap_count = 0;
1027 rt2x00dev->intf_sta_count = 0; 1018 rt2x00dev->intf_sta_count = 0;
1028 rt2x00dev->intf_associated = 0; 1019 rt2x00dev->intf_associated = 0;
1029 1020
1030 set_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags); 1021 set_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags);
1031 set_bit(DEVICE_STATE_DIRTY_CONFIG, &rt2x00dev->flags);
1032 1022
1033 return 0; 1023 return 0;
1034} 1024}