From 6e4457cef0eb77f7fef376809ad8494806da1207 Mon Sep 17 00:00:00 2001 From: Sujith Date: Thu, 12 Feb 2009 10:06:36 +0530 Subject: [PATCH] --- yaml --- r: 134834 b: refs/heads/master c: e421c7b35c17752dbe6d26d910eb2d6814073355 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath9k/eeprom.c | 15 +++++++++++++++ trunk/drivers/net/wireless/ath9k/eeprom.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 421f4f75faa9..fcd0e8b9f162 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 469002983fc90c2ff0959e2b03335c0fe2e4d5a9 +refs/heads/master: e421c7b35c17752dbe6d26d910eb2d6814073355 diff --git a/trunk/drivers/net/wireless/ath9k/eeprom.c b/trunk/drivers/net/wireless/ath9k/eeprom.c index b55e9920a5d4..34e9d818fadd 100644 --- a/trunk/drivers/net/wireless/ath9k/eeprom.c +++ b/trunk/drivers/net/wireless/ath9k/eeprom.c @@ -2615,6 +2615,21 @@ static int ath9k_hw_def_set_txpower(struct ath_hw *ah, else ah->regulatory.max_power_level = ratesArray[i]; + switch(ar5416_get_ntxchains(ah->txchainmask)) { + case 1: + break; + case 2: + ah->regulatory.max_power_level += INCREASE_MAXPOW_BY_TWO_CHAIN; + break; + case 3: + ah->regulatory.max_power_level += INCREASE_MAXPOW_BY_THREE_CHAIN; + break; + default: + DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, + "Invalid chainmask configuration\n"); + break; + } + return 0; } diff --git a/trunk/drivers/net/wireless/ath9k/eeprom.h b/trunk/drivers/net/wireless/ath9k/eeprom.h index 99863b570441..b7c656c84ba3 100644 --- a/trunk/drivers/net/wireless/ath9k/eeprom.h +++ b/trunk/drivers/net/wireless/ath9k/eeprom.h @@ -75,6 +75,9 @@ #define SUB_NUM_CTL_MODES_AT_5G_40 2 #define SUB_NUM_CTL_MODES_AT_2G_40 3 +#define INCREASE_MAXPOW_BY_TWO_CHAIN 6 /* 10*log10(2)*2 */ +#define INCREASE_MAXPOW_BY_THREE_CHAIN 10 /* 10*log10(3)*2 */ + #define AR_EEPROM_MAC(i) (0x1d+(i)) #define ATH9K_POW_SM(_r, _s) (((_r) & 0x3f) << (_s)) #define FREQ2FBIN(x, y) ((y) ? ((x) - 2300) : (((x) - 4800) / 5))