summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2014-10-11 22:10:39 +0000
committeradrian <adrian@FreeBSD.org>2014-10-11 22:10:39 +0000
commitd090f32bd0e9bd880feb7298f5513d9a884d24c6 (patch)
treeb10193624da1eb38c429cebead14df894c013fbf
parentd927fae9b728ec0b8f05bde21ec30ca7f0317e80 (diff)
downloadFreeBSD-src-d090f32bd0e9bd880feb7298f5513d9a884d24c6.zip
FreeBSD-src-d090f32bd0e9bd880feb7298f5513d9a884d24c6.tar.gz
MFC r271649 - Disable flow-director support until it's been debugged
and verified. The flowdirector feature shares on-chip memory with other things such as the RX buffers. In theory it should be configured in a way that doesn't interfere with the rest of operation. In practice, the RX buffer calculation didn't take the flow-director allocation into account and there'd be overlap. This lead to various garbage frames being received containing what looks like internal NIC state. What _I_ saw was traffic ending up in the wrong RX queues. If I was doing a UDP traffic test with only one NIC ring receiving traffic, everything is fine. If I fired up a second UDP stream which came in on another ring, there'd be a few percent of traffic from both rings ending up in the wrong ring. Ie, the RSS hash would indicate it was supposed to come in ring X, but it'd come in ring Y. However, when the allocation was fixed up, the developers at Verisign still saw traffic stalls. The flowdirector feature ends up fiddling with the NIC to do various attempts at load balancing connections by populating flow table rules based on sampled traffic. It's likely that all of that has to be carefully reviewed and made less "magic". So for now the flow director feature is disabled (which fixes both what I was seeing and what they were seeing) until it's all much more debugged and verified. Tested: * (me) 82599EB 2x10G NIC, RSS UDP testing. * (verisign) not sure on the NIC (but likely 82599), 100k-200k/sec TCP transaction tests. Submitted by: Marc De La Gueronniere <mdelagueronniere@verisign.com> Sponsored by: Verisign, Inc.
-rw-r--r--sys/conf/files2
-rw-r--r--sys/modules/ixgbe/Makefile2
2 files changed, 2 insertions, 2 deletions
diff --git a/sys/conf/files b/sys/conf/files
index 49527a7..d7bfa83 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -1705,7 +1705,7 @@ dev/ixgb/if_ixgb.c optional ixgb
dev/ixgb/ixgb_ee.c optional ixgb
dev/ixgb/ixgb_hw.c optional ixgb
dev/ixgbe/ixgbe.c optional ixgbe inet \
- compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP -DIXGBE_FDIR"
+ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP"
dev/ixgbe/ixv.c optional ixgbe inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_phy.c optional ixgbe inet \
diff --git a/sys/modules/ixgbe/Makefile b/sys/modules/ixgbe/Makefile
index 68d887e..22aadb5 100644
--- a/sys/modules/ixgbe/Makefile
+++ b/sys/modules/ixgbe/Makefile
@@ -12,7 +12,7 @@ SRCS += ixgbe.c ixv.c
SRCS += ixgbe_common.c ixgbe_api.c ixgbe_phy.c ixgbe_mbx.c ixgbe_vf.c
SRCS += ixgbe_dcb.c ixgbe_dcb_82598.c ixgbe_dcb_82599.c
SRCS += ixgbe_82599.c ixgbe_82598.c ixgbe_x540.c
-CFLAGS+= -I${.CURDIR}/../../dev/ixgbe -DSMP -DIXGBE_FDIR
+CFLAGS+= -I${.CURDIR}/../../dev/ixgbe -DSMP
.if !defined(KERNBUILDDIR)
.if ${MK_INET_SUPPORT} != "no"
OpenPOWER on IntegriCloud