drivers/net: enable device detach on secondary process
With the enabling for hotplug on multi-process, rte_eth_dev_pci_generic_remove can be used to detach the device from a secondary process also. But we need to take care of the uninit callback parameter to make sure it handles the secondary case correctly. Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
parent
4852aa8f6e
commit
8f62ec3861
@ -3542,7 +3542,11 @@ static int bnxt_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
|
||||
|
||||
static int bnxt_pci_remove(struct rte_pci_device *pci_dev)
|
||||
{
|
||||
return rte_eth_dev_pci_generic_remove(pci_dev, bnxt_dev_uninit);
|
||||
if (rte_eal_process_type() == RTE_PROC_PRIMARY)
|
||||
return rte_eth_dev_pci_generic_remove(pci_dev,
|
||||
bnxt_dev_uninit);
|
||||
else
|
||||
return rte_eth_dev_pci_generic_remove(pci_dev, NULL);
|
||||
}
|
||||
|
||||
static struct rte_pci_driver bnxt_rte_pmd = {
|
||||
|
@ -1703,7 +1703,7 @@ static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
|
||||
(struct ena_adapter *)(eth_dev->data->dev_private);
|
||||
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return -EPERM;
|
||||
return 0;
|
||||
|
||||
if (adapter->state != ENA_ADAPTER_STATE_CLOSED)
|
||||
ena_close(eth_dev);
|
||||
|
@ -2038,7 +2038,7 @@ lio_eth_dev_uninit(struct rte_eth_dev *eth_dev)
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return -EPERM;
|
||||
return 0;
|
||||
|
||||
/* lio_free_sc_buffer_pool */
|
||||
lio_free_sc_buffer_pool(lio_dev);
|
||||
|
@ -1697,7 +1697,7 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev)
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
if (rte_eal_process_type() == RTE_PROC_SECONDARY)
|
||||
return -EPERM;
|
||||
return 0;
|
||||
|
||||
virtio_dev_stop(eth_dev);
|
||||
virtio_dev_close(eth_dev);
|
||||
|
Loading…
x
Reference in New Issue
Block a user