ethdev: add device flag to bypass auto-filled queue xstats
[dpdk.git] / drivers / net / hns3 / hns3_ethdev_vf.c
index b203839..d1c3fb8 100644 (file)
@@ -1945,7 +1945,7 @@ hns3vf_unmap_rx_interrupt(struct rte_eth_dev *dev)
        }
 }
 
-static void
+static int
 hns3vf_dev_stop(struct rte_eth_dev *dev)
 {
        struct hns3_adapter *hns = dev->data->dev_private;
@@ -1973,6 +1973,8 @@ hns3vf_dev_stop(struct rte_eth_dev *dev)
        hns3_rx_scattered_reset(dev);
        rte_eal_alarm_cancel(hns3vf_service_handler, dev);
        rte_spinlock_unlock(&hw->lock);
+
+       return 0;
 }
 
 static int
@@ -1980,12 +1982,13 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev)
 {
        struct hns3_adapter *hns = eth_dev->data->dev_private;
        struct hns3_hw *hw = &hns->hw;
+       int ret = 0;
 
        if (rte_eal_process_type() != RTE_PROC_PRIMARY)
                return 0;
 
        if (hw->adapter_state == HNS3_NIC_STARTED)
-               hns3vf_dev_stop(eth_dev);
+               ret = hns3vf_dev_stop(eth_dev);
 
        hw->adapter_state = HNS3_NIC_CLOSING;
        hns3_reset_abort(hns);
@@ -2001,7 +2004,7 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev)
        hns3_mp_uninit_primary();
        hns3_warn(hw, "Close port %d finished", hw->data->port_id);
 
-       return 0;
+       return ret;
 }
 
 static int
@@ -2750,6 +2753,8 @@ hns3vf_dev_init(struct rte_eth_dev *eth_dev)
                return 0;
        }
 
+       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+
        ret = hns3_mp_init_primary();
        if (ret) {
                PMD_INIT_LOG(ERR,
@@ -2847,11 +2852,6 @@ hns3vf_dev_uninit(struct rte_eth_dev *eth_dev)
        if (rte_eal_process_type() != RTE_PROC_PRIMARY)
                return -EPERM;
 
-       eth_dev->dev_ops = NULL;
-       eth_dev->rx_pkt_burst = NULL;
-       eth_dev->tx_pkt_burst = NULL;
-       eth_dev->tx_pkt_prepare = NULL;
-
        if (hw->adapter_state < HNS3_NIC_CLOSING)
                hns3vf_dev_close(eth_dev);