diff options
author | adrian <adrian@FreeBSD.org> | 2013-03-27 00:35:45 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2013-03-27 00:35:45 +0000 |
commit | 77e2dba19711ecb45e151a7fafffa9f5816aa57d (patch) | |
tree | 1202f560a6f8df1d3624b7f4b0845013576eb020 | |
parent | e86d6338eb787e1cab93b3a3f6791bf686bede1e (diff) | |
download | FreeBSD-src-77e2dba19711ecb45e151a7fafffa9f5816aa57d.zip FreeBSD-src-77e2dba19711ecb45e151a7fafffa9f5816aa57d.tar.gz |
* Stop processing after HAL_EIO; this is what the reference driver does.
* If we hit an empty queue condition (which I haven't yet root caused, grr.)
.. make sure we release the lock before continuing.
-rw-r--r-- | sys/dev/ath/if_ath_tx_edma.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/ath/if_ath_tx_edma.c b/sys/dev/ath/if_ath_tx_edma.c index 03a0446..7faa566 100644 --- a/sys/dev/ath/if_ath_tx_edma.c +++ b/sys/dev/ath/if_ath_tx_edma.c @@ -633,7 +633,7 @@ ath_edma_tx_processq(struct ath_softc *sc, int dosched) if (status == HAL_EIO) { device_printf(sc->sc_dev, "%s: invalid TX status?\n", __func__); - continue; + break; } #ifdef ATH_DEBUG_ALQ @@ -676,6 +676,7 @@ ath_edma_tx_processq(struct ath_softc *sc, int dosched) device_printf(sc->sc_dev, "%s: Q%d: empty?\n", __func__, ts.ts_queue_id); + ATH_TXQ_UNLOCK(txq); continue; } |