Commit aa10350d authored by Gabor Juhos's avatar Gabor Juhos Committed by John W. Linville

rt2x00: rt2800lib: use {tx,rx}_chain_num to avoid superfluous EEPROM access

The {rx,tx}_chain_num fields of rt2x00dev->default_ant
contains the number of RX and TX chains already when the
rt2800_probe_hw_mode() function runs. Use those values
instead of parsing the EEPROM configuration values again.
Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ad40d3da
...@@ -7450,7 +7450,6 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) ...@@ -7450,7 +7450,6 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
char *default_power2; char *default_power2;
char *default_power3; char *default_power3;
unsigned int i; unsigned int i;
u16 eeprom;
u32 reg; u32 reg;
/* /*
...@@ -7499,8 +7498,6 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) ...@@ -7499,8 +7498,6 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
rt2x00dev->hw->max_report_rates = 7; rt2x00dev->hw->max_report_rates = 7;
rt2x00dev->hw->max_rate_tries = 1; rt2x00dev->hw->max_rate_tries = 1;
rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
/* /*
* Initialize hw_mode information. * Initialize hw_mode information.
*/ */
...@@ -7566,22 +7563,21 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) ...@@ -7566,22 +7563,21 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_20 |
IEEE80211_HT_CAP_SGI_40; IEEE80211_HT_CAP_SGI_40;
if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_TXPATH) >= 2) if (rt2x00dev->default_ant.tx_chain_num >= 2)
spec->ht.cap |= IEEE80211_HT_CAP_TX_STBC; spec->ht.cap |= IEEE80211_HT_CAP_TX_STBC;
spec->ht.cap |= spec->ht.cap |= rt2x00dev->default_ant.rx_chain_num <<
rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH) << IEEE80211_HT_CAP_RX_STBC_SHIFT;
IEEE80211_HT_CAP_RX_STBC_SHIFT;
spec->ht.ampdu_factor = 3; spec->ht.ampdu_factor = 3;
spec->ht.ampdu_density = 4; spec->ht.ampdu_density = 4;
spec->ht.mcs.tx_params = spec->ht.mcs.tx_params =
IEEE80211_HT_MCS_TX_DEFINED | IEEE80211_HT_MCS_TX_DEFINED |
IEEE80211_HT_MCS_TX_RX_DIFF | IEEE80211_HT_MCS_TX_RX_DIFF |
((rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_TXPATH) - 1) << ((rt2x00dev->default_ant.tx_chain_num - 1) <<
IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT); IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT);
switch (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH)) { switch (rt2x00dev->default_ant.rx_chain_num) {
case 3: case 3:
spec->ht.mcs.rx_mask[2] = 0xff; spec->ht.mcs.rx_mask[2] = 0xff;
case 2: case 2:
......
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