diff options
Diffstat (limited to 'package/madwifi/patches-r3776/126-rxerr_frames.patch')
-rw-r--r-- | package/madwifi/patches-r3776/126-rxerr_frames.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/package/madwifi/patches-r3776/126-rxerr_frames.patch b/package/madwifi/patches-r3776/126-rxerr_frames.patch new file mode 100644 index 0000000..4639b5a --- /dev/null +++ b/package/madwifi/patches-r3776/126-rxerr_frames.patch @@ -0,0 +1,29 @@ +Index: madwifi-trunk-r3776/ath/if_ath.c +=================================================================== +--- madwifi-trunk-r3776.orig/ath/if_ath.c 2008-07-17 00:52:28.000000000 +0200 ++++ madwifi-trunk-r3776/ath/if_ath.c 2008-07-17 00:53:04.000000000 +0200 +@@ -6451,9 +6451,6 @@ + rs = &bf->bf_dsstatus.ds_rxstat; + + len = rs->rs_datalen; +- /* DMA sync. dies spectacularly if len == 0 */ +- if (len == 0) +- goto rx_next; + if (rs->rs_more) { + /* Frame spans multiple descriptors; this + * cannot happen yet as we don't support +@@ -6513,8 +6510,12 @@ + * setup again to receive another frame. + * NB: Meta-data (rs, noise, tsf) in the ath_buf is still + * used. */ +- bus_dma_sync_single(sc->sc_bdev, +- bf->bf_skbaddr, len, BUS_DMA_FROMDEVICE); ++ ++ /* DMA sync. dies spectacularly if len == 0 */ ++ if (len != 0) { ++ bus_dma_sync_single(sc->sc_bdev, ++ bf->bf_skbaddr, len, BUS_DMA_FROMDEVICE); ++ } + skb = ath_rxbuf_take_skb(sc, bf); + + sc->sc_stats.ast_ant_rx[rs->rs_antenna]++; |