76 if (!
isr && !sync_cause)
114 if (
isr == 0xffffffff) {
121 if (
ah->config.rx_intr_mitigation)
125 if (
ah->config.tx_intr_mitigation)
158 ah->intr_gen_timer_trigger =
161 ah->intr_gen_timer_thresh =
164 if (
ah->intr_gen_timer_trigger)
192 "AR_INTR_SYNC_LOCAL_TIMEOUT\n");
202 int is_firstseg,
int is_lastseg,
203 const void *ds0,
u32 buf_addr,
207 unsigned int descid = 0;
214 ads->
data0 = buf_addr;
228 }
else if (is_lastseg) {
248 ads = &
ah->ts_ring[
ah->ts_tail];
254 ah->ts_tail = (
ah->ts_tail + 1) %
ah->ts_size;
259 "Tx Descriptor error %x\n", ads->
ds_info);
260 memset(ads, 0,
sizeof(*ads));
317 memset(ads, 0,
sizeof(*ads));
328 if (txpower >
ah->txpower_limit)
329 txpower =
ah->txpower_limit;
370 u32 durUpdateEn,
u32 rtsctsRate,
427 #define FIRST_DESC_NDELIMS 60 650 "TS Start 0x%x End 0x%x Virt %p, Size %d\n",
651 ah->ts_paddr_start,
ah->ts_paddr_end,
652 ah->ts_ring,
ah->ts_size);
663 ah->ts_paddr_start = ts_paddr_start;
static int ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
#define ATH9K_TX_DATA_UNDERRUN
static void ar9003_hw_set11n_aggr_first(struct ath_hw *ah, void *ds, u32 aggrLen)
#define EINVAL
Invalid argument.
#define ATH9K_RX_DELIM_CRC_PRE
#define ATH9K_TXDESC_NOACK
#define AR_INTR_SYNC_CAUSE_CLR
#define ATH9K_TXDESC_EXT_ONLY
uint8_t checksum
Checksum.
#define ATH9K_TXDESC_VEOL
#define MAP_ISR_S2_DTIMSYNC
static void ar9003_hw_set_desc_link(void *ds, u32 ds_link)
static void ar9003_hw_set11n_txdesc(struct ath_hw *ah, void *ds, u32 pktlen, enum ath9k_pkt_type type, u32 txpower, u32 keyIx, enum ath9k_key_type keyType, u32 flags)
#define AR_INTR_ASYNC_CAUSE
#define ATH9K_TXDESC_CTSENA
static void ar9003_hw_fill_txdesc(struct ath_hw *ah __unused, void *ds, u32 seglen, int is_firstseg, int is_lastseg, const void *ds0, u32 buf_addr, unsigned int qcu)
#define ATH9K_TXDESC_LDPC
void(* rx_enable)(struct ath_hw *ah)
#define AR_Q_STATUS_RING_END
static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start, u32 ts_paddr_start, u8 size)
uint32_t type
Operating system type.
uint8_t size
Entry size (in 32-bit words)
#define AR_ISR_S5_GENTIMER_THRESH
int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah __unused, struct ath_rx_status *rxs, void *buf_addr)
#define ATH9K_TXDESC_EXT_AND_CTL
void ath9k_hw_reset_txstatus_ring(struct ath_hw *ah)
void(* clr11n_aggr)(struct ath_hw *ah, void *ds)
#define ATH9K_RX_DECRYPT_BUSY
#define set11nTries(_series, _index)
#define ATH9K_RX_DELIM_CRC_POST
#define ATH9K_RXKEYIX_INVALID
#define AR_RxRSSICombined
#define set11nRate(_series, _index)
#define set11nRateFlags(_series, _index)
#define ATHEROS_VENDOR_ID
#define AR_PostDelimCRCErr
void(* set11n_aggr_last)(struct ath_hw *ah, void *ds)
#define AR_PAPRDChainMask
#define set11nPktDurRTSCTS(_series, _index)
int(* get_isr)(struct ath_hw *ah, enum ath9k_int *masked)
#define AR_ISR_S5_GENTIMER_TRIG
#define AR_TxDelimUnderrun
#define AR_TxRSSICombined
#define __unused
Declare a variable or data structure as unused.
void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah __unused, void *ds, u8 chains)
static void ar9003_hw_rx_enable(struct ath_hw *hw)
#define ATH9K_TX_DESC_CFG_ERR
#define EINPROGRESS
Operation in progress.
#define AR_INTR_SYNC_CAUSE
void(* set11n_ratescenario)(struct ath_hw *ah, void *ds, void *lastds, u32 durUpdateEn, u32 rtsctsRate, u32 rtsctsDuration, struct ath9k_11n_rate_series series[], u32 nseries, u32 flags)
#define AR9003TXC_CONST(_ds)
static void ar9003_hw_set_clrdmask(struct ath_hw *ah __unused, void *ds, int val)
static void ar9003_hw_set11n_ratescenario(struct ath_hw *ah __unused, void *ds, void *lastds, u32 durUpdateEn, u32 rtsctsRate, u32 rtsctsDuration __unused, struct ath9k_11n_rate_series series[], u32 nseries __unused, u32 flags)
struct ath_hw_ops - callbacks used by hardware code and driver code
void(* set11n_txdesc)(struct ath_hw *ah, void *ds, u32 pktLen, enum ath9k_pkt_type type, u32 txPower, u32 keyIx, enum ath9k_key_type keyType, u32 flags)
#define ATH9K_TXDESC_RTSENA
static void ar9003_hw_clr11n_aggr(struct ath_hw *ah __unused, void *ds)
#define AR_ISR_S2_DTIMSYNC
int ath9k_hw_updatetxtriglevel(struct ath_hw *ah, int bIncTrigLevel)
ath9k_hw_updatetxtriglevel - adjusts the frame trigger level
#define AR_PreDelimCRCErr
void(* set_clrdmask)(struct ath_hw *ah, void *ds, int val)
#define REG_READ(_ah, _reg)
static void ar9003_hw_set11n_aggr_last(struct ath_hw *ah __unused, void *ds)
#define AR_Q_STATUS_RING_START
#define ATH9K_TXDESC_LOWRXCHAIN
static struct ath_hw_ops * ath9k_hw_ops(struct ath_hw *ah)
int(* proc_txdesc)(struct ath_hw *ah, void *ds, struct ath_tx_status *ts)
#define AR_DATABUF_SIZE_MASK
static void ar9003_hw_get_desc_link(void *ds, u32 **ds_link)
void(* set11n_aggr_middle)(struct ath_hw *ah, void *ds, u32 numDelims)
#define AR_ExcessiveRetries
#define AR_ISR_S2_BB_WATCHDOG
#define AR_TxDataUnderrun
#define ATH9K_RXERR_DECRYPT
#define REG_WRITE(_ah, _reg, _val)
#define FIRST_DESC_NDELIMS
#define EIO
Input/output error.
#define ATH9K_TX_DELIM_UNDERRUN
#define ATH9K_TXERR_XTXOP
#define ATH9K_TXERR_TIMER_EXPIRED
#define AR_TxTimerExpired
void(* set11n_aggr_first)(struct ath_hw *ah, void *ds, u32 aggrLen)
void ar9003_hw_attach_mac_ops(struct ath_hw *hw)
static void ar9003_hw_set11n_aggr_middle(struct ath_hw *ah __unused, void *ds, u32 numDelims)
void ath9k_hw_set_rx_bufsize(struct ath_hw *ah, u16 buf_size)
typeof(acpi_finder=acpi_find)
ACPI table finder.
#define AR_DecryptBusyErr
#define DBG(...)
Print a debugging message.
#define MAP_ISR_S2_TSFOOR
void(* fill_txdesc)(struct ath_hw *ah, void *ds, u32 seglen, int is_firstseg, int is_is_lastseg, const void *ds0, u32 buf_addr, unsigned int qcu)
#define ATH9K_TXERR_XRETRY
#define ATH9K_TXKEYIX_INVALID
void(* get_desc_link)(void *ds, u32 **link)
#define MAP_ISR_S2_CABEND
#define MAP_ISR_S2_BB_WATCHDOG
void ath9k_hw_addrxbuf_edma(struct ath_hw *ah, u32 rxdp, enum ath9k_rx_qtype qtype)
if(natsemi->flags &NATSEMI_64BIT) return 1
void * memset(void *dest, int character, size_t len) __nonnull
void(* set_desc_link)(void *ds, u32 link)
static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds __unused, struct ath_tx_status *ts)