From 95475a3661b95150c8d1e60a3942b91c2b5d06bc Mon Sep 17 00:00:00 2001 From: John Lo Date: Fri, 17 Mar 2017 18:05:35 -0400 Subject: Fix bonded interface name to use instance number starting from 0 With DPDK 17.02, bonded interface device_index does not start from 0 and may vary depends on the existence of other interfaces. Implement instance number for bonded interface so the interface name can make use of instance number starting from 0. Change-Id: Ia8eb7bd530446faa02ee7c7d1f6abdc22ac60b62 Signed-off-by: John Lo --- src/plugins/dpdk/device/dpdk.h | 4 ++-- src/plugins/dpdk/device/format.c | 4 ++-- src/plugins/dpdk/device/init.c | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src/plugins/dpdk') diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h index 6328d115..06d89adb 100644 --- a/src/plugins/dpdk/device/dpdk.h +++ b/src/plugins/dpdk/device/dpdk.h @@ -220,8 +220,8 @@ typedef struct dpdk_device_hqos_per_worker_thread_t *hqos_wt; dpdk_device_hqos_per_hqos_thread_t *hqos_ht; - /* af_packet */ - u8 af_packet_port_id; + /* af_packet or BondEthernet instance number */ + u8 port_id; struct rte_eth_link link; f64 time_last_link_update; diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index 25a8c5cb..a09a3f83 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -177,7 +177,7 @@ format_dpdk_device_name (u8 * s, va_list * args) break; case VNET_DPDK_PORT_TYPE_ETH_BOND: - return format (s, "BondEthernet%d", dm->devices[i].device_index); + return format (s, "BondEthernet%d", dm->devices[i].port_id); case VNET_DPDK_PORT_TYPE_ETH_SWITCH: device_name = "EthernetSwitch"; @@ -185,7 +185,7 @@ format_dpdk_device_name (u8 * s, va_list * args) case VNET_DPDK_PORT_TYPE_AF_PACKET: rte_eth_dev_info_get (i, &dev_info); - return format (s, "af_packet%d", dm->devices[i].af_packet_port_id); + return format (s, "af_packet%d", dm->devices[i].port_id); default: case VNET_DPDK_PORT_TYPE_UNKNOWN: diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index ca905326..145162eb 100755 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -516,6 +516,7 @@ dpdk_lib_init (dpdk_main_t * dm) u32 next_cpu = 0, next_hqos_cpu = 0; u8 af_packet_port_id = 0; + u8 bond_ether_port_id = 0; last_pci_addr.as_u32 = ~0; dm->input_cpu_first_index = 0; @@ -862,12 +863,13 @@ dpdk_lib_init (dpdk_main_t * dm) case VNET_DPDK_PMD_AF_PACKET: xd->port_type = VNET_DPDK_PORT_TYPE_AF_PACKET; - xd->af_packet_port_id = af_packet_port_id++; + xd->port_id = af_packet_port_id++; break; case VNET_DPDK_PMD_BOND: xd->flags |= DPDK_DEVICE_FLAG_PMD_SUPPORTS_PTYPE; xd->port_type = VNET_DPDK_PORT_TYPE_ETH_BOND; + xd->port_id = bond_ether_port_id++; break; default: -- cgit 1.2.3-korg