diff options
author | John Lo <loj@cisco.com> | 2017-03-17 18:05:35 -0400 |
---|---|---|
committer | John Lo <loj@cisco.com> | 2017-03-18 20:27:35 +0000 |
commit | 95475a3661b95150c8d1e60a3942b91c2b5d06bc (patch) | |
tree | 0f9c24d7169eabc50ca5ad9e413278d838f27dac | |
parent | 898273fbb588811824bb27ad0ef203d358a7121a (diff) |
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 <loj@cisco.com>
-rw-r--r-- | src/plugins/dpdk/device/dpdk.h | 4 | ||||
-rw-r--r-- | src/plugins/dpdk/device/format.c | 4 | ||||
-rwxr-xr-x | src/plugins/dpdk/device/init.c | 4 |
3 files changed, 7 insertions, 5 deletions
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: |