svn commit: r309345 - head/sys/arm/ti/cpsw
Luiz Otavio O Souza
loos at FreeBSD.org
Thu Dec 1 02:35:16 UTC 2016
Author: loos
Date: Thu Dec 1 02:35:15 2016
New Revision: 309345
URL: https://svnweb.freebsd.org/changeset/base/309345
Log:
The RX_FREEBUFFER registers are a write to increment field.
Writing the full queue size to it every time was makeing it overflow with a
lot of bogus values.
This fixes the interrupt storms on irq 40.
Sponsored by: Rubicon Communications, LLC (Netgate)
Modified:
head/sys/arm/ti/cpsw/if_cpsw.c
Modified: head/sys/arm/ti/cpsw/if_cpsw.c
==============================================================================
--- head/sys/arm/ti/cpsw/if_cpsw.c Thu Dec 1 02:21:36 2016 (r309344)
+++ head/sys/arm/ti/cpsw/if_cpsw.c Thu Dec 1 02:35:15 2016 (r309345)
@@ -1760,7 +1760,7 @@ cpsw_rx_enqueue(struct cpsw_softc *sc)
sc->rx.queue_adds += added;
sc->rx.avail_queue_len -= added;
sc->rx.active_queue_len += added;
- cpsw_write_4(sc, CPSW_CPDMA_RX_FREEBUFFER(0), sc->rx.active_queue_len);
+ cpsw_write_4(sc, CPSW_CPDMA_RX_FREEBUFFER(0), added);
if (sc->rx.active_queue_len > sc->rx.max_active_queue_len) {
sc->rx.max_active_queue_len = sc->rx.active_queue_len;
}
More information about the svn-src-all
mailing list