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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to