madwifi: treat rxorn like rx, reset after rxorn seems to do more harm than good
SVN-Revision: 15030
This commit is contained in:
parent
87783599b2
commit
4f42b6112e
|
@ -0,0 +1,31 @@
|
|||
--- a/ath/if_ath.c
|
||||
+++ b/ath/if_ath.c
|
||||
@@ -2307,6 +2307,17 @@ ath_intr(int irq, void *dev_id, struct p
|
||||
|
||||
sc->sc_isr = status;
|
||||
status &= sc->sc_imask; /* discard unasked for bits */
|
||||
+
|
||||
+ /* Treat RXORN as non-fatal. Either the bus is busy or the CPU
|
||||
+ * is not fast enough to process all frames. Treat it like
|
||||
+ * an Rx interrupt
|
||||
+ */
|
||||
+ if (status & HAL_INT_RXORN) {
|
||||
+ sc->sc_stats.ast_rxorn++;
|
||||
+ status &= ~HAL_INT_RXORN;
|
||||
+ status |= HAL_INT_RX;
|
||||
+ }
|
||||
+
|
||||
/* As soon as we know we have a real interrupt we intend to service,
|
||||
* we will check to see if we need an initial hardware TSF reading.
|
||||
* Normally we would just populate this all the time to keep things
|
||||
@@ -2319,10 +2330,6 @@ ath_intr(int irq, void *dev_id, struct p
|
||||
sc->sc_stats.ast_hardware++;
|
||||
ath_hal_intrset(ah, 0); /* disable intr's until reset */
|
||||
ATH_SCHEDULE_TQUEUE(&sc->sc_fataltq, &needmark);
|
||||
- } else if (status & HAL_INT_RXORN) {
|
||||
- sc->sc_stats.ast_rxorn++;
|
||||
- ath_hal_intrset(ah, 0); /* disable intr's until reset */
|
||||
- ATH_SCHEDULE_TQUEUE(&sc->sc_rxorntq, &needmark);
|
||||
} else {
|
||||
if (status & HAL_INT_SWBA) {
|
||||
struct ieee80211vap * vap;
|
Loading…
Reference in New Issue