diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/dma.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath5k/qcu.c | 3 |
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), |