net/ngbe: support MAC filters
[dpdk.git] / drivers / net / nfp / nfp_ethdev_vf.c
index 223142c..5557a1e 100644 (file)
  * Netronome vNIC  VF DPDK Poll-Mode Driver: Main entry point
  */
 
+#include <rte_alarm.h>
+
 #include "nfpcore/nfp_mip.h"
 #include "nfpcore/nfp_rtsym.h"
 
-#include "nfp_net_pmd.h"
+#include "nfp_common.h"
 #include "nfp_rxtx.h"
-#include "nfp_net_logs.h"
-#include "nfp_net_ctrl.h"
+#include "nfp_logs.h"
+#include "nfp_ctrl.h"
 
 static void nfp_netvf_read_mac(struct nfp_net_hw *hw);
 static int nfp_netvf_start(struct rte_eth_dev *dev);
@@ -49,7 +51,7 @@ static int
 nfp_netvf_start(struct rte_eth_dev *dev)
 {
        struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-       struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
+       struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
        uint32_t new_ctrl, update = 0;
        struct nfp_net_hw *hw;
        struct rte_eth_conf *dev_conf;
@@ -69,12 +71,13 @@ nfp_netvf_start(struct rte_eth_dev *dev)
 
        /* check and configure queue intr-vector mapping */
        if (dev->data->dev_conf.intr_conf.rxq != 0) {
-               if (intr_handle->type == RTE_INTR_HANDLE_UIO) {
+               if (rte_intr_type_get(intr_handle) ==
+                                               RTE_INTR_HANDLE_UIO) {
                        /*
                         * Better not to share LSC with RX interrupts.
                         * Unregistering LSC interrupt handler
                         */
-                       rte_intr_callback_unregister(&pci_dev->intr_handle,
+                       rte_intr_callback_unregister(pci_dev->intr_handle,
                                nfp_net_dev_interrupt_handler, (void *)dev);
 
                        if (dev->data->nb_rx_queues > 1) {
@@ -101,7 +104,7 @@ nfp_netvf_start(struct rte_eth_dev *dev)
        dev_conf = &dev->data->dev_conf;
        rxmode = &dev_conf->rxmode;
 
-       if (rxmode->mq_mode & ETH_MQ_RX_RSS) {
+       if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) {
                nfp_net_rss_config_default(dev);
                update |= NFP_NET_CFG_UPDATE_RSS;
                new_ctrl |= NFP_NET_CFG_CTRL_RSS;
@@ -223,13 +226,17 @@ nfp_netvf_close(struct rte_eth_dev *dev)
                nfp_net_reset_rx_queue(this_rx_q);
        }
 
-       rte_intr_disable(&pci_dev->intr_handle);
+       rte_intr_disable(pci_dev->intr_handle);
 
        /* unregister callback func from eal lib */
-       rte_intr_callback_unregister(&pci_dev->intr_handle,
+       rte_intr_callback_unregister(pci_dev->intr_handle,
                                     nfp_net_dev_interrupt_handler,
                                     (void *)dev);
 
+       /* Cancel possible impending LSC work here before releasing the port*/
+       rte_eal_alarm_cancel(nfp_net_dev_interrupt_delayed_handler,
+                            (void *)dev);
+
        /*
         * The ixgbe PMD driver disables the pcie master on the
         * device. The i40e does not...
@@ -439,7 +446,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 
        if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
                /* Registering LSC interrupt handler */
-               rte_intr_callback_register(&pci_dev->intr_handle,
+               rte_intr_callback_register(pci_dev->intr_handle,
                                           nfp_net_dev_interrupt_handler,
                                           (void *)eth_dev);
                /* Telling the firmware about the LSC interrupt entry */