Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Oct 2014 01:02:31 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r273244 - stable/10/sys/dev/ixgbe
Message-ID:  <201410180102.s9I12VMh092250@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sat Oct 18 01:02:30 2014
New Revision: 273244
URL: https://svnweb.freebsd.org/changeset/base/273244

Log:
  MFC r273112: Set the DROP_EN bit before the RX queue is brought up and active.
  
  He noticed issues setting this bit in SRRCTL after the queue was up,
  so doing it from the sysctl handler isn't enough and may not actually
  work correctly.
  
  This commit doesn't remove the sysctl path or try to change its
  behaviour.  I'll talk with others about how to finish fixing that
  before I tackle that.
  
  PR:           kern/194311
  Submitted by: luigi
  MFC after:    3 days
  Sponsored by: Norse Corp, Inc

Modified:
  stable/10/sys/dev/ixgbe/ixgbe.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- stable/10/sys/dev/ixgbe/ixgbe.c	Fri Oct 17 21:52:57 2014	(r273243)
+++ stable/10/sys/dev/ixgbe/ixgbe.c	Sat Oct 18 01:02:30 2014	(r273244)
@@ -4190,6 +4190,20 @@ ixgbe_initialize_receive_units(struct ad
 		srrctl &= ~IXGBE_SRRCTL_BSIZEPKT_MASK;
 		srrctl |= bufsz;
 		srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
+
+		/*
+		 * Set DROP_EN iff we have no flow control and >1 queue.
+		 * Note that srrctl was cleared shortly before during reset,
+		 * so we do not need to clear the bit, but do it just in case
+		 * this code is moved elsewhere.
+		 */
+		if (adapter->num_queues > 1 &&
+		    adapter->hw.fc.requested_mode == ixgbe_fc_none) {
+			srrctl |= IXGBE_SRRCTL_DROP_EN;
+		} else {
+			srrctl &= ~IXGBE_SRRCTL_DROP_EN;
+		}
+
 		IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl);
 
 		/* Setup the HW Rx Head and Tail Descriptor Pointers */



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