Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Dec 2016 02:35:15 +0000 (UTC)
From:      Luiz Otavio O Souza <loos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r309345 - head/sys/arm/ti/cpsw
Message-ID:  <201612010235.uB12ZFFN071333@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612010235.uB12ZFFN071333>