|
@@ -356,6 +356,7 @@ void ath_beacon_tasklet(unsigned long data)
|
|
|
struct ath_buf *bf = NULL;
|
|
|
struct ieee80211_vif *vif;
|
|
|
struct ath_tx_status ts;
|
|
|
+ bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA);
|
|
|
int slot;
|
|
|
u32 bfaddr, bc = 0;
|
|
|
|
|
@@ -456,10 +457,12 @@ void ath_beacon_tasklet(unsigned long data)
|
|
|
if (bfaddr != 0) {
|
|
|
/* NB: cabq traffic should already be queued and primed */
|
|
|
ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bfaddr);
|
|
|
- ath9k_hw_txstart(ah, sc->beacon.beaconq);
|
|
|
+
|
|
|
+ if (!edma)
|
|
|
+ ath9k_hw_txstart(ah, sc->beacon.beaconq);
|
|
|
|
|
|
sc->beacon.ast_be_xmit += bc; /* XXX per-vif? */
|
|
|
- if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
|
|
|
+ if (edma) {
|
|
|
spin_lock_bh(&sc->sc_pcu_lock);
|
|
|
ath9k_hw_txprocdesc(ah, bf->bf_desc, (void *)&ts);
|
|
|
spin_unlock_bh(&sc->sc_pcu_lock);
|