svn commit: r207442 - head/sys/dev/msk

Pyun YongHyeon yongari at FreeBSD.org
Fri Apr 30 18:04:47 UTC 2010


Author: yongari
Date: Fri Apr 30 18:04:46 2010
New Revision: 207442
URL: http://svn.freebsd.org/changeset/base/207442

Log:
  Disable non-ASF packet flushing on Yukon Extreme as vendor's driver
  does. Without this change, Yukon Extreme seems to generate lots of
  RX FIFO overruns even though controller has available RX buffers.
  These excessive RX FIFO overruns generated lots of pause frames
  which in turn killed devices plugged into switch. It seems there is
  still occasional RX frame corruption on Yukon Extreme but this
  change seems to fix the pause frame storm.
  
  Reported by:	jhb
  Tested by:	jhb
  MFC after:	5 days

Modified:
  head/sys/dev/msk/if_msk.c
  head/sys/dev/msk/if_mskreg.h

Modified: head/sys/dev/msk/if_msk.c
==============================================================================
--- head/sys/dev/msk/if_msk.c	Fri Apr 30 17:12:20 2010	(r207441)
+++ head/sys/dev/msk/if_msk.c	Fri Apr 30 18:04:46 2010	(r207442)
@@ -3917,6 +3917,11 @@ msk_init_locked(struct msk_if_softc *sc_
 		msk_stop(sc_if);
 		return;
 	}
+	if (sc->msk_hw_id == CHIP_ID_YUKON_EX) {
+		/* Disable flushing of non-ASF packets. */
+		CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_CTRL_T),
+		    GMF_RX_MACSEC_FLUSH_OFF);
+	}
 
 	/* Configure interrupt handling. */
 	if (sc_if->msk_port == MSK_PORT_A) {

Modified: head/sys/dev/msk/if_mskreg.h
==============================================================================
--- head/sys/dev/msk/if_mskreg.h	Fri Apr 30 17:12:20 2010	(r207441)
+++ head/sys/dev/msk/if_mskreg.h	Fri Apr 30 18:04:46 2010	(r207442)
@@ -1941,6 +1941,8 @@
 #define RX_TRUNC_OFF		BIT_26	/* disable packet truncation */
 #define RX_VLAN_STRIP_ON	BIT_25	/* enable  VLAN stripping */
 #define RX_VLAN_STRIP_OFF	BIT_24	/* disable VLAN stripping */
+#define GMF_RX_MACSEC_FLUSH_ON	BIT_23
+#define GMF_RX_MACSEC_FLUSH_OFF	BIT_22
 #define GMF_RX_OVER_ON		BIT_19	/* enable flushing on receive overrun */
 #define GMF_RX_OVER_OFF		BIT_18	/* disable flushing on receive overrun */
 #define GMF_ASF_RX_OVER_ON	BIT_17	/* enable flushing of ASF when overrun */


More information about the svn-src-head mailing list