[05/20] net/axgbe: release port upon close
Checks
Commit Message
The flag RTE_ETH_DEV_CLOSE_REMOVE is set so all port resources
can be freed by rte_eth_dev_close().
Freeing of private port resources is moved
from the ".remove(device)" to the ".dev_close(port)" operation.
The ".dev_close" callback is also called as part of the ".remove" one.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/net/axgbe/axgbe_ethdev.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
@@ -10,7 +10,6 @@
#include "axgbe_regs.h"
static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev);
-static int eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev);
static int axgbe_dev_configure(struct rte_eth_dev *dev);
static int axgbe_dev_start(struct rte_eth_dev *dev);
static void axgbe_dev_stop(struct rte_eth_dev *dev);
@@ -378,14 +377,6 @@ axgbe_dev_stop(struct rte_eth_dev *dev)
rte_bit_relaxed_set32(AXGBE_DOWN, &pdata->dev_state);
}
-/* Clear all resources like TX/RX queues. */
-static int
-axgbe_dev_close(struct rte_eth_dev *dev)
-{
- axgbe_dev_clear_queues(dev);
- return 0;
-}
-
static int
axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev)
{
@@ -1632,6 +1623,7 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
int ret;
eth_dev->dev_ops = &axgbe_eth_dev_ops;
+ eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
/*
* For secondary processes, we don't initialise any further as primary
@@ -1794,7 +1786,7 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
}
static int
-eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev)
+axgbe_dev_close(struct rte_eth_dev *eth_dev)
{
struct rte_pci_device *pci_dev;
@@ -1827,7 +1819,7 @@ static int eth_axgbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
static int eth_axgbe_pci_remove(struct rte_pci_device *pci_dev)
{
- return rte_eth_dev_pci_generic_remove(pci_dev, eth_axgbe_dev_uninit);
+ return rte_eth_dev_pci_generic_remove(pci_dev, axgbe_dev_close);
}
static struct rte_pci_driver rte_axgbe_pmd = {