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>