net/hns3: support device stats
[dpdk.git] / drivers / net / hns3 / hns3_ethdev_vf.c
index 7800938..0f0fd8c 100644 (file)
@@ -29,6 +29,7 @@
 #include "hns3_logs.h"
 #include "hns3_rxtx.h"
 #include "hns3_regs.h"
+#include "hns3_intr.h"
 #include "hns3_dcb.h"
 
 #define HNS3VF_KEEP_ALIVE_INTERVAL     2000000 /* us */
@@ -556,6 +557,9 @@ hns3vf_interrupt_handler(void *param)
        enum hns3vf_evt_cause event_cause;
        uint32_t clearval;
 
+       if (hw->irq_thread_id == 0)
+               hw->irq_thread_id = pthread_self();
+
        /* Disable interrupt */
        hns3vf_disable_irq0(hw);
 
@@ -948,12 +952,14 @@ hns3vf_init_vf(struct rte_eth_dev *eth_dev)
 
        hns3_set_default_rss_args(hw);
 
+       (void)hns3_stats_reset(eth_dev);
        return 0;
 
 err_get_config:
        hns3vf_disable_irq0(hw);
        rte_intr_disable(&pci_dev->intr_handle);
-
+       hns3_intr_unregister(&pci_dev->intr_handle, hns3vf_interrupt_handler,
+                            eth_dev);
 err_intr_callback_register:
        hns3_cmd_uninit(hw);
 
@@ -980,6 +986,8 @@ hns3vf_uninit_vf(struct rte_eth_dev *eth_dev)
        (void)hns3vf_set_promisc_mode(hw, false);
        hns3vf_disable_irq0(hw);
        rte_intr_disable(&pci_dev->intr_handle);
+       hns3_intr_unregister(&pci_dev->intr_handle, hns3vf_interrupt_handler,
+                            eth_dev);
        hns3_cmd_uninit(hw);
        hns3_cmd_destroy_queue(hw);
        hw->io_base = NULL;
@@ -1116,6 +1124,13 @@ static const struct eth_dev_ops hns3vf_eth_dev_ops = {
        .dev_stop           = hns3vf_dev_stop,
        .dev_close          = hns3vf_dev_close,
        .mtu_set            = hns3vf_dev_mtu_set,
+       .stats_get          = hns3_stats_get,
+       .stats_reset        = hns3_stats_reset,
+       .xstats_get         = hns3_dev_xstats_get,
+       .xstats_get_names   = hns3_dev_xstats_get_names,
+       .xstats_reset       = hns3_dev_xstats_reset,
+       .xstats_get_by_id   = hns3_dev_xstats_get_by_id,
+       .xstats_get_names_by_id = hns3_dev_xstats_get_names_by_id,
        .dev_infos_get      = hns3vf_dev_infos_get,
        .rx_queue_setup     = hns3_rx_queue_setup,
        .tx_queue_setup     = hns3_tx_queue_setup,