summaryrefslogtreecommitdiffstats
path: root/sys/dev/ath
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2006-02-15 18:12:24 +0000
committersam <sam@FreeBSD.org>2006-02-15 18:12:24 +0000
commit7804458943a025fdabffa74a2b37967fb9b9d7bb (patch)
treeda25c700be689222c1c9e2c836fe9ae45fcdc2df /sys/dev/ath
parente9b4b3fc9ea953f6c99ace3f3e7134abebf8e11c (diff)
downloadFreeBSD-src-7804458943a025fdabffa74a2b37967fb9b9d7bb.zip
FreeBSD-src-7804458943a025fdabffa74a2b37967fb9b9d7bb.tar.gz
close race between ath_tx_start and ath_tx_processq
Reviewed by: apatti MFC after: 1 week
Diffstat (limited to 'sys/dev/ath')
-rw-r--r--sys/dev/ath/if_ath.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index f070427..c0cb150 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -3766,7 +3766,6 @@ ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
txq->axq_intrcnt = 0; /* reset periodic desc intr count */
bf = STAILQ_FIRST(&txq->axq_q);
if (bf == NULL) {
- txq->axq_link = NULL;
ATH_TXQ_UNLOCK(txq);
break;
}
@@ -3782,6 +3781,8 @@ ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
break;
}
ATH_TXQ_REMOVE_HEAD(txq, bf_list);
+ if (txq->axq_depth == 0)
+ txq->axq_link = NULL;
ATH_TXQ_UNLOCK(txq);
ni = bf->bf_node;
OpenPOWER on IntegriCloud