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-head mailing list