int rte_eth_bond_free(const char *name) { struct rte_eth_dev *eth_dev = NULL; /* now free all data allocation - for eth_dev structure, * dummy pci driver and internal (private) data */ /* find an ethdev entry */ eth_dev = rte_eth_dev_allocated(name); if (eth_dev == NULL) return -ENODEV; if (eth_dev->data->dev_started == 1) { bond_ethdev_stop(eth_dev); bond_ethdev_close(eth_dev); } eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; rte_free(eth_dev->pci_dev); rte_free(eth_dev->data->dev_private); rte_free(eth_dev->data->mac_addrs); rte_eth_dev_release_port(eth_dev); return 0; }
int rte_eth_bond_free(const char *name) { struct rte_eth_dev *eth_dev = NULL; struct bond_dev_private *internals; /* now free all data allocation - for eth_dev structure, * dummy pci driver and internal (private) data */ /* find an ethdev entry */ eth_dev = rte_eth_dev_allocated(name); if (eth_dev == NULL) return -ENODEV; internals = eth_dev->data->dev_private; if (internals->slave_count != 0) return -EBUSY; if (eth_dev->data->dev_started == 1) { bond_ethdev_stop(eth_dev); bond_ethdev_close(eth_dev); } eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; internals = eth_dev->data->dev_private; rte_bitmap_free(internals->vlan_filter_bmp); rte_free(internals->vlan_filter_bmpmem); rte_free(eth_dev->data->dev_private); rte_free(eth_dev->data->mac_addrs); rte_eth_dev_release_port(eth_dev); return 0; }