aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/ath9k.h
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2010-06-24 05:42:44 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-24 15:42:39 -0400
commitca369eb494e45a3e3b8960775f88125fe1fbb0f2 (patch)
tree2a53c84c5d848e73a271005df56b754334e5d1a2 /drivers/net/wireless/ath/ath9k/ath9k.h
parent75f64dd54a185150ebfc45e99351c890d4a2252f (diff)
ath9k: Fix bug in paprd
It is possbile that the transmission of paprd test frame might not get completed in 100ms if tx is stuck. Freeing this skb upon timeout in ath_paprd_calibrate() will result in accessing already freed memory when the associated pending buffer is drained in txq. This patch fixes this issue. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ath9k.h')
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 3a14630e808e..ce74af6ef08c 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -226,6 +226,7 @@ struct ath_buf_state {
226 int bfs_retries; 226 int bfs_retries;
227 u8 bf_type; 227 u8 bf_type;
228 u8 bfs_paprd; 228 u8 bfs_paprd;
229 unsigned long bfs_paprd_timestamp;
229 u32 bfs_keyix; 230 u32 bfs_keyix;
230 enum ath9k_key_type bfs_keytype; 231 enum ath9k_key_type bfs_keytype;
231}; 232};
@@ -425,6 +426,8 @@ int ath_beaconq_config(struct ath_softc *sc);
425#define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */ 426#define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */
426#define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */ 427#define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */
427 428
429#define ATH_PAPRD_TIMEOUT 100 /* msecs */
430
428void ath_paprd_calibrate(struct work_struct *work); 431void ath_paprd_calibrate(struct work_struct *work);
429void ath_ani_calibrate(unsigned long data); 432void ath_ani_calibrate(unsigned long data);
430 433