net/sfc: support flow item IPv6 in transfer rules
[dpdk.git] / drivers / net / axgbe / axgbe_ethdev.c
index 458d64b..cfe6aba 100644 (file)
 #include "rte_time.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);
+static int  axgbe_dev_stop(struct rte_eth_dev *dev);
 static void axgbe_dev_interrupt_handler(void *param);
 static int axgbe_dev_close(struct rte_eth_dev *dev);
 static int axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev);
@@ -387,7 +386,7 @@ axgbe_dev_start(struct rte_eth_dev *dev)
 }
 
 /* Stop device: disable rx and tx functions to allow for reconfiguring. */
-static void
+static int
 axgbe_dev_stop(struct rte_eth_dev *dev)
 {
        struct axgbe_port *pdata = dev->data->dev_private;
@@ -397,7 +396,7 @@ axgbe_dev_stop(struct rte_eth_dev *dev)
        rte_intr_disable(&pdata->pci_dev->intr_handle);
 
        if (rte_bit_relaxed_get32(AXGBE_STOPPED, &pdata->dev_state))
-               return;
+               return 0;
 
        rte_bit_relaxed_set32(AXGBE_STOPPED, &pdata->dev_state);
        axgbe_dev_disable_tx(dev);
@@ -407,13 +406,7 @@ axgbe_dev_stop(struct rte_eth_dev *dev)
        pdata->hw_if.exit(pdata);
        memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link));
        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;
 }
 
@@ -1979,6 +1972,8 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
        if (rte_eal_process_type() != RTE_PROC_PRIMARY)
                return 0;
 
+       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+
        pdata = eth_dev->data->dev_private;
        /* initial state */
        rte_bit_relaxed_set32(AXGBE_DOWN, &pdata->dev_state);
@@ -2133,7 +2128,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;
 
@@ -2143,9 +2138,6 @@ eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev)
                return 0;
 
        pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
-       eth_dev->dev_ops = NULL;
-       eth_dev->rx_pkt_burst = NULL;
-       eth_dev->tx_pkt_burst = NULL;
        axgbe_dev_clear_queues(eth_dev);
 
        /* disable uio intr before callback unregister */
@@ -2166,7 +2158,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 = {