diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-02-27 13:58:42 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-05 15:20:48 -0500 |
commit | 4e0ad2591adde7bec878a4b37a073427aec3e19c (patch) | |
tree | 614069849bdeaaccc48db05667ed97dea2098dc2 /drivers/net/wireless/ath/ath9k | |
parent | 627e67a656bbb1d616c1ca2d056138a164111a52 (diff) |
ath9k: fix drv_tx_last_beacon on AR9003 by processing beacon tx status
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')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/beacon.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c index 6d1e46577db0..43882f9e25c4 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c | |||
@@ -91,7 +91,7 @@ static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp, | |||
91 | info.txpower = MAX_RATE_POWER; | 91 | info.txpower = MAX_RATE_POWER; |
92 | info.keyix = ATH9K_TXKEYIX_INVALID; | 92 | info.keyix = ATH9K_TXKEYIX_INVALID; |
93 | info.keytype = ATH9K_KEY_TYPE_CLEAR; | 93 | info.keytype = ATH9K_KEY_TYPE_CLEAR; |
94 | info.flags = ATH9K_TXDESC_NOACK; | 94 | info.flags = ATH9K_TXDESC_NOACK | ATH9K_TXDESC_INTREQ; |
95 | 95 | ||
96 | info.buf_addr[0] = bf->bf_buf_addr; | 96 | info.buf_addr[0] = bf->bf_buf_addr; |
97 | info.buf_len[0] = roundup(skb->len, 4); | 97 | info.buf_len[0] = roundup(skb->len, 4); |
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 5dd27d2712fc..9f785015a7dc 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -2296,9 +2296,12 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) | |||
2296 | break; | 2296 | break; |
2297 | } | 2297 | } |
2298 | 2298 | ||
2299 | /* Skip beacon completions */ | 2299 | /* Process beacon completions separately */ |
2300 | if (ts.qid == sc->beacon.beaconq) | 2300 | if (ts.qid == sc->beacon.beaconq) { |
2301 | sc->beacon.tx_processed = true; | ||
2302 | sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); | ||
2301 | continue; | 2303 | continue; |
2304 | } | ||
2302 | 2305 | ||
2303 | txq = &sc->tx.txq[ts.qid]; | 2306 | txq = &sc->tx.txq[ts.qid]; |
2304 | 2307 | ||