29 "tx ok 0x%x err 0x%x desc 0x%x eol 0x%x urn 0x%x\n",
30 ah->txok_interrupt_mask,
ah->txerr_interrupt_mask,
31 ah->txdesc_interrupt_mask,
ah->txeol_interrupt_mask,
32 ah->txurn_interrupt_mask);
58 "Enable TXE on queue: %d\n", q);
105 if (
ah->tx_trig_level >=
ah->config.max_txtrig_level)
114 if (curLevel < ah->config.max_txtrig_level)
118 if (newLevel != curLevel)
124 ah->tx_trig_level = newLevel;
126 return newLevel != curLevel;
140 for (i = 0; i < 1000; i++) {
158 *txqs &=
ah->intr_txqs;
159 ah->intr_txqs &= ~(*txqs);
171 "Set TXQ properties, inactive queue: %d\n", q);
175 DBG2(
"ath9k: Set queue properties for: %d\n", q);
223 if (
ah->txq[q].tqi_type ==
227 DBG(
"No available TX queue\n");
231 DBG2(
"ath9K: Setup TX queue: %d\n", q);
235 DBG(
"ath9k: TX queue: %d already active\n", q);
266 "Release TXQ, inactive queue: %d\n", q);
270 DBG2(
"ath9k: Release TX queue: %d\n", q);
273 ah->txok_interrupt_mask &= ~(1 << q);
274 ah->txerr_interrupt_mask &= ~(1 << q);
275 ah->txdesc_interrupt_mask &= ~(1 << q);
276 ah->txeol_interrupt_mask &= ~(1 << q);
277 ah->txurn_interrupt_mask &= ~(1 << q);
292 "Reset TXQ, inactive queue: %d\n", q);
296 DBG2(
"ath9k: Reset TX queue: %d\n", q);
304 for (cwMin = 1; cwMin < chanCwMin; cwMin = (cwMin << 1) | 1);
370 ah->txok_interrupt_mask |= 1 << q;
372 ah->txok_interrupt_mask &= ~(1 << q);
374 ah->txerr_interrupt_mask |= 1 << q;
376 ah->txerr_interrupt_mask &= ~(1 << q);
378 ah->txdesc_interrupt_mask |= 1 << q;
380 ah->txdesc_interrupt_mask &= ~(1 << q);
382 ah->txeol_interrupt_mask |= 1 << q;
384 ah->txeol_interrupt_mask &= ~(1 << q);
386 ah->txurn_interrupt_mask |= 1 << q;
388 ah->txurn_interrupt_mask &= ~(1 << q);
401 if ((adsp->ds_rxstatus8 &
AR_RxDone) == 0)
506 "RX failed to go idle in 10 ms RXSM=0x%x\n",
538 #define AH_RX_STOP_DMA_TIMEOUT 10000 539 u32 mac_status, last_mac_status = 0;
557 if (mac_status == 0x1c0 && mac_status == last_mac_status) {
562 last_mac_status = mac_status;
570 "DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n",
580 #undef AH_RX_STOP_DMA_TIMEOUT 604 DBG2(
"ath9k: disable IER\n");
626 DBG2(
"ath9k: enable IER\n");
637 DBG2(
"ath9k: AR_IMR 0x%x IER 0x%x\n",
650 DBG2(
"ath9k: 0x%x => 0x%x\n", omask, ints);
657 if (
ah->config.tx_intr_mitigation)
660 if (
ah->txok_interrupt_mask)
662 if (
ah->txdesc_interrupt_mask)
665 if (
ah->txerr_interrupt_mask)
667 if (
ah->txeol_interrupt_mask)
673 if (
ah->config.rx_intr_mitigation) {
680 if (
ah->config.rx_intr_mitigation)
714 DBG2(
"ath9k: new IMR 0x%x\n", mask);
719 ah->imrs2_reg |= mask2;
int ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
#define ATH9K_RX_DELIM_CRC_PRE
int ath9k_hw_setrxabort(struct ath_hw *ah, int set)
#define ATH9K_TXQ_USE_LOCKOUT_BKOFF_DIS
#define AR_DRETRY_LIMIT(_i)
void ath9k_hw_enable_interrupts(struct ath_hw *ah)
#define AR_D_LCL_IFS_CWMIN
static unsigned int unsigned int reg
#define AR_INTR_ASYNC_CAUSE
#define AR_D_MISC_FRAG_BKOFF_EN
#define AR_D_RETRY_LIMIT_STA_SH
#define AR_IMR_S2_QCU_TXURN
#define AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL
struct option_descriptor set[0]
#define AR_MACMISC_MISC_OBS_BUS_1
int ath9k_hw_stopdmarecv(struct ath_hw *ah, int *reset)
void ath9k_ani_reset(struct ath_hw *ah, int is_scanning)
#define AR_OBS_BUS_1_RX_STATE
u32 ath9k_hw_numtxpending(struct ath_hw *ah, u32 q)
uint32_t type
Operating system type.
#define REG_CLR_BIT(_a, _r, _f)
#define REGWRITE_BUFFER_FLUSH(_ah)
void ath9k_hw_puttxbuf(struct ath_hw *ah, u32 q, u32 txdp)
#define AR_D_LCL_IFS_CWMAX
void ath9k_hw_abortpcurecv(struct ath_hw *ah)
#define ATH9K_RX_DECRYPT_BUSY
#define AR_D_MISC_CW_BKOFF_EN
#define AR_Q_DESC_CRCCHK_EN
#define AR_Q_RDYTIMECFG_EN
struct net80211_channel * chan
#define AR_DIAG_FORCE_CH_IDLE_HIGH
#define AR_D_LCL_IFS_AIFS
#define AR_Q_RDYTIMECFG_DURATION
#define ATH9K_RX_DELIM_CRC_POST
#define AR_D_RETRY_LIMIT_STA_LG
#define ATH9K_RXKEYIX_INVALID
#define AR_RxRSSICombined
void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
#define AR_PostDelimCRCErr
#define AR_SREV_9300_20_OR_LATER(_ah)
#define AR_IMR_S0_QCU_TXOK
int ath9k_hw_set_txq_props(struct ath_hw *ah, int q, const struct ath9k_tx_queue_info *qinfo)
int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, struct ath_rx_status *rs, u64 tsf __unused)
static void ath9k_hw_set_txq_interrupts(struct ath_hw *ah, struct ath9k_tx_queue_info *qi __unused)
int ath9k_hw_releasetxqueue(struct ath_hw *ah, u32 q)
#define ATH9K_TXQ_USEDEFAULT
enum ath9k_tx_queue_flags tqi_qflags
pseudo_bit_t value[0x00020]
#define __unused
Declare a variable or data structure as unused.
#define AR_D_MISC_POST_FR_BKOFF_DIS
#define AH_RX_STOP_DMA_TIMEOUT
#define AR_MACMISC_DMA_OBS_LINE_8
#define AR_D_MISC_ARB_LOCKOUT_CNTRL
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
int ath9k_hw_intrpend(struct ath_hw *ah)
void ath9k_hw_set_interrupts(struct ath_hw *ah, unsigned int ints)
#define AR_Q_MISC_RDYTIME_EXP_POLICY
void ath9k_hw_abort_tx_dma(struct ath_hw *ah)
void ath9k_hw_gettxintrtxqs(struct ath_hw *ah, u32 *txqs)
#define AR_D_GBL_IFS_MISC_IGNORE_BACKOFF
#define AR_SREV_9340(_ah)
void ath9k_hw_disable_interrupts(struct ath_hw *ah)
#define EINPROGRESS
Operation in progress.
#define AR_INTR_SYNC_CAUSE
#define RXSTATUS_RATE(ah, ads)
#define AR_IMR_S2_DTIMSYNC
void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp)
int ath9k_hw_setuptxqueue(struct ath_hw *ah, enum ath9k_tx_queue type, const struct ath9k_tx_queue_info *qinfo)
#define AR_IMR_S1_QCU_TXEOL
#define ATH9K_NUM_TX_QUEUES
struct ar5416_desc::@33::@35 rx
#define AR_INTR_ASYNC_MASK
#define MIN_TX_FIFO_THRESHOLD
int ath9k_hw_updatetxtriglevel(struct ath_hw *ah, int bIncTrigLevel)
ath9k_hw_updatetxtriglevel - adjusts the frame trigger level
#define AR_PreDelimCRCErr
#define AR_Q_CBRCFG_INTERVAL
#define AR_D_GBL_IFS_MISC
#define REG_READ(_ah, _reg)
#define REG_SET_BIT(_a, _r, _f)
#define AR_Q_STS_PEND_FR_CNT
#define AR_MACMISC_MISC_OBS_BUS_MSB_S
#define AR_Q_CBRCFG_OVF_THRESH
#define AR_IMR_S5_TIM_TIMER
enum ath9k_tx_queue tqi_type
#define ATH9K_RXERR_DECRYPT
int ath9k_hw_wait(struct ath_hw *ah, u32 reg, u32 mask, u32 val, u32 timeout)
#define REG_WRITE(_ah, _reg, _val)
#define AR_INTR_SYNC_ENABLE
#define AR_PCU_FORCE_QUIET_COLL
#define AR_QRDYTIMECFG(_i)
#define AR_INTR_ASYNC_ENABLE
#define AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN
#define AR_D_MISC_FRAG_WAIT_EN
#define AR_DecryptBusyErr
#define AR_INTR_SYNC_MASK
#define DBG(...)
Print a debugging message.
#define AR_MACMISC_DMA_OBS_S
#define AR_Q_MISC_DCU_EARLY_TERM_REQ
void ath9k_hw_startpcureceive(struct ath_hw *ah, int is_scanning)
#define AR_IMR_S0_QCU_TXDESC
#define NULL
NULL pointer (VOID *)
#define AR_D_RETRY_LIMIT_FR_SH
#define ENABLE_REGWRITE_BUFFER(_ah)
#define AR_IMR_S1_QCU_TXERR
#define AR_Q_MISC_FSP_CBR
void * memset(void *dest, int character, size_t len) __nonnull