ethdev: add device flag to bypass auto-filled queue xstats
[dpdk.git] / drivers / net / i40e / i40e_vf_representor.c
index a523e50..9e40406 100644 (file)
@@ -7,6 +7,7 @@
 #include <rte_pci.h>
 #include <rte_malloc.h>
 
+#include "rte_ethdev_driver.h"
 #include "base/i40e_type.h"
 #include "base/virtchnl.h"
 #include "i40e_ethdev.h"
@@ -22,7 +23,7 @@ i40e_vf_representor_link_update(struct rte_eth_dev *ethdev,
        return i40e_dev_link_update(representor->adapter->eth_dev,
                wait_to_complete);
 }
-static void
+static int
 i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
        struct rte_eth_dev_info *dev_info)
 {
@@ -46,7 +47,8 @@ i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
                DEV_RX_OFFLOAD_QINQ_STRIP |
                DEV_RX_OFFLOAD_IPV4_CKSUM |
                DEV_RX_OFFLOAD_UDP_CKSUM |
-               DEV_RX_OFFLOAD_TCP_CKSUM;
+               DEV_RX_OFFLOAD_TCP_CKSUM |
+               DEV_RX_OFFLOAD_VLAN_FILTER;
        dev_info->tx_offload_capa =
                DEV_TX_OFFLOAD_MULTI_SEGS  |
                DEV_TX_OFFLOAD_VLAN_INSERT |
@@ -100,6 +102,8 @@ i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
                representor->adapter->eth_dev->device->name;
        dev_info->switch_info.domain_id = representor->switch_domain_id;
        dev_info->switch_info.port_id = representor->vf_id;
+
+       return 0;
 }
 
 static int
@@ -114,9 +118,10 @@ i40e_vf_representor_dev_start(__rte_unused struct rte_eth_dev *dev)
        return 0;
 }
 
-static void
+static int
 i40e_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev)
 {
+       return 0;
 }
 
 static int
@@ -262,52 +267,52 @@ i40e_vf_representor_stats_get(struct rte_eth_dev *ethdev,
        return ret;
 }
 
-static void
+static int
 i40e_vf_representor_stats_reset(struct rte_eth_dev *ethdev)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
-       rte_pmd_i40e_get_vf_native_stats(
+       return rte_pmd_i40e_get_vf_native_stats(
                representor->adapter->eth_dev->data->port_id,
                representor->vf_id, &representor->stats_offset);
 }
 
-static void
+static int
 i40e_vf_representor_promiscuous_enable(struct rte_eth_dev *ethdev)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
-       rte_pmd_i40e_set_vf_unicast_promisc(
+       return rte_pmd_i40e_set_vf_unicast_promisc(
                representor->adapter->eth_dev->data->port_id,
                representor->vf_id, 1);
 }
 
-static void
+static int
 i40e_vf_representor_promiscuous_disable(struct rte_eth_dev *ethdev)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
-       rte_pmd_i40e_set_vf_unicast_promisc(
+       return rte_pmd_i40e_set_vf_unicast_promisc(
                representor->adapter->eth_dev->data->port_id,
                representor->vf_id, 0);
 }
 
-static void
+static int
 i40e_vf_representor_allmulticast_enable(struct rte_eth_dev *ethdev)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
-       rte_pmd_i40e_set_vf_multicast_promisc(
+       return rte_pmd_i40e_set_vf_multicast_promisc(
                representor->adapter->eth_dev->data->port_id,
                representor->vf_id,  1);
 }
 
-static void
+static int
 i40e_vf_representor_allmulticast_disable(struct rte_eth_dev *ethdev)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
-       rte_pmd_i40e_set_vf_multicast_promisc(
+       return rte_pmd_i40e_set_vf_multicast_promisc(
                representor->adapter->eth_dev->data->port_id,
                representor->vf_id,  0);
 }
@@ -324,7 +329,7 @@ i40e_vf_representor_mac_addr_remove(struct rte_eth_dev *ethdev, uint32_t index)
 
 static int
 i40e_vf_representor_mac_addr_set(struct rte_eth_dev *ethdev,
-               struct ether_addr *mac_addr)
+               struct rte_ether_addr *mac_addr)
 {
        struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
@@ -420,7 +425,7 @@ i40e_vf_representor_vlan_pvid_set(struct rte_eth_dev *ethdev, uint16_t vlan_id,
                representor->vf_id, vlan_id);
 }
 
-struct eth_dev_ops i40e_representor_dev_ops = {
+static const struct eth_dev_ops i40e_representor_dev_ops = {
        .dev_infos_get        = i40e_vf_representor_dev_infos_get,
 
        .dev_start            = i40e_vf_representor_dev_start,
@@ -503,7 +508,8 @@ i40e_vf_representor_init(struct rte_eth_dev *ethdev, void *init_params)
                return -ENODEV;
        }
 
-       ethdev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
+       ethdev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR |
+                                       RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
        ethdev->data->representor_id = representor->vf_id;
 
        /* Setting the number queues allocated to the VF */