ixgbe patch for link status updates 90/13090/3
authorMatthew Smith <mgsmith@netgate.com>
Fri, 15 Jun 2018 21:42:57 +0000 (16:42 -0500)
committerDamjan Marion <dmarion@me.com>
Sun, 17 Jun 2018 12:32:54 +0000 (12:32 +0000)
An x550 with SFP+ interfaces attached to some switches can
have problems bringing the port up.

After configuring the link, there is a wait for 500 ms for
the link to come up. Some switches don't bring their ports up
that quickly. So the link is never observed to come up and is
reconfigured again the next time dpdk_update_link_state() is
called. Subsequent attempts time out also indefinitely.

Instead of waiting through 5 iterations of a 100 ms delay, wait
through 10 iterations. The i40e PMD does this when updating
link status.

This issue & patch will be reported to Intel so this or
some better solution can be applied upstream in the future.

Change-Id: I16d706a2790e51d695edc43c0ca17f1eff1dcf5e
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
dpdk/Makefile
dpdk/dpdk-18.02.1_patches/0001-ixgbe-link-wait-longer.patch [new file with mode: 0644]

index c5d2a79..3563dce 100644 (file)
@@ -28,7 +28,7 @@ DPDK_FAILSAFE_PMD     ?= n
 B := $(DPDK_BUILD_DIR)
 I := $(DPDK_INSTALL_DIR)
 DPDK_VERSION ?= 18.02.1
-PKG_SUFFIX ?= vpp1
+PKG_SUFFIX ?= vpp2
 DPDK_BASE_URL ?= http://fast.dpdk.org/rel
 DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
 DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
diff --git a/dpdk/dpdk-18.02.1_patches/0001-ixgbe-link-wait-longer.patch b/dpdk/dpdk-18.02.1_patches/0001-ixgbe-link-wait-longer.patch
new file mode 100644 (file)
index 0000000..fb71e94
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
+index e7e9256e5..2fb0a072c 100644
+--- a/drivers/net/ixgbe/base/ixgbe_common.c
++++ b/drivers/net/ixgbe/base/ixgbe_common.c
+@@ -5296,7 +5296,7 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
+                * Section 73.10.2, we may have to wait up to 500ms if KR is
+                * attempted.  82599 uses the same timing for 10g SFI.
+                */
+-              for (i = 0; i < 5; i++) {
++              for (i = 0; i < 10; i++) {
+                       /* Wait for the link partner to also set speed */
+                       msec_delay(100);