net/softnic: fix useless address check
[dpdk.git] / drivers / net / enetc / enetc_ethdev.c
index c6fb427..246aff4 100644 (file)
@@ -3,7 +3,7 @@
  */
 
 #include <stdbool.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
 #include <rte_random.h>
 #include <dpaax_iova_table.h>
 
@@ -45,7 +45,7 @@ enetc_dev_start(struct rte_eth_dev *dev)
        return 0;
 }
 
-static void
+static int
 enetc_dev_stop(struct rte_eth_dev *dev)
 {
        struct enetc_eth_hw *hw =
@@ -54,6 +54,7 @@ enetc_dev_stop(struct rte_eth_dev *dev)
        uint32_t val;
 
        PMD_INIT_FUNC_TRACE();
+       dev->data->dev_started = 0;
        /* Disable port */
        val = enetc_port_rd(enetc_hw, ENETC_PMR);
        enetc_port_wr(enetc_hw, ENETC_PMR, val & (~ENETC_PMR_EN));
@@ -61,6 +62,8 @@ enetc_dev_stop(struct rte_eth_dev *dev)
        val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG);
        enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG,
                      val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN)));
+
+       return 0;
 }
 
 static const uint32_t *
@@ -322,8 +325,10 @@ fail:
 }
 
 static void
-enetc_tx_queue_release(void *txq)
+enetc_tx_queue_release(struct rte_eth_dev *dev, uint16_t qid)
 {
+       void *txq = dev->data->tx_queues[qid];
+
        if (txq == NULL)
                return;
 
@@ -470,8 +475,10 @@ fail:
 }
 
 static void
-enetc_rx_queue_release(void *rxq)
+enetc_rx_queue_release(struct rte_eth_dev *dev, uint16_t qid)
 {
+       void *rxq = dev->data->rx_queues[qid];
+
        if (rxq == NULL)
                return;
 
@@ -545,25 +552,34 @@ enetc_stats_reset(struct rte_eth_dev *dev)
        return 0;
 }
 
-static void
+static int
 enetc_dev_close(struct rte_eth_dev *dev)
 {
        uint16_t i;
+       int ret;
 
        PMD_INIT_FUNC_TRACE();
-       enetc_dev_stop(dev);
+       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+               return 0;
+
+       ret = enetc_dev_stop(dev);
 
        for (i = 0; i < dev->data->nb_rx_queues; i++) {
-               enetc_rx_queue_release(dev->data->rx_queues[i]);
+               enetc_rx_queue_release(dev, i);
                dev->data->rx_queues[i] = NULL;
        }
        dev->data->nb_rx_queues = 0;
 
        for (i = 0; i < dev->data->nb_tx_queues; i++) {
-               enetc_tx_queue_release(dev->data->tx_queues[i]);
+               enetc_tx_queue_release(dev, i);
                dev->data->tx_queues[i] = NULL;
        }
        dev->data->nb_tx_queues = 0;
+
+       if (rte_eal_iova_mode() == RTE_IOVA_PA)
+               dpaax_iova_table_depopulate();
+
+       return ret;
 }
 
 static int
@@ -665,7 +681,7 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
                return -EINVAL;
        }
 
-       if (frame_size > RTE_ETHER_MAX_LEN)
+       if (frame_size > ENETC_ETH_MAX_LEN)
                dev->data->dev_conf.rxmode.offloads &=
                                                DEV_RX_OFFLOAD_JUMBO_FRAME;
        else
@@ -873,6 +889,8 @@ enetc_dev_init(struct rte_eth_dev *eth_dev)
        eth_dev->rx_pkt_burst = &enetc_recv_pkts;
        eth_dev->tx_pkt_burst = &enetc_xmit_pkts;
 
+       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+
        /* Retrieving and storing the HW base address of device */
        hw->hw.reg = (void *)pci_dev->mem_resource[0].addr;
        hw->device_id = pci_dev->id.device_id;
@@ -914,14 +932,11 @@ enetc_dev_init(struct rte_eth_dev *eth_dev)
 }
 
 static int
-enetc_dev_uninit(struct rte_eth_dev *eth_dev __rte_unused)
+enetc_dev_uninit(struct rte_eth_dev *eth_dev)
 {
        PMD_INIT_FUNC_TRACE();
 
-       if (rte_eal_iova_mode() == RTE_IOVA_PA)
-               dpaax_iova_table_depopulate();
-
-       return 0;
+       return enetc_dev_close(eth_dev);
 }
 
 static int
@@ -949,4 +964,4 @@ static struct rte_pci_driver rte_enetc_pmd = {
 RTE_PMD_REGISTER_PCI(net_enetc, rte_enetc_pmd);
 RTE_PMD_REGISTER_PCI_TABLE(net_enetc, pci_id_enetc_map);
 RTE_PMD_REGISTER_KMOD_DEP(net_enetc, "* vfio-pci");
-RTE_LOG_REGISTER(enetc_logtype_pmd, pmd.net.enetc, NOTICE);
+RTE_LOG_REGISTER_DEFAULT(enetc_logtype_pmd, NOTICE);