aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/ar9003_mac.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-03-03 09:17:05 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-07 13:51:38 -0500
commit3a2923e83c6036f55ad4a39c8ee9a7d4accd9539 (patch)
treecfb344bda144fe1198aca0736b0ed03182435c7d /drivers/net/wireless/ath/ath9k/ar9003_mac.c
parentfc16fd8808968063929bbb198eb8bb46d40e36ce (diff)
ath9k: get rid of double queueing of rx frames on EDMA
Process rx status directly instead of separating the completion test from the actual rx status processing. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ar9003_mac.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
index 01d5c1a4d746..a66a13b76848 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -436,20 +436,14 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
436 struct ar9003_rxs *rxsp = (struct ar9003_rxs *) buf_addr; 436 struct ar9003_rxs *rxsp = (struct ar9003_rxs *) buf_addr;
437 unsigned int phyerr; 437 unsigned int phyerr;
438 438
439 /* TODO: byte swap on big endian for ar9300_10 */ 439 if ((rxsp->status11 & AR_RxDone) == 0)
440 440 return -EINPROGRESS;
441 if (!rxs) {
442 if ((rxsp->status11 & AR_RxDone) == 0)
443 return -EINPROGRESS;
444
445 if (MS(rxsp->ds_info, AR_DescId) != 0x168c)
446 return -EINVAL;
447 441
448 if ((rxsp->ds_info & (AR_TxRxDesc | AR_CtrlStat)) != 0) 442 if (MS(rxsp->ds_info, AR_DescId) != 0x168c)
449 return -EINPROGRESS; 443 return -EINVAL;
450 444
451 return 0; 445 if ((rxsp->ds_info & (AR_TxRxDesc | AR_CtrlStat)) != 0)
452 } 446 return -EINPROGRESS;
453 447
454 rxs->rs_status = 0; 448 rxs->rs_status = 0;
455 rxs->rs_flags = 0; 449 rxs->rs_flags = 0;