svn commit: r268915 - head/sys/dev/ixgbe

Adrian Chadd adrian at FreeBSD.org
Sun Jul 20 07:43:41 UTC 2014


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);
 }
 


More information about the svn-src-head mailing list