From b3eeb6a5dd17627f56f5a9f299950c96f952e7a1 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 27 Nov 2017 19:55:14 +0100 Subject: [PATCH] dpdk: fix issue when tx offload stops working after MTU change Change-Id: I3713b4c460a3cd414b560e16aac054aee2e1181b Signed-off-by: Damjan Marion --- src/plugins/dpdk/device/common.c | 3 +++ src/plugins/dpdk/device/init.c | 20 +------------------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/src/plugins/dpdk/device/common.c b/src/plugins/dpdk/device/common.c index d488d69e553..e8f33cf22e0 100644 --- a/src/plugins/dpdk/device/common.c +++ b/src/plugins/dpdk/device/common.c @@ -41,6 +41,7 @@ dpdk_device_setup (dpdk_device_t * xd) dpdk_main_t *dm = &dpdk_main; vnet_main_t *vnm = vnet_get_main (); vnet_sw_interface_t *sw = vnet_get_sw_interface (vnm, xd->vlib_sw_if_index); + vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, xd->hw_if_index); int rv; int j; @@ -108,6 +109,8 @@ dpdk_device_setup (dpdk_device_t * xd) if (vec_len (xd->errors)) goto error; + rte_eth_dev_set_mtu (xd->device_index, hi->max_packet_bytes); + if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) dpdk_device_start (xd); diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 60f8ce67583..7a6c5cf8789 100755 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -103,26 +103,8 @@ dpdk_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, u32 flags) } else if (ETHERNET_INTERFACE_FLAG_CONFIG_MTU (flags)) { - int rv; - xd->port_conf.rxmode.max_rx_pkt_len = hi->max_packet_bytes; - - if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) - dpdk_device_stop (xd); - - rv = rte_eth_dev_configure - (xd->device_index, xd->rx_q_used, xd->tx_q_used, &xd->port_conf); - - if (rv < 0) - vlib_cli_output (vlib_get_main (), - "rte_eth_dev_configure[%d]: err %d", - xd->device_index, rv); - - rte_eth_dev_set_mtu (xd->device_index, hi->max_packet_bytes); - - if (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) - dpdk_device_start (xd); - + dpdk_device_setup (xd); } return old; } -- 2.16.6