aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanohar@qca.qualcomm.com>2011-12-23 10:57:02 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-01-04 14:30:46 -0500
commit016c2177918301c9a2557c675c12ab88667a27bb (patch)
tree6fd7e28d4d171df790910ad8c2f87fc875196d74 /drivers/net/wireless
parent68acc4afb040d98ddfd2cae0de09e2f4e1ee127f (diff)
ath9k_hw: increase tx status ring buffer size
AR9003 chips read tx status from ring buffer whose max number of status descriptor is mininal compared to max number of tx buffers. On a stress condition, it can be easily overflown which might cause false tx hung detection. Though increasing number of max status descriptors consumes more memory, it helps to avoid false positive chip resets. Cc: Paul Stewart <pstew@google.com> Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h2
4 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
index 4a315155d779..88c81c5706b2 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -583,7 +583,7 @@ void ath9k_hw_reset_txstatus_ring(struct ath_hw *ah)
583 583
584void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start, 584void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start,
585 u32 ts_paddr_start, 585 u32 ts_paddr_start,
586 u8 size) 586 u16 size)
587{ 587{
588 588
589 ah->ts_paddr_start = ts_paddr_start; 589 ah->ts_paddr_start = ts_paddr_start;
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.h b/drivers/net/wireless/ath/ath9k/ar9003_mac.h
index c50449387bf1..e203b51e968b 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h
@@ -118,5 +118,5 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah,
118void ath9k_hw_reset_txstatus_ring(struct ath_hw *ah); 118void ath9k_hw_reset_txstatus_ring(struct ath_hw *ah);
119void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start, 119void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start,
120 u32 ts_paddr_start, 120 u32 ts_paddr_start,
121 u8 size); 121 u16 size);
122#endif 122#endif
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 95276e914c1b..b30e9fc6433f 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -97,7 +97,7 @@ enum buffer_type {
97#define bf_isampdu(bf) (bf->bf_state.bf_type & BUF_AMPDU) 97#define bf_isampdu(bf) (bf->bf_state.bf_type & BUF_AMPDU)
98#define bf_isaggr(bf) (bf->bf_state.bf_type & BUF_AGGR) 98#define bf_isaggr(bf) (bf->bf_state.bf_type & BUF_AGGR)
99 99
100#define ATH_TXSTATUS_RING_SIZE 64 100#define ATH_TXSTATUS_RING_SIZE 512
101 101
102#define DS2PHYS(_dd, _ds) \ 102#define DS2PHYS(_dd, _ds) \
103 ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc)) 103 ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc))
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 48205c2960b5..6a29004a71b0 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -1016,7 +1016,7 @@ struct ath_hw {
1016 u32 ts_paddr_start; 1016 u32 ts_paddr_start;
1017 u32 ts_paddr_end; 1017 u32 ts_paddr_end;
1018 u16 ts_tail; 1018 u16 ts_tail;
1019 u8 ts_size; 1019 u16 ts_size;
1020 1020
1021 u32 bb_watchdog_last_status; 1021 u32 bb_watchdog_last_status;
1022 u32 bb_watchdog_timeout_ms; /* in ms, 0 to disable */ 1022 u32 bb_watchdog_timeout_ms; /* in ms, 0 to disable */