aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00config.c
diff options
context:
space:
mode:
authorLars Ericsson <Lars_Ericsson@telia.com>2009-07-18 14:21:52 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-27 15:24:08 -0400
commiteb87eaac52e916e28bcf3bd5974f3b581f6c0ae9 (patch)
tree3da38b5c765f3fda6833f9611da0648ca854685e /drivers/net/wireless/rt2x00/rt2x00config.c
parenta272a720660059c30fa038113b77fa2a096437d9 (diff)
rt2x00: Don't alter rt2x00dev->default_ant
rt2x00dev->default_ant should be initialized once by the driver, and should not be changed afterwards. Because rt2x00lib_config_antenna() was using a reference to the struct antenna_setup it actually had the oppurtunity to change the default antenna setting and it actually did that during the validation. Instead of passing a pointer to antenna_setup the entire structure should be copied. Signed-off-by: Lars Ericsson <Lars_Ericsson@telia.com> 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/rt2x00config.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00config.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index c6e0bcf78e9e..3845316ccd39 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -124,7 +124,7 @@ enum antenna rt2x00lib_config_antenna_check(enum antenna current_ant,
124} 124}
125 125
126void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev, 126void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
127 struct antenna_setup *ant) 127 struct antenna_setup ant)
128{ 128{
129 struct antenna_setup *def = &rt2x00dev->default_ant; 129 struct antenna_setup *def = &rt2x00dev->default_ant;
130 struct antenna_setup *active = &rt2x00dev->link.ant.active; 130 struct antenna_setup *active = &rt2x00dev->link.ant.active;
@@ -138,10 +138,10 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
138 * might have caused that we restore back to the already 138 * might have caused that we restore back to the already
139 * active setting. If that has happened we can quit. 139 * active setting. If that has happened we can quit.
140 */ 140 */
141 ant->rx = rt2x00lib_config_antenna_check(ant->rx, def->rx); 141 ant.rx = rt2x00lib_config_antenna_check(ant.rx, def->rx);
142 ant->tx = rt2x00lib_config_antenna_check(ant->tx, def->tx); 142 ant.tx = rt2x00lib_config_antenna_check(ant.tx, def->tx);
143 143
144 if (ant->rx == active->rx && ant->tx == active->tx) 144 if (ant.rx == active->rx && ant.tx == active->tx)
145 return; 145 return;
146 146
147 /* 147 /*
@@ -156,11 +156,11 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
156 * The latter is required since we need to recalibrate the 156 * The latter is required since we need to recalibrate the
157 * noise-sensitivity ratio for the new setup. 157 * noise-sensitivity ratio for the new setup.
158 */ 158 */
159 rt2x00dev->ops->lib->config_ant(rt2x00dev, ant); 159 rt2x00dev->ops->lib->config_ant(rt2x00dev, &ant);
160 160
161 rt2x00link_reset_tuner(rt2x00dev, true); 161 rt2x00link_reset_tuner(rt2x00dev, true);
162 162
163 memcpy(active, ant, sizeof(*ant)); 163 memcpy(active, &ant, sizeof(ant));
164 164
165 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) 165 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
166 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK); 166 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK);