diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-03-25 01:26:36 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-03-25 01:26:36 +0000 | 
| commit | 09b5c94c9ee54821da6c71b582ae340f0a0f7c44 (patch) | |
| tree | fceadd6ee6bfa7a078de995f91cae29bde586f51 | |
| parent | 041ed57ae2e88b2b947103dbe978dbe5ceeacb34 (diff) | |
madwifi: treat rxorn like rx, reset after rxorn seems to do more harm than good
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15030 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | package/madwifi/patches/413-rxorn.patch | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/package/madwifi/patches/413-rxorn.patch b/package/madwifi/patches/413-rxorn.patch new file mode 100644 index 000000000..b4174716d --- /dev/null +++ b/package/madwifi/patches/413-rxorn.patch @@ -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;  | 
