net/i40e: fix VLAN offload setting issue
[dpdk.git] / drivers / net / i40e / i40e_ethdev_vf.c
index b96d77a..96370db 100644 (file)
@@ -1556,13 +1556,19 @@ static int
 i40evf_init_vlan(struct rte_eth_dev *dev)
 {
        /* Apply vlan offload setting */
-       return i40evf_vlan_offload_set(dev, ETH_VLAN_STRIP_MASK);
+       i40evf_vlan_offload_set(dev, ETH_VLAN_STRIP_MASK);
+
+       return 0;
 }
 
 static int
 i40evf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 {
        struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
+       struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
+
+       if (!(vf->vf_res->vf_offload_flags & VIRTCHNL_VF_OFFLOAD_VLAN))
+               return -ENOTSUP;
 
        /* Vlan stripping setting */
        if (mask & ETH_VLAN_STRIP_MASK) {