Commit 16b1951f authored by Mattias Nissler's avatar Mattias Nissler Committed by David S. Miller

[PATCH] rt2x00: Fix antenna selection.

In the config() handler, make sure that we do configure an antenna if the
current active antenna is uninitialized. Furthermore, don't overwrite the
active antenna with bogus values if we didn't touch the antenna setup.
Signed-off-by: default avatarMattias Nissler <mattias.nissler@gmx.de>
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ddc827f9
...@@ -166,6 +166,8 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev, ...@@ -166,6 +166,8 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
else if (conf->antenna_sel_rx && else if (conf->antenna_sel_rx &&
conf->antenna_sel_rx != active_ant->rx) conf->antenna_sel_rx != active_ant->rx)
flags |= CONFIG_UPDATE_ANTENNA; flags |= CONFIG_UPDATE_ANTENNA;
else if (active_ant->rx == ANTENNA_SW_DIVERSITY)
flags |= CONFIG_UPDATE_ANTENNA;
if (!conf->antenna_sel_tx && if (!conf->antenna_sel_tx &&
default_ant->tx != ANTENNA_SW_DIVERSITY && default_ant->tx != ANTENNA_SW_DIVERSITY &&
...@@ -174,6 +176,8 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev, ...@@ -174,6 +176,8 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
else if (conf->antenna_sel_tx && else if (conf->antenna_sel_tx &&
conf->antenna_sel_tx != active_ant->tx) conf->antenna_sel_tx != active_ant->tx)
flags |= CONFIG_UPDATE_ANTENNA; flags |= CONFIG_UPDATE_ANTENNA;
else if (active_ant->tx == ANTENNA_SW_DIVERSITY)
flags |= CONFIG_UPDATE_ANTENNA;
/* /*
* The following configuration options are never * The following configuration options are never
...@@ -262,11 +266,17 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev, ...@@ -262,11 +266,17 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
if (flags & (CONFIG_UPDATE_CHANNEL | CONFIG_UPDATE_ANTENNA)) if (flags & (CONFIG_UPDATE_CHANNEL | CONFIG_UPDATE_ANTENNA))
rt2x00lib_reset_link_tuner(rt2x00dev); rt2x00lib_reset_link_tuner(rt2x00dev);
if (flags & CONFIG_UPDATE_PHYMODE) {
rt2x00dev->curr_hwmode = libconf.phymode; rt2x00dev->curr_hwmode = libconf.phymode;
rt2x00dev->rx_status.phymode = conf->phymode; rt2x00dev->rx_status.phymode = conf->phymode;
}
rt2x00dev->rx_status.freq = conf->freq; rt2x00dev->rx_status.freq = conf->freq;
rt2x00dev->rx_status.channel = conf->channel; rt2x00dev->rx_status.channel = conf->channel;
rt2x00dev->tx_power = conf->power_level; rt2x00dev->tx_power = conf->power_level;
if (flags & CONFIG_UPDATE_ANTENNA) {
rt2x00dev->link.ant.active.rx = libconf.ant.rx; rt2x00dev->link.ant.active.rx = libconf.ant.rx;
rt2x00dev->link.ant.active.tx = libconf.ant.tx; rt2x00dev->link.ant.active.tx = libconf.ant.tx;
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment