aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ath/if_ath_rx.c
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2013-01-13 22:41:58 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2013-01-13 22:41:58 +0000
commit233af52df2b7a55769bc4ed80170989a53e02024 (patch)
treec29777bad48c106f3a4ea79c76132797ce6312cc /sys/dev/ath/if_ath_rx.c
parente1e1f0e44f020f5513c36c0b00259a741277c8f1 (diff)
Notes
Diffstat (limited to 'sys/dev/ath/if_ath_rx.c')
-rw-r--r--sys/dev/ath/if_ath_rx.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ath/if_ath_rx.c b/sys/dev/ath/if_ath_rx.c
index 5a39d16a0acc..368c05c7fadd 100644
--- a/sys/dev/ath/if_ath_rx.c
+++ b/sys/dev/ath/if_ath_rx.c
@@ -845,6 +845,7 @@ ath_rx_proc(struct ath_softc *sc, int resched)
int16_t nf;
u_int64_t tsf;
int npkts = 0;
+ int kickpcu = 0;
/* XXX we must not hold the ATH_LOCK here */
ATH_UNLOCK_ASSERT(sc);
@@ -852,6 +853,7 @@ ath_rx_proc(struct ath_softc *sc, int resched)
ATH_PCU_LOCK(sc);
sc->sc_rxproc_cnt++;
+ kickpcu = sc->sc_kickpcu;
ATH_PCU_UNLOCK(sc);
DPRINTF(sc, ATH_DEBUG_RX_PROC, "%s: called\n", __func__);
@@ -866,7 +868,7 @@ ath_rx_proc(struct ath_softc *sc, int resched)
* latency can jump by quite a bit, causing throughput
* degredation.
*/
- if (npkts >= ATH_RX_MAX)
+ if (!kickpcu && npkts >= ATH_RX_MAX)
break;
bf = TAILQ_FIRST(&sc->sc_rxbuf);
@@ -961,6 +963,9 @@ rx_proc_next:
__func__, npkts);
/* XXX rxslink? */
+#if 0
+ ath_startrecv(sc);
+#else
/*
* XXX can we hold the PCU lock here?
* Are there any net80211 buffer calls involved?
@@ -970,6 +975,7 @@ rx_proc_next:
ath_hal_rxena(ah); /* enable recv descriptors */
ath_mode_init(sc); /* set filters, etc. */
ath_hal_startpcurecv(ah); /* re-enable PCU/DMA engine */
+#endif
ath_hal_intrset(ah, sc->sc_imask);
sc->sc_kickpcu = 0;