aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00config.c
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2007-10-27 07:39:28 -0400
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:02:56 -0500
commite25c4bb913e54d729631ba7eb50daf1d9aacbef6 (patch)
tree6a233d3e3446e3fb924b4bf9d3bff1fe2049e22f /drivers/net/wireless/rt2x00/rt2x00config.c
parent2d68de3efa62655d551092f5c787505735d561ad (diff)
rt2x00: Disable RX when switching antenna
Antenna switching will be ignored when RX is enabled during the switch. Make sure we disable the RX during the switch and don't forget to reenable it later. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00config.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00config.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index b4fad744503e..9f0733bc4fae 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -103,6 +103,13 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
103 libconf.ant.tx = tx; 103 libconf.ant.tx = tx;
104 104
105 /* 105 /*
106 * Antenna setup changes require the RX to be disabled,
107 * else the changes will be ignored by the device.
108 */
109 if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
110 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
111
112 /*
106 * Write new antenna setup to device and reset the link tuner. 113 * Write new antenna setup to device and reset the link tuner.
107 * The latter is required since we need to recalibrate the 114 * The latter is required since we need to recalibrate the
108 * noise-sensitivity ratio for the new setup. 115 * noise-sensitivity ratio for the new setup.
@@ -112,6 +119,9 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
112 119
113 rt2x00dev->link.ant.active.rx = libconf.ant.rx; 120 rt2x00dev->link.ant.active.rx = libconf.ant.rx;
114 rt2x00dev->link.ant.active.tx = libconf.ant.tx; 121 rt2x00dev->link.ant.active.tx = libconf.ant.tx;
122
123 if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
124 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
115} 125}
116 126
117void rt2x00lib_config(struct rt2x00_dev *rt2x00dev, 127void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,