From 041881b11a979d680b916fbfff04f8c664f8b0b0 Mon Sep 17 00:00:00 2001 From: Rui Cai Date: Fri, 11 May 2018 23:38:41 +0000 Subject: dpdk: failsafe PMD initialization code Added code to initialize failsafe PMD This is part of initial effort to enable vpp running over dpdk on failsafe PMD in Microsoft Azure(4/4). Change-Id: Ia2469c7087ca4b5c7881dfb11ec5c4fcebaa1d04 Signed-off-by: Rui Cai --- src/plugins/dpdk/device/format.c | 2 +- src/plugins/dpdk/device/init.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index 4b8e3be5240..546f6cf56aa 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -373,7 +373,7 @@ format_dpdk_device_type (u8 * s, va_list * args) break; case VNET_DPDK_PMD_FAILSAFE: - dev_type = "Failsafe Ethernet"; + dev_type = "FailsafeEthernet"; break; case VNET_DPDK_PMD_LIOVF_ETHER: diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 2232b89e1b3..5bdb493d086 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -503,6 +503,11 @@ dpdk_lib_init (dpdk_main_t * dm) xd->port_type = VNET_DPDK_PORT_TYPE_ETH_VF; break; + case VNET_DPDK_PMD_FAILSAFE: + xd->port_type = VNET_DPDK_PORT_TYPE_FAILSAFE; + xd->port_conf.intr_conf.lsc = 1; + break; + default: xd->port_type = VNET_DPDK_PORT_TYPE_UNKNOWN; } @@ -632,6 +637,26 @@ dpdk_lib_init (dpdk_main_t * dm) } } } + + if (xd->pmd == VNET_DPDK_PMD_FAILSAFE) + { + /* failsafe device numerables are reported with active device only, + * need to query the mtu for current device setup to overwrite + * reported value. + */ + uint16_t dev_mtu; + if (!rte_eth_dev_get_mtu (i, &dev_mtu)) + { + mtu = dev_mtu; + max_rx_frame = mtu + sizeof (ethernet_header_t); + + if (xd->port_conf.rxmode.hw_strip_crc) + { + max_rx_frame += 4; + } + } + } + /*Set port rxmode config */ xd->port_conf.rxmode.max_rx_pkt_len = max_rx_frame; -- cgit 1.2.3-korg