diff options
author | Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> | 2014-07-16 17:20:10 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-07-18 13:45:25 -0400 |
commit | 3ae351abf15f984c02feb9aab5394443e9efb00a (patch) | |
tree | bdf67c5ed904a4bc9c2b1bf26ec053a848fce65d | |
parent | d954cd770051cde27a9da8f2627acd5bc709ffbb (diff) |
ath9k: set up tx power into the MRR
Set up tx power for each MRR segment in the tx descriptor
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_mac.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mac.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/mac.h | 10 |
3 files changed, 18 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c index 741b38ddcb37..59af9f9712da 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c | |||
@@ -281,7 +281,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) | |||
281 | 281 | ||
282 | ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen) | 282 | ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen) |
283 | | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0) | 283 | | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0) |
284 | | SM(i->txpower, AR_XmitPower) | 284 | | SM(i->txpower, AR_XmitPower0) |
285 | | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0) | 285 | | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0) |
286 | | (i->flags & ATH9K_TXDESC_INTREQ ? AR_TxIntrReq : 0) | 286 | | (i->flags & ATH9K_TXDESC_INTREQ ? AR_TxIntrReq : 0) |
287 | | (i->keyix != ATH9K_TXKEYIX_INVALID ? AR_DestIdxValid : 0) | 287 | | (i->keyix != ATH9K_TXKEYIX_INVALID ? AR_DestIdxValid : 0) |
@@ -306,6 +306,10 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) | |||
306 | | set11nRateFlags(i->rates, 2) | 306 | | set11nRateFlags(i->rates, 2) |
307 | | set11nRateFlags(i->rates, 3) | 307 | | set11nRateFlags(i->rates, 3) |
308 | | SM(i->rtscts_rate, AR_RTSCTSRate); | 308 | | SM(i->rtscts_rate, AR_RTSCTSRate); |
309 | |||
310 | ACCESS_ONCE(ads->ds_ctl9) = SM(i->txpower, AR_XmitPower1); | ||
311 | ACCESS_ONCE(ads->ds_ctl10) = SM(i->txpower, AR_XmitPower2); | ||
312 | ACCESS_ONCE(ads->ds_ctl11) = SM(i->txpower, AR_XmitPower3); | ||
309 | } | 313 | } |
310 | 314 | ||
311 | static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds, | 315 | static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds, |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c index 729ffbf07343..71e38e85aa99 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c | |||
@@ -101,7 +101,7 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) | |||
101 | 101 | ||
102 | ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen) | 102 | ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen) |
103 | | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0) | 103 | | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0) |
104 | | SM(i->txpower, AR_XmitPower) | 104 | | SM(i->txpower, AR_XmitPower0) |
105 | | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0) | 105 | | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0) |
106 | | (i->keyix != ATH9K_TXKEYIX_INVALID ? AR_DestIdxValid : 0) | 106 | | (i->keyix != ATH9K_TXKEYIX_INVALID ? AR_DestIdxValid : 0) |
107 | | (i->flags & ATH9K_TXDESC_LOWRXCHAIN ? AR_LowRxChain : 0) | 107 | | (i->flags & ATH9K_TXDESC_LOWRXCHAIN ? AR_LowRxChain : 0) |
@@ -151,6 +151,10 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) | |||
151 | | SM(i->rtscts_rate, AR_RTSCTSRate); | 151 | | SM(i->rtscts_rate, AR_RTSCTSRate); |
152 | 152 | ||
153 | ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding; | 153 | ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding; |
154 | |||
155 | ACCESS_ONCE(ads->ctl20) = SM(i->txpower, AR_XmitPower1); | ||
156 | ACCESS_ONCE(ads->ctl21) = SM(i->txpower, AR_XmitPower2); | ||
157 | ACCESS_ONCE(ads->ctl22) = SM(i->txpower, AR_XmitPower3); | ||
154 | } | 158 | } |
155 | 159 | ||
156 | static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) | 160 | static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) |
diff --git a/drivers/net/wireless/ath/ath9k/mac.h b/drivers/net/wireless/ath/ath9k/mac.h index da7686757535..6c56cafa5ca4 100644 --- a/drivers/net/wireless/ath/ath9k/mac.h +++ b/drivers/net/wireless/ath/ath9k/mac.h | |||
@@ -346,8 +346,14 @@ struct ar5416_desc { | |||
346 | #define AR_FrameLen 0x00000fff | 346 | #define AR_FrameLen 0x00000fff |
347 | #define AR_VirtMoreFrag 0x00001000 | 347 | #define AR_VirtMoreFrag 0x00001000 |
348 | #define AR_TxCtlRsvd00 0x0000e000 | 348 | #define AR_TxCtlRsvd00 0x0000e000 |
349 | #define AR_XmitPower 0x003f0000 | 349 | #define AR_XmitPower0 0x003f0000 |
350 | #define AR_XmitPower_S 16 | 350 | #define AR_XmitPower0_S 16 |
351 | #define AR_XmitPower1 0x3f000000 | ||
352 | #define AR_XmitPower1_S 24 | ||
353 | #define AR_XmitPower2 0x3f000000 | ||
354 | #define AR_XmitPower2_S 24 | ||
355 | #define AR_XmitPower3 0x3f000000 | ||
356 | #define AR_XmitPower3_S 24 | ||
351 | #define AR_RTSEnable 0x00400000 | 357 | #define AR_RTSEnable 0x00400000 |
352 | #define AR_VEOL 0x00800000 | 358 | #define AR_VEOL 0x00800000 |
353 | #define AR_ClrDestMask 0x01000000 | 359 | #define AR_ClrDestMask 0x01000000 |