summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2017-03-17 18:05:35 -0400
committerJohn Lo <loj@cisco.com>2017-03-18 20:27:35 +0000
commit95475a3661b95150c8d1e60a3942b91c2b5d06bc (patch)
tree0f9c24d7169eabc50ca5ad9e413278d838f27dac
parent898273fbb588811824bb27ad0ef203d358a7121a (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.h4
-rw-r--r--src/plugins/dpdk/device/format.c4
-rwxr-xr-xsrc/plugins/dpdk/device/init.c4
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: