From: Thomas Monjalon Date: Fri, 19 Oct 2018 02:07:56 +0000 (+0200) Subject: ethdev: remove release function for secondary process X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=662dbc322d0467e0dcdcbbb2b2283a43a5b849e7;p=dpdk.git ethdev: remove release function for secondary process After previous changes, the function rte_eth_dev_release_port() can be used for primary or secondary process as well. The only difference with rte_eth_dev_release_port_secondary() is the shared lock used in rte_eth_dev_release_port(). The function rte_eth_dev_release_port_secondary() was recently added in 18.11 cycle. Signed-off-by: Thomas Monjalon Reviewed-by: Andrew Rybchenko --- diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index 2efc177257..95a98c6b80 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -990,7 +990,7 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev) eth_dev->data->mac_addrs = NULL; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + return rte_eth_dev_release_port(eth_dev); internals = eth_dev->data->dev_private; for (q = 0; q < internals->nb_queues; q++) { diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 77fb3dcd36..e7a4be921b 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -3267,7 +3267,7 @@ bond_remove(struct rte_vdev_device *dev) return -ENODEV; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + return rte_eth_dev_release_port(eth_dev); RTE_ASSERT(eth_dev->device == &dev->device); diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index f43ee7d2ed..a1e9970dfa 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -467,7 +467,7 @@ eth_kni_remove(struct rte_vdev_device *vdev) eth_dev->data->mac_addrs = NULL; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + return rte_eth_dev_release_port(eth_dev); eth_kni_dev_stop(eth_dev); diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c index b77283ae71..159c1c1fdd 100644 --- a/drivers/net/null/rte_eth_null.c +++ b/drivers/net/null/rte_eth_null.c @@ -679,11 +679,10 @@ rte_pmd_null_remove(struct rte_vdev_device *dev) if (eth_dev == NULL) return -1; - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + /* mac_addrs must not be freed alone because part of dev_private */ + eth_dev->data->mac_addrs = NULL; - /* mac_addrs must not be freed alone because part of dev_private */ - eth_dev->data->mac_addrs = NULL; rte_eth_dev_release_port(eth_dev); return 0; diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index 746507912b..0681486241 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -1129,7 +1129,7 @@ octeontx_remove(struct rte_vdev_device *dev) return -ENODEV; if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - rte_eth_dev_release_port_secondary(eth_dev); + rte_eth_dev_release_port(eth_dev); continue; } diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 1790a8064d..7bbe72e250 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -1228,13 +1228,13 @@ pmd_pcap_remove(struct rte_vdev_device *dev) if (eth_dev == NULL) return -1; - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + internals = eth_dev->data->dev_private; + if (internals != NULL && internals->phy_mac == 0) + /* not dynamically allocated, must not be freed */ + eth_dev->data->mac_addrs = NULL; + } - internals = eth_dev->data->dev_private; - if (internals != NULL && internals->phy_mac == 0) - /* not dynamically allocated, must not be freed */ - eth_dev->data->mac_addrs = NULL; rte_eth_dev_release_port(eth_dev); return 0; diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 4905c08fcb..e7817e8961 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -2265,7 +2265,7 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) eth_dev->data->mac_addrs = NULL; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + return rte_eth_dev_release_port(eth_dev); internals = eth_dev->data->dev_private; process_private = eth_dev->process_private; diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index 0ad9248076..b38a4b6b14 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -1446,7 +1446,7 @@ rte_pmd_vhost_remove(struct rte_vdev_device *dev) return -ENODEV; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(eth_dev); + return rte_eth_dev_release_port(eth_dev); eth_dev_close(eth_dev); diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 3bc05f4c3c..178800a5b6 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -362,18 +362,6 @@ rte_eth_dev_attach_secondary(const char *name) return eth_dev; } -int -rte_eth_dev_release_port_secondary(struct rte_eth_dev *eth_dev) -{ - if (eth_dev == NULL) - return -EINVAL; - - _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_DESTROY, NULL); - eth_dev->state = RTE_ETH_DEV_UNUSED; - - return 0; -} - int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev) { @@ -3591,9 +3579,6 @@ rte_eth_dev_destroy(struct rte_eth_dev *ethdev, return ret; } - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port_secondary(ethdev); - return rte_eth_dev_release_port(ethdev); } diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index 66274be7a2..c2ac263283 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -74,20 +74,6 @@ struct rte_eth_dev *rte_eth_dev_attach_secondary(const char *name); */ int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev); -/** - * @internal - * Release the specified ethdev port in the local process. - * Only set ethdev state to unused, but not reset shared data since - * it assume other processes is still using it. typically it is - * called by a secondary process. - * - * @param eth_dev - * Device to be detached. - * @return - * - 0 on success, negative on error - */ -int rte_eth_dev_release_port_secondary(struct rte_eth_dev *eth_dev); - /** * @internal * Release device queues and clear its configuration to force the user diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h index 8ff4f6b89e..23257e9862 100644 --- a/lib/librte_ethdev/rte_ethdev_pci.h +++ b/lib/librte_ethdev/rte_ethdev_pci.h @@ -135,13 +135,6 @@ rte_eth_dev_pci_allocate(struct rte_pci_device *dev, size_t private_data_size) static inline void rte_eth_dev_pci_release(struct rte_eth_dev *eth_dev) { - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - eth_dev->device = NULL; - eth_dev->intr_handle = NULL; - rte_eth_dev_release_port_secondary(eth_dev); - return; - } - eth_dev->device = NULL; eth_dev->intr_handle = NULL; diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map index 3a4dd47901..dfa122c1a0 100644 --- a/lib/librte_ethdev/rte_ethdev_version.map +++ b/lib/librte_ethdev/rte_ethdev_version.map @@ -220,13 +220,6 @@ DPDK_18.08 { } DPDK_18.05; -DPDK_18.11 { - global: - - rte_eth_dev_release_port_secondary; - -} DPDK_18.08; - EXPERIMENTAL { global: