aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath5k/dma.c14
-rw-r--r--drivers/net/wireless/ath/ath5k/qcu.c3
2 files changed, 14 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath5k/dma.c b/drivers/net/wireless/ath/ath5k/dma.c
index e39c9534084..bfdfcff42a1 100644
--- a/drivers/net/wireless/ath/ath5k/dma.c
+++ b/drivers/net/wireless/ath/ath5k/dma.c
@@ -216,6 +216,14 @@ int ath5k_hw_stop_tx_dma(struct ath5k_hw *ah, unsigned int queue)
216 ath5k_hw_reg_write(ah, tx_queue, AR5K_CR); 216 ath5k_hw_reg_write(ah, tx_queue, AR5K_CR);
217 ath5k_hw_reg_read(ah, AR5K_CR); 217 ath5k_hw_reg_read(ah, AR5K_CR);
218 } else { 218 } else {
219
220 /*
221 * Enable DCU early termination to quickly
222 * flush any pending frames from QCU
223 */
224 AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
225 AR5K_QCU_MISC_DCU_EARLY);
226
219 /* 227 /*
220 * Schedule TX disable and wait until queue is empty 228 * Schedule TX disable and wait until queue is empty
221 */ 229 */
@@ -285,6 +293,12 @@ int ath5k_hw_stop_tx_dma(struct ath5k_hw *ah, unsigned int queue)
285 queue); 293 queue);
286 } 294 }
287 295
296 /*
297 * Disable DCU early termination
298 */
299 AR5K_REG_DISABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
300 AR5K_QCU_MISC_DCU_EARLY);
301
288 /* Clear register */ 302 /* Clear register */
289 ath5k_hw_reg_write(ah, 0, AR5K_QCU_TXD); 303 ath5k_hw_reg_write(ah, 0, AR5K_QCU_TXD);
290 if (pending) { 304 if (pending) {
diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c
index 52eee34fd54..ed62273cdf0 100644
--- a/drivers/net/wireless/ath/ath5k/qcu.c
+++ b/drivers/net/wireless/ath/ath5k/qcu.c
@@ -340,9 +340,6 @@ int ath5k_hw_reset_tx_queue(struct ath5k_hw *ah, unsigned int queue)
340 /* 340 /*
341 * Set misc registers 341 * Set misc registers
342 */ 342 */
343 /* Enable DCU early termination for this queue */
344 AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
345 AR5K_QCU_MISC_DCU_EARLY);
346 343
347 /* Enable DCU to wait for next fragment from QCU */ 344 /* Enable DCU to wait for next fragment from QCU */
348 AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_DFS_MISC(queue), 345 AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_DFS_MISC(queue),