Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Jul 2014 07:43:41 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r268915 - head/sys/dev/ixgbe
Message-ID:  <201407200743.s6K7hfkh087496@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sun Jul 20 07:43:41 2014
New Revision: 268915
URL: http://svnweb.freebsd.org/changeset/base/268915

Log:
  Disable the ixgbe(4) UDP 4-tuple hashing for the time being.
  
  A mix of fragmented and non-fragmented UDP in a single stream will end up
  being hashed differently, resulting in out-of-order behaviour in the receive
  path.
  
  This was done in the linux e1000 driver in 2011.
  
  Discussed with:	jfv

Modified:
  head/sys/dev/ixgbe/ixgbe.c

Modified: head/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- head/sys/dev/ixgbe/ixgbe.c	Sun Jul 20 07:39:54 2014	(r268914)
+++ head/sys/dev/ixgbe/ixgbe.c	Sun Jul 20 07:43:41 2014	(r268915)
@@ -4247,16 +4247,26 @@ ixgbe_initialise_rss_mapping(struct adap
 		IXGBE_WRITE_REG(hw, IXGBE_RSSRK(i), rss_key[i]);
 
 	/* Perform hash on these packet types */
+	/*
+	 * Disable UDP - IP fragments aren't currently being handled
+	 * and so we end up with a mix of 2-tuple and 4-tuple
+	 * traffic.
+	 */
 	mrqc = IXGBE_MRQC_RSSEN
 	     | IXGBE_MRQC_RSS_FIELD_IPV4
 	     | IXGBE_MRQC_RSS_FIELD_IPV4_TCP
+#if 0
 	     | IXGBE_MRQC_RSS_FIELD_IPV4_UDP
+#endif
 	     | IXGBE_MRQC_RSS_FIELD_IPV6_EX_TCP
 	     | IXGBE_MRQC_RSS_FIELD_IPV6_EX
 	     | IXGBE_MRQC_RSS_FIELD_IPV6
 	     | IXGBE_MRQC_RSS_FIELD_IPV6_TCP
+#if 0
 	     | IXGBE_MRQC_RSS_FIELD_IPV6_UDP
-	     | IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP;
+	     | IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP
+#endif
+	;
 	IXGBE_WRITE_REG(hw, IXGBE_MRQC, mrqc);
 }
 



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