summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk/device/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/dpdk/device/init.c')
-rw-r--r--src/plugins/dpdk/device/init.c124
1 files changed, 1 insertions, 123 deletions
diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c
index 7e5cc08f597..fccefb17b4d 100644
--- a/src/plugins/dpdk/device/init.c
+++ b/src/plugins/dpdk/device/init.c
@@ -219,7 +219,6 @@ dpdk_lib_init (dpdk_main_t * dm)
u32 next_hqos_cpu = 0;
u8 af_packet_instance_num = 0;
- u8 bond_ether_instance_num = 0;
last_pci_addr.as_u32 = ~0;
dm->hqos_cpu_first_index = 0;
@@ -291,7 +290,7 @@ dpdk_lib_init (dpdk_main_t * dm)
pci_dev = dpdk_get_pci_device (&dev_info);
- if (pci_dev) /* bonded interface has no pci info */
+ if (pci_dev)
{
pci_addr.domain = pci_dev->addr.domain;
pci_addr.bus = pci_dev->addr.bus;
@@ -513,11 +512,6 @@ dpdk_lib_init (dpdk_main_t * dm)
xd->af_packet_instance_num = af_packet_instance_num++;
break;
- case VNET_DPDK_PMD_BOND:
- xd->port_type = VNET_DPDK_PORT_TYPE_ETH_BOND;
- xd->bond_instance_num = bond_ether_instance_num++;
- break;
-
case VNET_DPDK_PMD_VIRTIO_USER:
xd->port_type = VNET_DPDK_PORT_TYPE_VIRTIO_USER;
break;
@@ -1505,14 +1499,6 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
ed->new_link_state = (u8) xd->link.link_status;
}
- if ((xd->flags & (DPDK_DEVICE_FLAG_ADMIN_UP | DPDK_DEVICE_FLAG_BOND_SLAVE))
- && ((xd->link.link_status != 0) ^
- vnet_hw_interface_is_link_up (vnm, xd->hw_if_index)))
- {
- hw_flags_chg = 1;
- hw_flags |= (xd->link.link_status ? VNET_HW_INTERFACE_FLAG_LINK_UP : 0);
- }
-
if (hw_flags_chg || (xd->link.link_duplex != prev_link.link_duplex))
{
hw_flags_chg = 1;
@@ -1561,13 +1547,9 @@ static uword
dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
{
clib_error_t *error;
- vnet_main_t *vnm = vnet_get_main ();
dpdk_main_t *dm = &dpdk_main;
- ethernet_main_t *em = &ethernet_main;
dpdk_device_t *xd;
vlib_thread_main_t *tm = vlib_get_thread_main ();
- int i;
- int j;
error = dpdk_lib_init (dm);
@@ -1582,110 +1564,6 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
dpdk_update_link_state (xd, now);
}
- {
- /*
- * Extra set up for bond interfaces:
- * 1. Setup MACs for bond interfaces and their slave links which was set
- * in dpdk_device_setup() but needs to be done again here to take
- * effect.
- * 2. Set up info and register slave link state change callback handling.
- * 3. Set up info for bond interface related CLI support.
- */
- int nports = rte_eth_dev_count_avail ();
- if (nports > 0)
- {
- /* *INDENT-OFF* */
- RTE_ETH_FOREACH_DEV(i)
- {
- xd = NULL;
- for (j = 0; j < nports; j++)
- {
- if (dm->devices[j].port_id == i)
- {
- xd = &dm->devices[j];
- }
- }
- if (xd != NULL && xd->pmd == VNET_DPDK_PMD_BOND)
- {
- u8 addr[6];
- dpdk_portid_t slink[16];
- int nlink = rte_eth_bond_slaves_get (i, slink, 16);
- if (nlink > 0)
- {
- vnet_hw_interface_t *bhi;
- ethernet_interface_t *bei;
- int rv;
-
- /* Get MAC of 1st slave link */
- rte_eth_macaddr_get
- (slink[0], (struct ether_addr *) addr);
-
- /* Set MAC of bounded interface to that of 1st slave link */
- dpdk_log_info ("Set MAC for bond port %d BondEthernet%d",
- i, xd->bond_instance_num);
- rv = rte_eth_bond_mac_address_set
- (i, (struct ether_addr *) addr);
- if (rv)
- dpdk_log_warn ("Set MAC addr failure rv=%d", rv);
-
- /* Populate MAC of bonded interface in VPP hw tables */
- bhi = vnet_get_hw_interface
- (vnm, dm->devices[i].hw_if_index);
- bei = pool_elt_at_index
- (em->interfaces, bhi->hw_instance);
- clib_memcpy (bhi->hw_address, addr, 6);
- clib_memcpy (bei->address, addr, 6);
-
- /* Init l3 packet size allowed on bonded interface */
- bhi->max_packet_bytes = ETHERNET_MAX_PACKET_BYTES;
- while (nlink >= 1)
- { /* for all slave links */
- int slave = slink[--nlink];
- dpdk_device_t *sdev = &dm->devices[slave];
- vnet_hw_interface_t *shi;
- vnet_sw_interface_t *ssi;
- ethernet_interface_t *sei;
- /* Add MAC to all slave links except the first one */
- if (nlink)
- {
- dpdk_log_info ("Add MAC for slave port %d",
- slave);
- rv = rte_eth_dev_mac_addr_add
- (slave, (struct ether_addr *) addr, 0);
- if (rv)
- dpdk_log_warn ("Add MAC addr failure rv=%d",
- rv);
- }
- /* Setup slave link state change callback handling */
- rte_eth_dev_callback_register
- (slave, RTE_ETH_EVENT_INTR_LSC,
- dpdk_port_state_callback, NULL);
- dpdk_device_t *sxd = &dm->devices[slave];
- sxd->flags |= DPDK_DEVICE_FLAG_BOND_SLAVE;
- sxd->bond_port = i;
- /* Set slaves bitmap for bonded interface */
- bhi->bond_info = clib_bitmap_set
- (bhi->bond_info, sdev->hw_if_index, 1);
- /* Set MACs and slave link flags on slave interface */
- shi = vnet_get_hw_interface (vnm, sdev->hw_if_index);
- ssi = vnet_get_sw_interface (vnm, sdev->sw_if_index);
- sei = pool_elt_at_index
- (em->interfaces, shi->hw_instance);
- shi->bond_info = VNET_HW_INTERFACE_BOND_INFO_SLAVE;
- ssi->flags |= VNET_SW_INTERFACE_FLAG_BOND_SLAVE;
- clib_memcpy (shi->hw_address, addr, 6);
- clib_memcpy (sei->address, addr, 6);
- /* Set l3 packet size allowed as the lowest of slave */
- if (bhi->max_packet_bytes > shi->max_packet_bytes)
- bhi->max_packet_bytes = shi->max_packet_bytes;
- }
- }
- }
- }
- /* *INDENT-ON* */
- }
- }
-
while (1)
{
/*