diff options
author | Mohammed Shafi Shajakhan <mshajakhan@atheros.com> | 2010-11-23 20:42:27 +0530 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-11-30 13:49:13 -0500 |
commit | ea066d5a91f2610116dcd27054f749e4f07799d8 (patch) | |
tree | 451eb5ad15da0cf8c401dded725fe0f3838beb48 /drivers/net/wireless/ath/ath9k/beacon.c | |
parent | dd318575ff0aae91ac4cbcc5b60c184e59267212 (diff) | |
download | blackbird-op-linux-ea066d5a91f2610116dcd27054f749e4f07799d8.tar.gz blackbird-op-linux-ea066d5a91f2610116dcd27054f749e4f07799d8.zip |
ath9k: Add support for Adaptive Power Management
This feature is to mitigate the problem of certain 3
stream chips that exceed the PCIe power requirements.An EEPROM flag
controls which chips have APM enabled which is basically read from
miscellaneous configuration element of the EEPROM header.
This workaround will reduce power consumption by using 2 Tx chains for
Single and Double stream rates (5 GHz only).All self generated frames
(regardless of rate) are sent on 2 chains when this feature is
enabled(Chip Limitation).
Cc: Paul Shaw <paul.shaw@atheros.com>
Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com>
Tested-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/beacon.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/beacon.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c index 30724a4e8bb2..47bedd82e9a9 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c @@ -103,7 +103,8 @@ static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp, memset(series, 0, sizeof(struct ath9k_11n_rate_series) * 4); series[0].Tries = 1; series[0].Rate = rate; - series[0].ChSel = common->tx_chainmask; + series[0].ChSel = ath_txchainmask_reduction(sc, + common->tx_chainmask, series[0].Rate); series[0].RateFlags = (ctsrate) ? ATH9K_RATESERIES_RTS_CTS : 0; ath9k_hw_set11n_ratescenario(ah, ds, ds, 0, ctsrate, ctsduration, series, 4, 0); |