summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-03-27 00:35:45 +0000
committeradrian <adrian@FreeBSD.org>2013-03-27 00:35:45 +0000
commit77e2dba19711ecb45e151a7fafffa9f5816aa57d (patch)
tree1202f560a6f8df1d3624b7f4b0845013576eb020
parente86d6338eb787e1cab93b3a3f6791bf686bede1e (diff)
downloadFreeBSD-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.c3
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;
}
OpenPOWER on IntegriCloud