ath9k_hw: replace REG_READ+REG_WRITE with REG_RMW
It's easier to read and it slightly decreases code size Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
845e03c93d
commit
ca7a4deb4a
@@ -465,10 +465,9 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
|
||||
REG_WRITE(ah, AR_QCBRCFG(q),
|
||||
SM(qi->tqi_cbrPeriod, AR_Q_CBRCFG_INTERVAL) |
|
||||
SM(qi->tqi_cbrOverflowLimit, AR_Q_CBRCFG_OVF_THRESH));
|
||||
REG_WRITE(ah, AR_QMISC(q),
|
||||
REG_READ(ah, AR_QMISC(q)) | AR_Q_MISC_FSP_CBR |
|
||||
(qi->tqi_cbrOverflowLimit ?
|
||||
AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN : 0));
|
||||
REG_SET_BIT(ah, AR_QMISC(q), AR_Q_MISC_FSP_CBR |
|
||||
(qi->tqi_cbrOverflowLimit ?
|
||||
AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN : 0));
|
||||
}
|
||||
if (qi->tqi_readyTime && (qi->tqi_type != ATH9K_TX_QUEUE_CAB)) {
|
||||
REG_WRITE(ah, AR_QRDYTIMECFG(q),
|
||||
@@ -481,40 +480,31 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
|
||||
(qi->tqi_burstTime ? AR_D_CHNTIME_EN : 0));
|
||||
|
||||
if (qi->tqi_burstTime
|
||||
&& (qi->tqi_qflags & TXQ_FLAG_RDYTIME_EXP_POLICY_ENABLE)) {
|
||||
REG_WRITE(ah, AR_QMISC(q),
|
||||
REG_READ(ah, AR_QMISC(q)) |
|
||||
AR_Q_MISC_RDYTIME_EXP_POLICY);
|
||||
&& (qi->tqi_qflags & TXQ_FLAG_RDYTIME_EXP_POLICY_ENABLE))
|
||||
REG_SET_BIT(ah, AR_QMISC(q), AR_Q_MISC_RDYTIME_EXP_POLICY);
|
||||
|
||||
}
|
||||
|
||||
if (qi->tqi_qflags & TXQ_FLAG_BACKOFF_DISABLE) {
|
||||
REG_WRITE(ah, AR_DMISC(q),
|
||||
REG_READ(ah, AR_DMISC(q)) |
|
||||
AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
}
|
||||
if (qi->tqi_qflags & TXQ_FLAG_BACKOFF_DISABLE)
|
||||
REG_SET_BIT(ah, AR_DMISC(q), AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
|
||||
REGWRITE_BUFFER_FLUSH(ah);
|
||||
|
||||
if (qi->tqi_qflags & TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE) {
|
||||
REG_WRITE(ah, AR_DMISC(q),
|
||||
REG_READ(ah, AR_DMISC(q)) |
|
||||
AR_D_MISC_FRAG_BKOFF_EN);
|
||||
}
|
||||
if (qi->tqi_qflags & TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE)
|
||||
REG_SET_BIT(ah, AR_DMISC(q), AR_D_MISC_FRAG_BKOFF_EN);
|
||||
|
||||
switch (qi->tqi_type) {
|
||||
case ATH9K_TX_QUEUE_BEACON:
|
||||
ENABLE_REGWRITE_BUFFER(ah);
|
||||
|
||||
REG_WRITE(ah, AR_QMISC(q), REG_READ(ah, AR_QMISC(q))
|
||||
| AR_Q_MISC_FSP_DBA_GATED
|
||||
| AR_Q_MISC_BEACON_USE
|
||||
| AR_Q_MISC_CBR_INCR_DIS1);
|
||||
REG_SET_BIT(ah, AR_QMISC(q),
|
||||
AR_Q_MISC_FSP_DBA_GATED
|
||||
| AR_Q_MISC_BEACON_USE
|
||||
| AR_Q_MISC_CBR_INCR_DIS1);
|
||||
|
||||
REG_WRITE(ah, AR_DMISC(q), REG_READ(ah, AR_DMISC(q))
|
||||
| (AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL <<
|
||||
REG_SET_BIT(ah, AR_DMISC(q),
|
||||
(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL <<
|
||||
AR_D_MISC_ARB_LOCKOUT_CNTRL_S)
|
||||
| AR_D_MISC_BEACON_USE
|
||||
| AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
| AR_D_MISC_BEACON_USE
|
||||
| AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
|
||||
REGWRITE_BUFFER_FLUSH(ah);
|
||||
|
||||
@@ -533,41 +523,38 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
|
||||
case ATH9K_TX_QUEUE_CAB:
|
||||
ENABLE_REGWRITE_BUFFER(ah);
|
||||
|
||||
REG_WRITE(ah, AR_QMISC(q), REG_READ(ah, AR_QMISC(q))
|
||||
| AR_Q_MISC_FSP_DBA_GATED
|
||||
| AR_Q_MISC_CBR_INCR_DIS1
|
||||
| AR_Q_MISC_CBR_INCR_DIS0);
|
||||
REG_SET_BIT(ah, AR_QMISC(q),
|
||||
AR_Q_MISC_FSP_DBA_GATED
|
||||
| AR_Q_MISC_CBR_INCR_DIS1
|
||||
| AR_Q_MISC_CBR_INCR_DIS0);
|
||||
value = (qi->tqi_readyTime -
|
||||
(ah->config.sw_beacon_response_time -
|
||||
ah->config.dma_beacon_response_time) -
|
||||
ah->config.additional_swba_backoff) * 1024;
|
||||
REG_WRITE(ah, AR_QRDYTIMECFG(q),
|
||||
value | AR_Q_RDYTIMECFG_EN);
|
||||
REG_WRITE(ah, AR_DMISC(q), REG_READ(ah, AR_DMISC(q))
|
||||
| (AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL <<
|
||||
REG_SET_BIT(ah, AR_DMISC(q),
|
||||
(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL <<
|
||||
AR_D_MISC_ARB_LOCKOUT_CNTRL_S));
|
||||
|
||||
REGWRITE_BUFFER_FLUSH(ah);
|
||||
|
||||
break;
|
||||
case ATH9K_TX_QUEUE_PSPOLL:
|
||||
REG_WRITE(ah, AR_QMISC(q),
|
||||
REG_READ(ah, AR_QMISC(q)) | AR_Q_MISC_CBR_INCR_DIS1);
|
||||
REG_SET_BIT(ah, AR_QMISC(q), AR_Q_MISC_CBR_INCR_DIS1);
|
||||
break;
|
||||
case ATH9K_TX_QUEUE_UAPSD:
|
||||
REG_WRITE(ah, AR_DMISC(q), REG_READ(ah, AR_DMISC(q)) |
|
||||
AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
REG_SET_BIT(ah, AR_DMISC(q), AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (qi->tqi_intFlags & ATH9K_TXQ_USE_LOCKOUT_BKOFF_DIS) {
|
||||
REG_WRITE(ah, AR_DMISC(q),
|
||||
REG_READ(ah, AR_DMISC(q)) |
|
||||
SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
|
||||
AR_D_MISC_ARB_LOCKOUT_CNTRL) |
|
||||
AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
REG_SET_BIT(ah, AR_DMISC(q),
|
||||
SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
|
||||
AR_D_MISC_ARB_LOCKOUT_CNTRL) |
|
||||
AR_D_MISC_POST_FR_BKOFF_DIS);
|
||||
}
|
||||
|
||||
if (AR_SREV_9300_20_OR_LATER(ah))
|
||||
|
Reference in New Issue
Block a user