net/mlx5: fix software parsing support query
[dpdk.git] / drivers / net / ixgbe / ixgbe_ethdev.c
index 0f065bb..4dbe049 100644 (file)
@@ -10,7 +10,6 @@
 #include <unistd.h>
 #include <stdarg.h>
 #include <inttypes.h>
-#include <netinet/in.h>
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
 #include <rte_common.h>
 #include <rte_eal.h>
 #include <rte_alarm.h>
 #include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
 #include <rte_malloc.h>
 #include <rte_random.h>
 #include <rte_dev.h>
 #include <rte_hash_crc.h>
-#ifdef RTE_LIBRTE_SECURITY
+#ifdef RTE_LIB_SECURITY
 #include <rte_security_driver.h>
 #endif
 
@@ -46,6 +45,7 @@
 #include "ixgbe_rxtx.h"
 #include "base/ixgbe_type.h"
 #include "base/ixgbe_phy.h"
+#include "base/ixgbe_osdep.h"
 #include "ixgbe_regs.h"
 
 /*
@@ -142,13 +142,13 @@ static int ixgbe_fdir_filter_uninit(struct rte_eth_dev *eth_dev);
 static int ixgbe_l2_tn_filter_init(struct rte_eth_dev *eth_dev);
 static int ixgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev);
 static int ixgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev);
-static int  ixgbe_dev_configure(struct rte_eth_dev *dev);
-static int  ixgbe_dev_start(struct rte_eth_dev *dev);
-static void ixgbe_dev_stop(struct rte_eth_dev *dev);
-static int  ixgbe_dev_set_link_up(struct rte_eth_dev *dev);
-static int  ixgbe_dev_set_link_down(struct rte_eth_dev *dev);
-static void ixgbe_dev_close(struct rte_eth_dev *dev);
-static int  ixgbe_dev_reset(struct rte_eth_dev *dev);
+static int ixgbe_dev_configure(struct rte_eth_dev *dev);
+static int ixgbe_dev_start(struct rte_eth_dev *dev);
+static int ixgbe_dev_stop(struct rte_eth_dev *dev);
+static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev);
+static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev);
+static int ixgbe_dev_close(struct rte_eth_dev *dev);
+static int ixgbe_dev_reset(struct rte_eth_dev *dev);
 static int ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev);
 static int ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev);
 static int ixgbe_dev_allmulticast_enable(struct rte_eth_dev *dev);
@@ -173,8 +173,8 @@ static int ixgbevf_dev_xstats_get_names(struct rte_eth_dev *dev,
        struct rte_eth_xstat_name *xstats_names, unsigned limit);
 static int ixgbe_dev_xstats_get_names_by_id(
        struct rte_eth_dev *dev,
-       struct rte_eth_xstat_name *xstats_names,
        const uint64_t *ids,
+       struct rte_eth_xstat_name *xstats_names,
        unsigned int limit);
 static int ixgbe_dev_queue_stats_mapping_set(struct rte_eth_dev *eth_dev,
                                             uint16_t queue_id,
@@ -250,8 +250,8 @@ static int  ixgbevf_dev_configure(struct rte_eth_dev *dev);
 static int  ixgbevf_dev_start(struct rte_eth_dev *dev);
 static int ixgbevf_dev_link_update(struct rte_eth_dev *dev,
                                   int wait_to_complete);
-static void ixgbevf_dev_stop(struct rte_eth_dev *dev);
-static void ixgbevf_dev_close(struct rte_eth_dev *dev);
+static int ixgbevf_dev_stop(struct rte_eth_dev *dev);
+static int ixgbevf_dev_close(struct rte_eth_dev *dev);
 static int  ixgbevf_dev_reset(struct rte_eth_dev *dev);
 static void ixgbevf_intr_disable(struct rte_eth_dev *dev);
 static void ixgbevf_intr_enable(struct rte_eth_dev *dev);
@@ -281,11 +281,6 @@ static int ixgbevf_dev_allmulticast_disable(struct rte_eth_dev *dev);
 static int ixgbe_uc_hash_table_set(struct rte_eth_dev *dev, struct
                rte_ether_addr * mac_addr, uint8_t on);
 static int ixgbe_uc_all_hash_table_set(struct rte_eth_dev *dev, uint8_t on);
-static int ixgbe_mirror_rule_set(struct rte_eth_dev *dev,
-               struct rte_eth_mirror_conf *mirror_conf,
-               uint8_t rule_id, uint8_t on);
-static int ixgbe_mirror_rule_reset(struct rte_eth_dev *dev,
-               uint8_t rule_id);
 static int ixgbe_dev_rx_queue_intr_enable(struct rte_eth_dev *dev,
                                          uint16_t queue_id);
 static int ixgbe_dev_rx_queue_intr_disable(struct rte_eth_dev *dev,
@@ -300,29 +295,12 @@ static int ixgbevf_add_mac_addr(struct rte_eth_dev *dev,
 static void ixgbevf_remove_mac_addr(struct rte_eth_dev *dev, uint32_t index);
 static int ixgbevf_set_default_mac_addr(struct rte_eth_dev *dev,
                                             struct rte_ether_addr *mac_addr);
-static int ixgbe_syn_filter_get(struct rte_eth_dev *dev,
-                       struct rte_eth_syn_filter *filter);
-static int ixgbe_syn_filter_handle(struct rte_eth_dev *dev,
-                       enum rte_filter_op filter_op,
-                       void *arg);
 static int ixgbe_add_5tuple_filter(struct rte_eth_dev *dev,
                        struct ixgbe_5tuple_filter *filter);
 static void ixgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
                        struct ixgbe_5tuple_filter *filter);
-static int ixgbe_ntuple_filter_handle(struct rte_eth_dev *dev,
-                               enum rte_filter_op filter_op,
-                               void *arg);
-static int ixgbe_get_ntuple_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_ntuple_filter *filter);
-static int ixgbe_ethertype_filter_handle(struct rte_eth_dev *dev,
-                               enum rte_filter_op filter_op,
-                               void *arg);
-static int ixgbe_get_ethertype_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_ethertype_filter *filter);
-static int ixgbe_dev_filter_ctrl(struct rte_eth_dev *dev,
-                    enum rte_filter_type filter_type,
-                    enum rte_filter_op filter_op,
-                    void *arg);
+static int ixgbe_dev_flow_ops_get(struct rte_eth_dev *dev,
+                                 const struct rte_flow_ops **ops);
 static int ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu);
 
 static int ixgbe_dev_set_mc_addr_list(struct rte_eth_dev *dev,
@@ -363,17 +341,6 @@ static int ixgbe_timesync_write_time(struct rte_eth_dev *dev,
                                   const struct timespec *timestamp);
 static void ixgbevf_dev_interrupt_handler(void *param);
 
-static int ixgbe_dev_l2_tunnel_eth_type_conf
-       (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel);
-static int ixgbe_dev_l2_tunnel_offload_set
-       (struct rte_eth_dev *dev,
-        struct rte_eth_l2_tunnel_conf *l2_tunnel,
-        uint32_t mask,
-        uint8_t en);
-static int ixgbe_dev_l2_tunnel_filter_handle(struct rte_eth_dev *dev,
-                                            enum rte_filter_op filter_op,
-                                            void *arg);
-
 static int ixgbe_dev_udp_tunnel_port_add(struct rte_eth_dev *dev,
                                         struct rte_eth_udp_tunnel *udp_tunnel);
 static int ixgbe_dev_udp_tunnel_port_del(struct rte_eth_dev *dev,
@@ -557,14 +524,12 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
        .mac_addr_set         = ixgbe_set_default_mac_addr,
        .uc_hash_table_set    = ixgbe_uc_hash_table_set,
        .uc_all_hash_table_set  = ixgbe_uc_all_hash_table_set,
-       .mirror_rule_set      = ixgbe_mirror_rule_set,
-       .mirror_rule_reset    = ixgbe_mirror_rule_reset,
        .set_queue_rate_limit = ixgbe_set_queue_rate_limit,
        .reta_update          = ixgbe_dev_rss_reta_update,
        .reta_query           = ixgbe_dev_rss_reta_query,
        .rss_hash_update      = ixgbe_dev_rss_hash_update,
        .rss_hash_conf_get    = ixgbe_dev_rss_hash_conf_get,
-       .filter_ctrl          = ixgbe_dev_filter_ctrl,
+       .flow_ops_get         = ixgbe_dev_flow_ops_get,
        .set_mc_addr_list     = ixgbe_dev_set_mc_addr_list,
        .rxq_info_get         = ixgbe_rxq_info_get,
        .txq_info_get         = ixgbe_txq_info_get,
@@ -582,12 +547,11 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
        .timesync_adjust_time = ixgbe_timesync_adjust_time,
        .timesync_read_time   = ixgbe_timesync_read_time,
        .timesync_write_time  = ixgbe_timesync_write_time,
-       .l2_tunnel_eth_type_conf = ixgbe_dev_l2_tunnel_eth_type_conf,
-       .l2_tunnel_offload_set   = ixgbe_dev_l2_tunnel_offload_set,
        .udp_tunnel_port_add  = ixgbe_dev_udp_tunnel_port_add,
        .udp_tunnel_port_del  = ixgbe_dev_udp_tunnel_port_del,
        .tm_ops_get           = ixgbe_tm_ops_get,
        .tx_done_cleanup      = ixgbe_dev_tx_done_cleanup,
+       .get_monitor_addr     = ixgbe_get_monitor_addr,
 };
 
 /*
@@ -634,6 +598,7 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = {
        .rss_hash_update      = ixgbe_dev_rss_hash_update,
        .rss_hash_conf_get    = ixgbe_dev_rss_hash_conf_get,
        .tx_done_cleanup      = ixgbe_dev_tx_done_cleanup,
+       .get_monitor_addr     = ixgbe_get_monitor_addr,
 };
 
 /* store statistics names and its offset in stats structure */
@@ -1077,7 +1042,7 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
                IXGBE_DEV_PRIVATE_TO_BW_CONF(eth_dev->data->dev_private);
        uint32_t ctrl_ext;
        uint16_t csum;
-       int diag, i;
+       int diag, i, ret;
 
        PMD_INIT_FUNC_TRACE();
 
@@ -1085,7 +1050,6 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
 
        eth_dev->dev_ops = &ixgbe_eth_dev_ops;
        eth_dev->rx_queue_count       = ixgbe_dev_rx_queue_count;
-       eth_dev->rx_descriptor_done   = ixgbe_dev_rx_descriptor_done;
        eth_dev->rx_descriptor_status = ixgbe_dev_rx_descriptor_status;
        eth_dev->tx_descriptor_status = ixgbe_dev_tx_descriptor_status;
        eth_dev->rx_pkt_burst = &ixgbe_recv_pkts;
@@ -1118,6 +1082,7 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
 
        rte_atomic32_clear(&ad->link_thread_running);
        rte_eth_copy_pci_info(eth_dev, pci_dev);
+       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
 
        /* Vendor and Device ID need to be set before init of shared code */
        hw->device_id = pci_dev->id.device_id;
@@ -1151,7 +1116,7 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
        /* Unlock any pending hardware semaphore */
        ixgbe_swfw_lock_reset(hw);
 
-#ifdef RTE_LIBRTE_SECURITY
+#ifdef RTE_LIB_SECURITY
        /* Initialize security_ctx only for primary process*/
        if (ixgbe_ipsec_ctx_create(eth_dev))
                return -ENOMEM;
@@ -1245,14 +1210,11 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
                PMD_INIT_LOG(ERR,
                             "Failed to allocate %d bytes needed to store MAC addresses",
                             RTE_ETHER_ADDR_LEN * IXGBE_VMDQ_NUM_UC_MAC);
+               rte_free(eth_dev->data->mac_addrs);
+               eth_dev->data->mac_addrs = NULL;
                return -ENOMEM;
        }
 
-       /* Pass the information to the rte_eth_dev_close() that it should also
-        * release the private port resources.
-        */
-       eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
-
        /* initialize the vfta */
        memset(shadow_vfta, 0, sizeof(*shadow_vfta));
 
@@ -1260,7 +1222,14 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
        memset(hwstrip, 0, sizeof(*hwstrip));
 
        /* initialize PF if max_vfs not zero */
-       ixgbe_pf_host_init(eth_dev);
+       ret = ixgbe_pf_host_init(eth_dev);
+       if (ret) {
+               rte_free(eth_dev->data->mac_addrs);
+               eth_dev->data->mac_addrs = NULL;
+               rte_free(eth_dev->data->hash_mac_addrs);
+               eth_dev->data->hash_mac_addrs = NULL;
+               return ret;
+       }
 
        ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
        /* let hardware know driver is loaded */
@@ -1418,6 +1387,7 @@ static int ixgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
        if (!fdir_info->hash_map) {
                PMD_INIT_LOG(ERR,
                             "Failed to allocate memory for fdir hash map!");
+               rte_hash_free(fdir_info->hash_handle);
                return -ENOMEM;
        }
        fdir_info->mask_added = FALSE;
@@ -1454,6 +1424,7 @@ static int ixgbe_l2_tn_filter_init(struct rte_eth_dev *eth_dev)
        if (!l2_tn_info->hash_map) {
                PMD_INIT_LOG(ERR,
                        "Failed to allocate memory for L2 TN hash map!");
+               rte_hash_free(l2_tn_info->hash_handle);
                return -ENOMEM;
        }
        l2_tn_info->e_tag_en = FALSE;
@@ -1567,7 +1538,6 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
        PMD_INIT_FUNC_TRACE();
 
        eth_dev->dev_ops = &ixgbevf_eth_dev_ops;
-       eth_dev->rx_descriptor_done   = ixgbe_dev_rx_descriptor_done;
        eth_dev->rx_descriptor_status = ixgbe_dev_rx_descriptor_status;
        eth_dev->tx_descriptor_status = ixgbe_dev_tx_descriptor_status;
        eth_dev->rx_pkt_burst = &ixgbe_recv_pkts;
@@ -1601,6 +1571,7 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
                              pci_dev->device.devargs);
 
        rte_eth_copy_pci_info(eth_dev, pci_dev);
+       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
 
        hw->device_id = pci_dev->id.device_id;
        hw->vendor_id = pci_dev->id.vendor_id;
@@ -1663,11 +1634,6 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
                return -ENOMEM;
        }
 
-       /* Pass the information to the rte_eth_dev_close() that it should also
-        * release the private port resources.
-        */
-       eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
-
        /* Generate a random MAC address, if none was assigned by PF. */
        if (rte_is_zero_ether_addr(perm_addr)) {
                generate_random_mac_addr(perm_addr);
@@ -1679,13 +1645,8 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
                }
                PMD_INIT_LOG(INFO, "\tVF MAC address not assigned by Host PF");
                PMD_INIT_LOG(INFO, "\tAssign randomly generated MAC address "
-                            "%02x:%02x:%02x:%02x:%02x:%02x",
-                            perm_addr->addr_bytes[0],
-                            perm_addr->addr_bytes[1],
-                            perm_addr->addr_bytes[2],
-                            perm_addr->addr_bytes[3],
-                            perm_addr->addr_bytes[4],
-                            perm_addr->addr_bytes[5]);
+                            RTE_ETHER_ADDR_PRT_FMT,
+                                RTE_ETHER_ADDR_BYTES(perm_addr));
        }
 
        /* Copy the permanent MAC address */
@@ -1699,6 +1660,8 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
 
        default:
                PMD_INIT_LOG(ERR, "VF Initialization Failure: %d", diag);
+               rte_free(eth_dev->data->mac_addrs);
+               eth_dev->data->mac_addrs = NULL;
                return -EIO;
        }
 
@@ -1746,6 +1709,13 @@ eth_ixgbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
        } else
                memset(&eth_da, 0, sizeof(eth_da));
 
+       if (eth_da.nb_representor_ports > 0 &&
+           eth_da.type != RTE_ETH_REPRESENTOR_VF) {
+               PMD_DRV_LOG(ERR, "unsupported representor type: %s\n",
+                           pci_dev->device.devargs->args);
+               return -ENOTSUP;
+       }
+
        retval = rte_eth_dev_create(&pci_dev->device, pci_dev->device.name,
                sizeof(struct ixgbe_adapter),
                eth_dev_pci_specific_init, pci_dev,
@@ -2855,7 +2825,7 @@ error:
 /*
  * Stop device: disable rx and tx functions to allow for reconfiguring.
  */
-static void
+static int
 ixgbe_dev_stop(struct rte_eth_dev *dev)
 {
        struct rte_eth_link link;
@@ -2871,7 +2841,7 @@ ixgbe_dev_stop(struct rte_eth_dev *dev)
                IXGBE_DEV_PRIVATE_TO_TM_CONF(dev->data->dev_private);
 
        if (hw->adapter_stopped)
-               return;
+               return 0;
 
        PMD_INIT_FUNC_TRACE();
 
@@ -2927,6 +2897,9 @@ ixgbe_dev_stop(struct rte_eth_dev *dev)
        adapter->rss_reta_updated = 0;
 
        hw->adapter_stopped = true;
+       dev->data->dev_started = 0;
+
+       return 0;
 }
 
 /*
@@ -2994,7 +2967,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev)
 /*
  * Reset and stop device.
  */
-static void
+static int
 ixgbe_dev_close(struct rte_eth_dev *dev)
 {
        struct ixgbe_hw *hw =
@@ -3005,10 +2978,12 @@ ixgbe_dev_close(struct rte_eth_dev *dev)
        int ret;
 
        PMD_INIT_FUNC_TRACE();
+       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+               return 0;
 
        ixgbe_pf_reset_hw(hw);
 
-       ixgbe_dev_stop(dev);
+       ret = ixgbe_dev_stop(dev);
 
        ixgbe_dev_free_queues(dev);
 
@@ -3017,10 +2992,6 @@ ixgbe_dev_close(struct rte_eth_dev *dev)
        /* reprogram the RAR[0] in case user changed it. */
        ixgbe_set_rar(hw, 0, hw->mac.addr, 0, IXGBE_RAH_AV);
 
-       dev->dev_ops = NULL;
-       dev->rx_pkt_burst = NULL;
-       dev->tx_pkt_burst = NULL;
-
        /* Unlock any pending hardware semaphore */
        ixgbe_swfw_lock_reset(hw);
 
@@ -3061,10 +3032,11 @@ ixgbe_dev_close(struct rte_eth_dev *dev)
        /* Remove all Traffic Manager configuration */
        ixgbe_tm_conf_uninit(dev);
 
-#ifdef RTE_LIBRTE_SECURITY
+#ifdef RTE_LIB_SECURITY
        rte_free(dev->security_ctx);
 #endif
 
+       return ret;
 }
 
 /*
@@ -3365,6 +3337,13 @@ ixgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
                          hw_stats->fccrc +
                          hw_stats->fclast;
 
+       /*
+        * 82599 errata, UDP frames with a 0 checksum can be marked as checksum
+        * errors.
+        */
+       if (hw->mac.type != ixgbe_mac_82599EB)
+               stats->ierrors += hw_stats->xec;
+
        /* Tx Errors */
        stats->oerrors  = 0;
        return 0;
@@ -3449,8 +3428,8 @@ static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
 
 static int ixgbe_dev_xstats_get_names_by_id(
        struct rte_eth_dev *dev,
-       struct rte_eth_xstat_name *xstats_names,
        const uint64_t *ids,
+       struct rte_eth_xstat_name *xstats_names,
        unsigned int limit)
 {
        if (!ids) {
@@ -3509,7 +3488,7 @@ static int ixgbe_dev_xstats_get_names_by_id(
        uint16_t size = ixgbe_xstats_calc_num();
        struct rte_eth_xstat_name xstats_names_copy[size];
 
-       ixgbe_dev_xstats_get_names_by_id(dev, xstats_names_copy, NULL,
+       ixgbe_dev_xstats_get_names_by_id(dev, NULL, xstats_names_copy,
                        size);
 
        for (i = 0; i < limit; i++) {
@@ -3811,6 +3790,7 @@ ixgbevf_dev_stats_reset(struct rte_eth_dev *dev)
        hw_stats->vfgorc = 0;
        hw_stats->vfgptc = 0;
        hw_stats->vfgotc = 0;
+       hw_stats->vfmprc = 0;
 
        return 0;
 }
@@ -3828,9 +3808,11 @@ ixgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size)
 
        etrack_id = (eeprom_verh << 16) | eeprom_verl;
        ret = snprintf(fw_version, fw_size, "0x%08x", etrack_id);
+       if (ret < 0)
+               return -EINVAL;
 
        ret += 1; /* add the size of '\0' */
-       if (fw_size < (u32)ret)
+       if (fw_size < (size_t)ret)
                return ret;
        else
                return 0;
@@ -3960,7 +3942,7 @@ ixgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)
            dev->rx_pkt_burst == ixgbe_recv_pkts_bulk_alloc)
                return ptypes;
 
-#if defined(RTE_ARCH_X86) || defined(RTE_MACHINE_CPUFLAG_NEON)
+#if defined(RTE_ARCH_X86) || defined(__ARM_NEON)
        if (dev->rx_pkt_burst == ixgbe_recv_pkts_vec ||
            dev->rx_pkt_burst == ixgbe_recv_scattered_pkts_vec)
                return ptypes;
@@ -5034,11 +5016,19 @@ ixgbe_dev_rss_reta_update(struct rte_eth_dev *dev,
        uint32_t reta, r;
        uint16_t idx, shift;
        struct ixgbe_adapter *adapter = dev->data->dev_private;
+       struct rte_eth_dev_data *dev_data = dev->data;
        struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
        uint32_t reta_reg;
 
        PMD_INIT_FUNC_TRACE();
 
+       if (!dev_data->dev_started) {
+               PMD_DRV_LOG(ERR,
+                       "port %d must be started before rss reta update",
+                        dev_data->port_id);
+               return -EIO;
+       }
+
        if (!ixgbe_rss_update_sp(hw->mac.type)) {
                PMD_DRV_LOG(ERR, "RSS reta update is not supported on this "
                        "NIC.");
@@ -5200,7 +5190,7 @@ ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
        hlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0);
 
        /* switch to jumbo mode if needed */
-       if (frame_size > RTE_ETHER_MAX_LEN) {
+       if (frame_size > IXGBE_ETH_MAX_LEN) {
                dev->data->dev_conf.rxmode.offloads |=
                        DEV_RX_OFFLOAD_JUMBO_FRAME;
                hlreg0 |= IXGBE_HLREG0_JUMBOEN;
@@ -5320,10 +5310,16 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)
        ixgbe_dev_wait_setup_link_complete(dev, 0);
 
        err = hw->mac.ops.reset_hw(hw);
-       if (err) {
+
+       /**
+        * In this case, reuses the MAC address assigned by VF
+        * initialization.
+        */
+       if (err != IXGBE_SUCCESS && err != IXGBE_ERR_INVALID_MAC_ADDR) {
                PMD_INIT_LOG(ERR, "Unable to reset vf hardware (%d)", err);
                return err;
        }
+
        hw->mac.get_link_status = true;
 
        /* negotiate mailbox API version to use with the PF. */
@@ -5361,8 +5357,10 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)
                 * now only one vector is used for Rx queue
                 */
                intr_vector = 1;
-               if (rte_intr_efd_enable(intr_handle, intr_vector))
+               if (rte_intr_efd_enable(intr_handle, intr_vector)) {
+                       ixgbe_dev_clear_queues(dev);
                        return -1;
+               }
        }
 
        if (rte_intr_dp_is_en(intr_handle) && !intr_handle->intr_vec) {
@@ -5372,6 +5370,7 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)
                if (intr_handle->intr_vec == NULL) {
                        PMD_INIT_LOG(ERR, "Failed to allocate %d rx_queues"
                                     " intr_vec", dev->data->nb_rx_queues);
+                       ixgbe_dev_clear_queues(dev);
                        return -ENOMEM;
                }
        }
@@ -5402,7 +5401,7 @@ ixgbevf_dev_start(struct rte_eth_dev *dev)
        return 0;
 }
 
-static void
+static int
 ixgbevf_dev_stop(struct rte_eth_dev *dev)
 {
        struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
@@ -5411,7 +5410,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev)
        struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 
        if (hw->adapter_stopped)
-               return;
+               return 0;
 
        PMD_INIT_FUNC_TRACE();
 
@@ -5419,6 +5418,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev)
 
        ixgbevf_intr_disable(dev);
 
+       dev->data->dev_started = 0;
        hw->adapter_stopped = 1;
        ixgbe_stop_adapter(hw);
 
@@ -5441,20 +5441,25 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev)
        }
 
        adapter->rss_reta_updated = 0;
+
+       return 0;
 }
 
-static void
+static int
 ixgbevf_dev_close(struct rte_eth_dev *dev)
 {
        struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
        struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
        struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
+       int ret;
 
        PMD_INIT_FUNC_TRACE();
+       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+               return 0;
 
        ixgbe_reset_hw(hw);
 
-       ixgbevf_dev_stop(dev);
+       ret = ixgbevf_dev_stop(dev);
 
        ixgbe_dev_free_queues(dev);
 
@@ -5465,13 +5470,11 @@ ixgbevf_dev_close(struct rte_eth_dev *dev)
         **/
        ixgbevf_remove_mac_addr(dev, 0);
 
-       dev->dev_ops = NULL;
-       dev->rx_pkt_burst = NULL;
-       dev->tx_pkt_burst = NULL;
-
        rte_intr_disable(intr_handle);
        rte_intr_callback_unregister(intr_handle,
                                     ixgbevf_dev_interrupt_handler, dev);
+
+       return ret;
 }
 
 /*
@@ -5741,191 +5744,6 @@ ixgbe_convert_vm_rx_mask_to_val(uint16_t rx_mask, uint32_t orig_val)
        return new_val;
 }
 
-#define IXGBE_MRCTL_VPME  0x01 /* Virtual Pool Mirroring. */
-#define IXGBE_MRCTL_UPME  0x02 /* Uplink Port Mirroring. */
-#define IXGBE_MRCTL_DPME  0x04 /* Downlink Port Mirroring. */
-#define IXGBE_MRCTL_VLME  0x08 /* VLAN Mirroring. */
-#define IXGBE_INVALID_MIRROR_TYPE(mirror_type) \
-       ((mirror_type) & ~(uint8_t)(ETH_MIRROR_VIRTUAL_POOL_UP | \
-       ETH_MIRROR_UPLINK_PORT | ETH_MIRROR_DOWNLINK_PORT | ETH_MIRROR_VLAN))
-
-static int
-ixgbe_mirror_rule_set(struct rte_eth_dev *dev,
-                     struct rte_eth_mirror_conf *mirror_conf,
-                     uint8_t rule_id, uint8_t on)
-{
-       uint32_t mr_ctl, vlvf;
-       uint32_t mp_lsb = 0;
-       uint32_t mv_msb = 0;
-       uint32_t mv_lsb = 0;
-       uint32_t mp_msb = 0;
-       uint8_t i = 0;
-       int reg_index = 0;
-       uint64_t vlan_mask = 0;
-
-       const uint8_t pool_mask_offset = 32;
-       const uint8_t vlan_mask_offset = 32;
-       const uint8_t dst_pool_offset = 8;
-       const uint8_t rule_mr_offset  = 4;
-       const uint8_t mirror_rule_mask = 0x0F;
-
-       struct ixgbe_mirror_info *mr_info =
-                       (IXGBE_DEV_PRIVATE_TO_PFDATA(dev->data->dev_private));
-       struct ixgbe_hw *hw =
-               IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       uint8_t mirror_type = 0;
-
-       if (ixgbe_vt_check(hw) < 0)
-               return -ENOTSUP;
-
-       if (rule_id >= IXGBE_MAX_MIRROR_RULES)
-               return -EINVAL;
-
-       if (IXGBE_INVALID_MIRROR_TYPE(mirror_conf->rule_type)) {
-               PMD_DRV_LOG(ERR, "unsupported mirror type 0x%x.",
-                           mirror_conf->rule_type);
-               return -EINVAL;
-       }
-
-       if (mirror_conf->rule_type & ETH_MIRROR_VLAN) {
-               mirror_type |= IXGBE_MRCTL_VLME;
-               /* Check if vlan id is valid and find conresponding VLAN ID
-                * index in VLVF
-                */
-               for (i = 0; i < IXGBE_VLVF_ENTRIES; i++) {
-                       if (mirror_conf->vlan.vlan_mask & (1ULL << i)) {
-                               /* search vlan id related pool vlan filter
-                                * index
-                                */
-                               reg_index = ixgbe_find_vlvf_slot(
-                                               hw,
-                                               mirror_conf->vlan.vlan_id[i],
-                                               false);
-                               if (reg_index < 0)
-                                       return -EINVAL;
-                               vlvf = IXGBE_READ_REG(hw,
-                                                     IXGBE_VLVF(reg_index));
-                               if ((vlvf & IXGBE_VLVF_VIEN) &&
-                                   ((vlvf & IXGBE_VLVF_VLANID_MASK) ==
-                                     mirror_conf->vlan.vlan_id[i]))
-                                       vlan_mask |= (1ULL << reg_index);
-                               else
-                                       return -EINVAL;
-                       }
-               }
-
-               if (on) {
-                       mv_lsb = vlan_mask & 0xFFFFFFFF;
-                       mv_msb = vlan_mask >> vlan_mask_offset;
-
-                       mr_info->mr_conf[rule_id].vlan.vlan_mask =
-                                               mirror_conf->vlan.vlan_mask;
-                       for (i = 0; i < ETH_VMDQ_MAX_VLAN_FILTERS; i++) {
-                               if (mirror_conf->vlan.vlan_mask & (1ULL << i))
-                                       mr_info->mr_conf[rule_id].vlan.vlan_id[i] =
-                                               mirror_conf->vlan.vlan_id[i];
-                       }
-               } else {
-                       mv_lsb = 0;
-                       mv_msb = 0;
-                       mr_info->mr_conf[rule_id].vlan.vlan_mask = 0;
-                       for (i = 0; i < ETH_VMDQ_MAX_VLAN_FILTERS; i++)
-                               mr_info->mr_conf[rule_id].vlan.vlan_id[i] = 0;
-               }
-       }
-
-       /**
-        * if enable pool mirror, write related pool mask register,if disable
-        * pool mirror, clear PFMRVM register
-        */
-       if (mirror_conf->rule_type & ETH_MIRROR_VIRTUAL_POOL_UP) {
-               mirror_type |= IXGBE_MRCTL_VPME;
-               if (on) {
-                       mp_lsb = mirror_conf->pool_mask & 0xFFFFFFFF;
-                       mp_msb = mirror_conf->pool_mask >> pool_mask_offset;
-                       mr_info->mr_conf[rule_id].pool_mask =
-                                       mirror_conf->pool_mask;
-
-               } else {
-                       mp_lsb = 0;
-                       mp_msb = 0;
-                       mr_info->mr_conf[rule_id].pool_mask = 0;
-               }
-       }
-       if (mirror_conf->rule_type & ETH_MIRROR_UPLINK_PORT)
-               mirror_type |= IXGBE_MRCTL_UPME;
-       if (mirror_conf->rule_type & ETH_MIRROR_DOWNLINK_PORT)
-               mirror_type |= IXGBE_MRCTL_DPME;
-
-       /* read  mirror control register and recalculate it */
-       mr_ctl = IXGBE_READ_REG(hw, IXGBE_MRCTL(rule_id));
-
-       if (on) {
-               mr_ctl |= mirror_type;
-               mr_ctl &= mirror_rule_mask;
-               mr_ctl |= mirror_conf->dst_pool << dst_pool_offset;
-       } else {
-               mr_ctl &= ~(mirror_conf->rule_type & mirror_rule_mask);
-       }
-
-       mr_info->mr_conf[rule_id].rule_type = mirror_conf->rule_type;
-       mr_info->mr_conf[rule_id].dst_pool = mirror_conf->dst_pool;
-
-       /* write mirrror control  register */
-       IXGBE_WRITE_REG(hw, IXGBE_MRCTL(rule_id), mr_ctl);
-
-       /* write pool mirrror control  register */
-       if (mirror_conf->rule_type & ETH_MIRROR_VIRTUAL_POOL_UP) {
-               IXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id), mp_lsb);
-               IXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id + rule_mr_offset),
-                               mp_msb);
-       }
-       /* write VLAN mirrror control  register */
-       if (mirror_conf->rule_type & ETH_MIRROR_VLAN) {
-               IXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id), mv_lsb);
-               IXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id + rule_mr_offset),
-                               mv_msb);
-       }
-
-       return 0;
-}
-
-static int
-ixgbe_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t rule_id)
-{
-       int mr_ctl = 0;
-       uint32_t lsb_val = 0;
-       uint32_t msb_val = 0;
-       const uint8_t rule_mr_offset = 4;
-
-       struct ixgbe_hw *hw =
-               IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct ixgbe_mirror_info *mr_info =
-               (IXGBE_DEV_PRIVATE_TO_PFDATA(dev->data->dev_private));
-
-       if (ixgbe_vt_check(hw) < 0)
-               return -ENOTSUP;
-
-       if (rule_id >= IXGBE_MAX_MIRROR_RULES)
-               return -EINVAL;
-
-       memset(&mr_info->mr_conf[rule_id], 0,
-              sizeof(struct rte_eth_mirror_conf));
-
-       /* clear PFVMCTL register */
-       IXGBE_WRITE_REG(hw, IXGBE_MRCTL(rule_id), mr_ctl);
-
-       /* clear pool mask register */
-       IXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id), lsb_val);
-       IXGBE_WRITE_REG(hw, IXGBE_VMRVM(rule_id + rule_mr_offset), msb_val);
-
-       /* clear vlan mask register */
-       IXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id), lsb_val);
-       IXGBE_WRITE_REG(hw, IXGBE_VMRVLAN(rule_id + rule_mr_offset), msb_val);
-
-       return 0;
-}
-
 static int
 ixgbevf_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id)
 {
@@ -6294,14 +6112,8 @@ ixgbevf_add_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr,
        diag = ixgbevf_set_uc_addr_vf(hw, 2, mac_addr->addr_bytes);
        if (diag != 0)
                PMD_DRV_LOG(ERR, "Unable to add MAC address "
-                           "%02x:%02x:%02x:%02x:%02x:%02x - diag=%d",
-                           mac_addr->addr_bytes[0],
-                           mac_addr->addr_bytes[1],
-                           mac_addr->addr_bytes[2],
-                           mac_addr->addr_bytes[3],
-                           mac_addr->addr_bytes[4],
-                           mac_addr->addr_bytes[5],
-                           diag);
+                           RTE_ETHER_ADDR_PRT_FMT " - diag=%d",
+                           RTE_ETHER_ADDR_BYTES(mac_addr), diag);
        return diag;
 }
 
@@ -6343,14 +6155,8 @@ ixgbevf_remove_mac_addr(struct rte_eth_dev *dev, uint32_t index)
                if (diag != 0)
                        PMD_DRV_LOG(ERR,
                                    "Adding again MAC address "
-                                   "%02x:%02x:%02x:%02x:%02x:%02x failed "
-                                   "diag=%d",
-                                   mac_addr->addr_bytes[0],
-                                   mac_addr->addr_bytes[1],
-                                   mac_addr->addr_bytes[2],
-                                   mac_addr->addr_bytes[3],
-                                   mac_addr->addr_bytes[4],
-                                   mac_addr->addr_bytes[5],
+                                    RTE_ETHER_ADDR_PRT_FMT " failed "
+                                   "diag=%d", RTE_ETHER_ADDR_BYTES(mac_addr),
                                    diag);
        }
 }
@@ -6405,64 +6211,6 @@ ixgbe_syn_filter_set(struct rte_eth_dev *dev,
        return 0;
 }
 
-static int
-ixgbe_syn_filter_get(struct rte_eth_dev *dev,
-                       struct rte_eth_syn_filter *filter)
-{
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       uint32_t synqf = IXGBE_READ_REG(hw, IXGBE_SYNQF);
-
-       if (synqf & IXGBE_SYN_FILTER_ENABLE) {
-               filter->hig_pri = (synqf & IXGBE_SYN_FILTER_SYNQFP) ? 1 : 0;
-               filter->queue = (uint16_t)((synqf & IXGBE_SYN_FILTER_QUEUE) >> 1);
-               return 0;
-       }
-       return -ENOENT;
-}
-
-static int
-ixgbe_syn_filter_handle(struct rte_eth_dev *dev,
-                       enum rte_filter_op filter_op,
-                       void *arg)
-{
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       int ret;
-
-       MAC_TYPE_FILTER_SUP(hw->mac.type);
-
-       if (filter_op == RTE_ETH_FILTER_NOP)
-               return 0;
-
-       if (arg == NULL) {
-               PMD_DRV_LOG(ERR, "arg shouldn't be NULL for operation %u",
-                           filter_op);
-               return -EINVAL;
-       }
-
-       switch (filter_op) {
-       case RTE_ETH_FILTER_ADD:
-               ret = ixgbe_syn_filter_set(dev,
-                               (struct rte_eth_syn_filter *)arg,
-                               TRUE);
-               break;
-       case RTE_ETH_FILTER_DELETE:
-               ret = ixgbe_syn_filter_set(dev,
-                               (struct rte_eth_syn_filter *)arg,
-                               FALSE);
-               break;
-       case RTE_ETH_FILTER_GET:
-               ret = ixgbe_syn_filter_get(dev,
-                               (struct rte_eth_syn_filter *)arg);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "unsupported operation %u", filter_op);
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
 
 static inline enum ixgbe_5tuple_protocol
 convert_protocol_type(uint8_t protocol_value)
@@ -6630,7 +6378,8 @@ ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
         * prior to 3.11.33 which contains the following change:
         * "ixgbe: Enable jumbo frames support w/ SR-IOV"
         */
-       ixgbevf_rlpml_set_vf(hw, max_frame);
+       if (ixgbevf_rlpml_set_vf(hw, max_frame))
+               return -EINVAL;
 
        /* update max frame size */
        dev->data->dev_conf.rxmode.max_rx_pkt_len = max_frame;
@@ -6796,99 +6545,6 @@ ixgbe_add_del_ntuple_filter(struct rte_eth_dev *dev,
        return 0;
 }
 
-/*
- * get a ntuple filter
- *
- * @param
- * dev: Pointer to struct rte_eth_dev.
- * ntuple_filter: Pointer to struct rte_eth_ntuple_filter
- *
- * @return
- *    - On success, zero.
- *    - On failure, a negative value.
- */
-static int
-ixgbe_get_ntuple_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_ntuple_filter *ntuple_filter)
-{
-       struct ixgbe_filter_info *filter_info =
-               IXGBE_DEV_PRIVATE_TO_FILTER_INFO(dev->data->dev_private);
-       struct ixgbe_5tuple_filter_info filter_5tuple;
-       struct ixgbe_5tuple_filter *filter;
-       int ret;
-
-       if (ntuple_filter->flags != RTE_5TUPLE_FLAGS) {
-               PMD_DRV_LOG(ERR, "only 5tuple is supported.");
-               return -EINVAL;
-       }
-
-       memset(&filter_5tuple, 0, sizeof(struct ixgbe_5tuple_filter_info));
-       ret = ntuple_filter_to_5tuple(ntuple_filter, &filter_5tuple);
-       if (ret < 0)
-               return ret;
-
-       filter = ixgbe_5tuple_filter_lookup(&filter_info->fivetuple_list,
-                                        &filter_5tuple);
-       if (filter == NULL) {
-               PMD_DRV_LOG(ERR, "filter doesn't exist.");
-               return -ENOENT;
-       }
-       ntuple_filter->queue = filter->queue;
-       return 0;
-}
-
-/*
- * ixgbe_ntuple_filter_handle - Handle operations for ntuple filter.
- * @dev: pointer to rte_eth_dev structure
- * @filter_op:operation will be taken.
- * @arg: a pointer to specific structure corresponding to the filter_op
- *
- * @return
- *    - On success, zero.
- *    - On failure, a negative value.
- */
-static int
-ixgbe_ntuple_filter_handle(struct rte_eth_dev *dev,
-                               enum rte_filter_op filter_op,
-                               void *arg)
-{
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       int ret;
-
-       MAC_TYPE_FILTER_SUP_EXT(hw->mac.type);
-
-       if (filter_op == RTE_ETH_FILTER_NOP)
-               return 0;
-
-       if (arg == NULL) {
-               PMD_DRV_LOG(ERR, "arg shouldn't be NULL for operation %u.",
-                           filter_op);
-               return -EINVAL;
-       }
-
-       switch (filter_op) {
-       case RTE_ETH_FILTER_ADD:
-               ret = ixgbe_add_del_ntuple_filter(dev,
-                       (struct rte_eth_ntuple_filter *)arg,
-                       TRUE);
-               break;
-       case RTE_ETH_FILTER_DELETE:
-               ret = ixgbe_add_del_ntuple_filter(dev,
-                       (struct rte_eth_ntuple_filter *)arg,
-                       FALSE);
-               break;
-       case RTE_ETH_FILTER_GET:
-               ret = ixgbe_get_ntuple_filter(dev,
-                       (struct rte_eth_ntuple_filter *)arg);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "unsupported operation %u.", filter_op);
-               ret = -EINVAL;
-               break;
-       }
-       return ret;
-}
-
 int
 ixgbe_add_del_ethertype_filter(struct rte_eth_dev *dev,
                        struct rte_eth_ethertype_filter *filter,
@@ -6964,146 +6620,38 @@ ixgbe_add_del_ethertype_filter(struct rte_eth_dev *dev,
 }
 
 static int
-ixgbe_get_ethertype_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_ethertype_filter *filter)
+ixgbe_dev_flow_ops_get(__rte_unused struct rte_eth_dev *dev,
+                      const struct rte_flow_ops **ops)
 {
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct ixgbe_filter_info *filter_info =
-               IXGBE_DEV_PRIVATE_TO_FILTER_INFO(dev->data->dev_private);
-       uint32_t etqf, etqs;
-       int ret;
+       *ops = &ixgbe_flow_ops;
+       return 0;
+}
 
-       ret = ixgbe_ethertype_filter_lookup(filter_info, filter->ether_type);
-       if (ret < 0) {
-               PMD_DRV_LOG(ERR, "ethertype (0x%04x) filter doesn't exist.",
-                           filter->ether_type);
-               return -ENOENT;
-       }
+static u8 *
+ixgbe_dev_addr_list_itr(__rte_unused struct ixgbe_hw *hw,
+                       u8 **mc_addr_ptr, u32 *vmdq)
+{
+       u8 *mc_addr;
 
-       etqf = IXGBE_READ_REG(hw, IXGBE_ETQF(ret));
-       if (etqf & IXGBE_ETQF_FILTER_EN) {
-               etqs = IXGBE_READ_REG(hw, IXGBE_ETQS(ret));
-               filter->ether_type = etqf & IXGBE_ETQF_ETHERTYPE;
-               filter->flags = 0;
-               filter->queue = (etqs & IXGBE_ETQS_RX_QUEUE) >>
-                              IXGBE_ETQS_RX_QUEUE_SHIFT;
-               return 0;
-       }
-       return -ENOENT;
+       *vmdq = 0;
+       mc_addr = *mc_addr_ptr;
+       *mc_addr_ptr = (mc_addr + sizeof(struct rte_ether_addr));
+       return mc_addr;
 }
 
-/*
- * ixgbe_ethertype_filter_handle - Handle operations for ethertype filter.
- * @dev: pointer to rte_eth_dev structure
- * @filter_op:operation will be taken.
- * @arg: a pointer to specific structure corresponding to the filter_op
- */
 static int
-ixgbe_ethertype_filter_handle(struct rte_eth_dev *dev,
-                               enum rte_filter_op filter_op,
-                               void *arg)
+ixgbe_dev_set_mc_addr_list(struct rte_eth_dev *dev,
+                         struct rte_ether_addr *mc_addr_set,
+                         uint32_t nb_mc_addr)
 {
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       int ret;
-
-       MAC_TYPE_FILTER_SUP(hw->mac.type);
+       struct ixgbe_hw *hw;
+       u8 *mc_addr_list;
 
-       if (filter_op == RTE_ETH_FILTER_NOP)
-               return 0;
-
-       if (arg == NULL) {
-               PMD_DRV_LOG(ERR, "arg shouldn't be NULL for operation %u.",
-                           filter_op);
-               return -EINVAL;
-       }
-
-       switch (filter_op) {
-       case RTE_ETH_FILTER_ADD:
-               ret = ixgbe_add_del_ethertype_filter(dev,
-                       (struct rte_eth_ethertype_filter *)arg,
-                       TRUE);
-               break;
-       case RTE_ETH_FILTER_DELETE:
-               ret = ixgbe_add_del_ethertype_filter(dev,
-                       (struct rte_eth_ethertype_filter *)arg,
-                       FALSE);
-               break;
-       case RTE_ETH_FILTER_GET:
-               ret = ixgbe_get_ethertype_filter(dev,
-                       (struct rte_eth_ethertype_filter *)arg);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "unsupported operation %u.", filter_op);
-               ret = -EINVAL;
-               break;
-       }
-       return ret;
-}
-
-static int
-ixgbe_dev_filter_ctrl(struct rte_eth_dev *dev,
-                    enum rte_filter_type filter_type,
-                    enum rte_filter_op filter_op,
-                    void *arg)
-{
-       int ret = 0;
-
-       switch (filter_type) {
-       case RTE_ETH_FILTER_NTUPLE:
-               ret = ixgbe_ntuple_filter_handle(dev, filter_op, arg);
-               break;
-       case RTE_ETH_FILTER_ETHERTYPE:
-               ret = ixgbe_ethertype_filter_handle(dev, filter_op, arg);
-               break;
-       case RTE_ETH_FILTER_SYN:
-               ret = ixgbe_syn_filter_handle(dev, filter_op, arg);
-               break;
-       case RTE_ETH_FILTER_FDIR:
-               ret = ixgbe_fdir_ctrl_func(dev, filter_op, arg);
-               break;
-       case RTE_ETH_FILTER_L2_TUNNEL:
-               ret = ixgbe_dev_l2_tunnel_filter_handle(dev, filter_op, arg);
-               break;
-       case RTE_ETH_FILTER_GENERIC:
-               if (filter_op != RTE_ETH_FILTER_GET)
-                       return -EINVAL;
-               *(const void **)arg = &ixgbe_flow_ops;
-               break;
-       default:
-               PMD_DRV_LOG(WARNING, "Filter type (%d) not supported",
-                                                       filter_type);
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-static u8 *
-ixgbe_dev_addr_list_itr(__rte_unused struct ixgbe_hw *hw,
-                       u8 **mc_addr_ptr, u32 *vmdq)
-{
-       u8 *mc_addr;
-
-       *vmdq = 0;
-       mc_addr = *mc_addr_ptr;
-       *mc_addr_ptr = (mc_addr + sizeof(struct rte_ether_addr));
-       return mc_addr;
-}
-
-static int
-ixgbe_dev_set_mc_addr_list(struct rte_eth_dev *dev,
-                         struct rte_ether_addr *mc_addr_set,
-                         uint32_t nb_mc_addr)
-{
-       struct ixgbe_hw *hw;
-       u8 *mc_addr_list;
-
-       hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       mc_addr_list = (u8 *)mc_addr_set;
-       return ixgbe_update_mc_addr_list(hw, mc_addr_list, nb_mc_addr,
-                                        ixgbe_dev_addr_list_itr, TRUE);
-}
+       hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+       mc_addr_list = (u8 *)mc_addr_set;
+       return ixgbe_update_mc_addr_list(hw, mc_addr_list, nb_mc_addr,
+                                        ixgbe_dev_addr_list_itr, TRUE);
+}
 
 static uint64_t
 ixgbe_read_systime_cyclecounter(struct rte_eth_dev *dev)
@@ -7591,9 +7139,6 @@ ixgbe_get_module_eeprom(struct rte_eth_dev *dev,
        uint8_t *data = info->data;
        uint32_t i = 0;
 
-       if (info->length == 0)
-               return -EINVAL;
-
        for (i = info->offset; i < info->offset + info->length; i++) {
                if (i < RTE_ETH_MODULE_SFF_8079_LEN)
                        status = hw->phy.ops.read_i2c_eeprom(hw, i, &databyte);
@@ -7795,33 +7340,6 @@ ixgbe_update_e_tag_eth_type(struct ixgbe_hw *hw,
        return 0;
 }
 
-/* Config l2 tunnel ether type */
-static int
-ixgbe_dev_l2_tunnel_eth_type_conf(struct rte_eth_dev *dev,
-                                 struct rte_eth_l2_tunnel_conf *l2_tunnel)
-{
-       int ret = 0;
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct ixgbe_l2_tn_info *l2_tn_info =
-               IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
-
-       if (l2_tunnel == NULL)
-               return -EINVAL;
-
-       switch (l2_tunnel->l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               l2_tn_info->e_tag_ether_type = l2_tunnel->ether_type;
-               ret = ixgbe_update_e_tag_eth_type(hw, l2_tunnel->ether_type);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
 /* Enable e-tag tunnel */
 static int
 ixgbe_e_tag_enable(struct ixgbe_hw *hw)
@@ -7842,77 +7360,9 @@ ixgbe_e_tag_enable(struct ixgbe_hw *hw)
        return 0;
 }
 
-/* Enable l2 tunnel */
-static int
-ixgbe_dev_l2_tunnel_enable(struct rte_eth_dev *dev,
-                          enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       int ret = 0;
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct ixgbe_l2_tn_info *l2_tn_info =
-               IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               l2_tn_info->e_tag_en = TRUE;
-               ret = ixgbe_e_tag_enable(hw);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-/* Disable e-tag tunnel */
-static int
-ixgbe_e_tag_disable(struct ixgbe_hw *hw)
-{
-       uint32_t etag_etype;
-
-       if (hw->mac.type != ixgbe_mac_X550 &&
-           hw->mac.type != ixgbe_mac_X550EM_x &&
-           hw->mac.type != ixgbe_mac_X550EM_a) {
-               return -ENOTSUP;
-       }
-
-       etag_etype = IXGBE_READ_REG(hw, IXGBE_ETAG_ETYPE);
-       etag_etype &= ~IXGBE_ETAG_ETYPE_VALID;
-       IXGBE_WRITE_REG(hw, IXGBE_ETAG_ETYPE, etag_etype);
-       IXGBE_WRITE_FLUSH(hw);
-
-       return 0;
-}
-
-/* Disable l2 tunnel */
-static int
-ixgbe_dev_l2_tunnel_disable(struct rte_eth_dev *dev,
-                           enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       int ret = 0;
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct ixgbe_l2_tn_info *l2_tn_info =
-               IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               l2_tn_info->e_tag_en = FALSE;
-               ret = ixgbe_e_tag_disable(hw);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
 static int
 ixgbe_e_tag_filter_del(struct rte_eth_dev *dev,
-                      struct rte_eth_l2_tunnel_conf *l2_tunnel)
+                      struct ixgbe_l2_tunnel_conf *l2_tunnel)
 {
        int ret = 0;
        struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
@@ -7948,7 +7398,7 @@ ixgbe_e_tag_filter_del(struct rte_eth_dev *dev,
 
 static int
 ixgbe_e_tag_filter_add(struct rte_eth_dev *dev,
-                      struct rte_eth_l2_tunnel_conf *l2_tunnel)
+                      struct ixgbe_l2_tunnel_conf *l2_tunnel)
 {
        int ret = 0;
        struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
@@ -8052,7 +7502,7 @@ ixgbe_remove_l2_tn_filter(struct ixgbe_l2_tn_info *l2_tn_info,
 /* Add l2 tunnel filter */
 int
 ixgbe_dev_l2_tunnel_filter_add(struct rte_eth_dev *dev,
-                              struct rte_eth_l2_tunnel_conf *l2_tunnel,
+                              struct ixgbe_l2_tunnel_conf *l2_tunnel,
                               bool restore)
 {
        int ret;
@@ -8109,7 +7559,7 @@ ixgbe_dev_l2_tunnel_filter_add(struct rte_eth_dev *dev,
 /* Delete l2 tunnel filter */
 int
 ixgbe_dev_l2_tunnel_filter_del(struct rte_eth_dev *dev,
-                              struct rte_eth_l2_tunnel_conf *l2_tunnel)
+                              struct ixgbe_l2_tunnel_conf *l2_tunnel)
 {
        int ret;
        struct ixgbe_l2_tn_info *l2_tn_info =
@@ -8135,48 +7585,6 @@ ixgbe_dev_l2_tunnel_filter_del(struct rte_eth_dev *dev,
        return ret;
 }
 
-/**
- * ixgbe_dev_l2_tunnel_filter_handle - Handle operations for l2 tunnel filter.
- * @dev: pointer to rte_eth_dev structure
- * @filter_op:operation will be taken.
- * @arg: a pointer to specific structure corresponding to the filter_op
- */
-static int
-ixgbe_dev_l2_tunnel_filter_handle(struct rte_eth_dev *dev,
-                                 enum rte_filter_op filter_op,
-                                 void *arg)
-{
-       int ret;
-
-       if (filter_op == RTE_ETH_FILTER_NOP)
-               return 0;
-
-       if (arg == NULL) {
-               PMD_DRV_LOG(ERR, "arg shouldn't be NULL for operation %u.",
-                           filter_op);
-               return -EINVAL;
-       }
-
-       switch (filter_op) {
-       case RTE_ETH_FILTER_ADD:
-               ret = ixgbe_dev_l2_tunnel_filter_add
-                       (dev,
-                        (struct rte_eth_l2_tunnel_conf *)arg,
-                        FALSE);
-               break;
-       case RTE_ETH_FILTER_DELETE:
-               ret = ixgbe_dev_l2_tunnel_filter_del
-                       (dev,
-                        (struct rte_eth_l2_tunnel_conf *)arg);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "unsupported operation %u.", filter_op);
-               ret = -EINVAL;
-               break;
-       }
-       return ret;
-}
-
 static int
 ixgbe_e_tag_forwarding_en_dis(struct rte_eth_dev *dev, bool en)
 {
@@ -8199,264 +7607,6 @@ ixgbe_e_tag_forwarding_en_dis(struct rte_eth_dev *dev, bool en)
        return ret;
 }
 
-/* Enable l2 tunnel forwarding */
-static int
-ixgbe_dev_l2_tunnel_forwarding_enable
-       (struct rte_eth_dev *dev,
-        enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       struct ixgbe_l2_tn_info *l2_tn_info =
-               IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
-       int ret = 0;
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               l2_tn_info->e_tag_fwd_en = TRUE;
-               ret = ixgbe_e_tag_forwarding_en_dis(dev, 1);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-/* Disable l2 tunnel forwarding */
-static int
-ixgbe_dev_l2_tunnel_forwarding_disable
-       (struct rte_eth_dev *dev,
-        enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       struct ixgbe_l2_tn_info *l2_tn_info =
-               IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
-       int ret = 0;
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               l2_tn_info->e_tag_fwd_en = FALSE;
-               ret = ixgbe_e_tag_forwarding_en_dis(dev, 0);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-static int
-ixgbe_e_tag_insertion_en_dis(struct rte_eth_dev *dev,
-                            struct rte_eth_l2_tunnel_conf *l2_tunnel,
-                            bool en)
-{
-       struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-       int ret = 0;
-       uint32_t vmtir, vmvir;
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-
-       if (l2_tunnel->vf_id >= pci_dev->max_vfs) {
-               PMD_DRV_LOG(ERR,
-                           "VF id %u should be less than %u",
-                           l2_tunnel->vf_id,
-                           pci_dev->max_vfs);
-               return -EINVAL;
-       }
-
-       if (hw->mac.type != ixgbe_mac_X550 &&
-           hw->mac.type != ixgbe_mac_X550EM_x &&
-           hw->mac.type != ixgbe_mac_X550EM_a) {
-               return -ENOTSUP;
-       }
-
-       if (en)
-               vmtir = l2_tunnel->tunnel_id;
-       else
-               vmtir = 0;
-
-       IXGBE_WRITE_REG(hw, IXGBE_VMTIR(l2_tunnel->vf_id), vmtir);
-
-       vmvir = IXGBE_READ_REG(hw, IXGBE_VMVIR(l2_tunnel->vf_id));
-       vmvir &= ~IXGBE_VMVIR_TAGA_MASK;
-       if (en)
-               vmvir |= IXGBE_VMVIR_TAGA_ETAG_INSERT;
-       IXGBE_WRITE_REG(hw, IXGBE_VMVIR(l2_tunnel->vf_id), vmvir);
-
-       return ret;
-}
-
-/* Enable l2 tunnel tag insertion */
-static int
-ixgbe_dev_l2_tunnel_insertion_enable(struct rte_eth_dev *dev,
-                                    struct rte_eth_l2_tunnel_conf *l2_tunnel)
-{
-       int ret = 0;
-
-       switch (l2_tunnel->l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               ret = ixgbe_e_tag_insertion_en_dis(dev, l2_tunnel, 1);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-/* Disable l2 tunnel tag insertion */
-static int
-ixgbe_dev_l2_tunnel_insertion_disable
-       (struct rte_eth_dev *dev,
-        struct rte_eth_l2_tunnel_conf *l2_tunnel)
-{
-       int ret = 0;
-
-       switch (l2_tunnel->l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               ret = ixgbe_e_tag_insertion_en_dis(dev, l2_tunnel, 0);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-static int
-ixgbe_e_tag_stripping_en_dis(struct rte_eth_dev *dev,
-                            bool en)
-{
-       int ret = 0;
-       uint32_t qde;
-       struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-
-       if (hw->mac.type != ixgbe_mac_X550 &&
-           hw->mac.type != ixgbe_mac_X550EM_x &&
-           hw->mac.type != ixgbe_mac_X550EM_a) {
-               return -ENOTSUP;
-       }
-
-       qde = IXGBE_READ_REG(hw, IXGBE_QDE);
-       if (en)
-               qde |= IXGBE_QDE_STRIP_TAG;
-       else
-               qde &= ~IXGBE_QDE_STRIP_TAG;
-       qde &= ~IXGBE_QDE_READ;
-       qde |= IXGBE_QDE_WRITE;
-       IXGBE_WRITE_REG(hw, IXGBE_QDE, qde);
-
-       return ret;
-}
-
-/* Enable l2 tunnel tag stripping */
-static int
-ixgbe_dev_l2_tunnel_stripping_enable
-       (struct rte_eth_dev *dev,
-        enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       int ret = 0;
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               ret = ixgbe_e_tag_stripping_en_dis(dev, 1);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-/* Disable l2 tunnel tag stripping */
-static int
-ixgbe_dev_l2_tunnel_stripping_disable
-       (struct rte_eth_dev *dev,
-        enum rte_eth_tunnel_type l2_tunnel_type)
-{
-       int ret = 0;
-
-       switch (l2_tunnel_type) {
-       case RTE_L2_TUNNEL_TYPE_E_TAG:
-               ret = ixgbe_e_tag_stripping_en_dis(dev, 0);
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "Invalid tunnel type");
-               ret = -EINVAL;
-               break;
-       }
-
-       return ret;
-}
-
-/* Enable/disable l2 tunnel offload functions */
-static int
-ixgbe_dev_l2_tunnel_offload_set
-       (struct rte_eth_dev *dev,
-        struct rte_eth_l2_tunnel_conf *l2_tunnel,
-        uint32_t mask,
-        uint8_t en)
-{
-       int ret = 0;
-
-       if (l2_tunnel == NULL)
-               return -EINVAL;
-
-       ret = -EINVAL;
-       if (mask & ETH_L2_TUNNEL_ENABLE_MASK) {
-               if (en)
-                       ret = ixgbe_dev_l2_tunnel_enable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-               else
-                       ret = ixgbe_dev_l2_tunnel_disable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-       }
-
-       if (mask & ETH_L2_TUNNEL_INSERTION_MASK) {
-               if (en)
-                       ret = ixgbe_dev_l2_tunnel_insertion_enable(
-                               dev,
-                               l2_tunnel);
-               else
-                       ret = ixgbe_dev_l2_tunnel_insertion_disable(
-                               dev,
-                               l2_tunnel);
-       }
-
-       if (mask & ETH_L2_TUNNEL_STRIPPING_MASK) {
-               if (en)
-                       ret = ixgbe_dev_l2_tunnel_stripping_enable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-               else
-                       ret = ixgbe_dev_l2_tunnel_stripping_disable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-       }
-
-       if (mask & ETH_L2_TUNNEL_FORWARDING_MASK) {
-               if (en)
-                       ret = ixgbe_dev_l2_tunnel_forwarding_enable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-               else
-                       ret = ixgbe_dev_l2_tunnel_forwarding_disable(
-                               dev,
-                               l2_tunnel->l2_tunnel_type);
-       }
-
-       return ret;
-}
-
 static int
 ixgbe_update_vxlan_port(struct ixgbe_hw *hw,
                        uint16_t port)
@@ -8831,7 +7981,7 @@ ixgbe_l2_tn_filter_restore(struct rte_eth_dev *dev)
        struct ixgbe_l2_tn_info *l2_tn_info =
                IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
        struct ixgbe_l2_tn_filter *node;
-       struct rte_eth_l2_tunnel_conf l2_tn_conf;
+       struct ixgbe_l2_tunnel_conf l2_tn_conf;
 
        TAILQ_FOREACH(node, &l2_tn_info->l2_tn_list, entries) {
                l2_tn_conf.l2_tunnel_type = node->key.l2_tn_type;
@@ -8938,7 +8088,7 @@ ixgbe_clear_all_l2_tn_filter(struct rte_eth_dev *dev)
        struct ixgbe_l2_tn_info *l2_tn_info =
                IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private);
        struct ixgbe_l2_tn_filter *l2_tn_filter;
-       struct rte_eth_l2_tunnel_conf l2_tn_conf;
+       struct ixgbe_l2_tunnel_conf l2_tn_conf;
        int ret = 0;
 
        while ((l2_tn_filter = TAILQ_FIRST(&l2_tn_info->l2_tn_list))) {
@@ -9105,15 +8255,12 @@ RTE_PMD_REGISTER_KMOD_DEP(net_ixgbe_vf, "* igb_uio | vfio-pci");
 RTE_PMD_REGISTER_PARAM_STRING(net_ixgbe_vf,
                              IXGBEVF_DEVARG_PFLINK_FULLCHK "=<0|1>");
 
-RTE_LOG_REGISTER(ixgbe_logtype_init, pmd.net.ixgbe.init, NOTICE);
-RTE_LOG_REGISTER(ixgbe_logtype_driver, pmd.net.ixgbe.driver, NOTICE);
+RTE_LOG_REGISTER_SUFFIX(ixgbe_logtype_init, init, NOTICE);
+RTE_LOG_REGISTER_SUFFIX(ixgbe_logtype_driver, driver, NOTICE);
 
-#ifdef RTE_LIBRTE_IXGBE_DEBUG_RX
-RTE_LOG_REGISTER(ixgbe_logtype_rx, pmd.net.ixgbe.rx, DEBUG);
-#endif
-#ifdef RTE_LIBRTE_IXGBE_DEBUG_TX
-RTE_LOG_REGISTER(ixgbe_logtype_tx, pmd.net.ixgbe.tx, DEBUG);
+#ifdef RTE_ETHDEV_DEBUG_RX
+RTE_LOG_REGISTER_SUFFIX(ixgbe_logtype_rx, rx, DEBUG);
 #endif
-#ifdef RTE_LIBRTE_IXGBE_DEBUG_TX_FREE
-RTE_LOG_REGISTER(ixgbe_logtype_tx_free, pmd.net.ixgbe.tx_free, DEBUG);
+#ifdef RTE_ETHDEV_DEBUG_TX
+RTE_LOG_REGISTER_SUFFIX(ixgbe_logtype_tx, tx, DEBUG);
 #endif