diff options
author | Sujith Manoharan <Sujith.Manoharan@atheros.com> | 2011-04-13 01:56:39 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-13 15:24:30 -0400 |
commit | 859c3ca1e4608615788dc6cbc199210fe4b5efa2 (patch) | |
tree | 523b8939326f1c8605b037201142f73816cdee37 /drivers/net/wireless/ath/ath9k/wmi.h | |
parent | c4d04186c7023d54445b695da226b3e98e0a55f9 (diff) |
ath9k_htc: Add a timer to cleanup WMI events
Occasionally, a WMI event would arrive ahead of the TX
URB completion handler. Discarding these events would exhaust
the available TX slots, so handle them by running a timer
cleaning up such events. Also, timeout packets for which TX
completion events have not arrived.
Signed-off-by: Sujith Manoharan <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/wmi.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/wmi.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/wmi.h b/drivers/net/wireless/ath/ath9k/wmi.h index 44b17385374..310d94eaed1 100644 --- a/drivers/net/wireless/ath/ath9k/wmi.h +++ b/drivers/net/wireless/ath/ath9k/wmi.h | |||
@@ -130,6 +130,12 @@ struct register_write { | |||
130 | __be32 val; | 130 | __be32 val; |
131 | }; | 131 | }; |
132 | 132 | ||
133 | struct ath9k_htc_tx_event { | ||
134 | int count; | ||
135 | struct __wmi_event_txstatus txs; | ||
136 | struct list_head list; | ||
137 | }; | ||
138 | |||
133 | struct wmi { | 139 | struct wmi { |
134 | struct ath9k_htc_priv *drv_priv; | 140 | struct ath9k_htc_priv *drv_priv; |
135 | struct htc_target *htc; | 141 | struct htc_target *htc; |
@@ -144,6 +150,9 @@ struct wmi { | |||
144 | u32 cmd_rsp_len; | 150 | u32 cmd_rsp_len; |
145 | bool stopped; | 151 | bool stopped; |
146 | 152 | ||
153 | struct list_head pending_tx_events; | ||
154 | spinlock_t event_lock; | ||
155 | |||
147 | spinlock_t wmi_lock; | 156 | spinlock_t wmi_lock; |
148 | 157 | ||
149 | atomic_t mwrite_cnt; | 158 | atomic_t mwrite_cnt; |