Reset the configuration of vlan strip that would be change by the pf kernel driver when adding vlan from vf. Application cannot use rte_eth_dev_set_vlan_offload() to set the VLAN_STRIP, as this will only work for the first time when original and current config mismatch, but for all subsequent call it will be ignored.
Signed-off-by: Souvik Dey <so...@rbbn.com> --- v2: * Simplied the commit log. * goto err; is not required as it has only one more return path and there is no cleanup required apart from just return err. * Updated the comment start from /* -> /** * Changed the error log in case vlan strip command fails. --- drivers/net/i40e/i40e_ethdev_vf.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index c26b036..a00e290 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1078,8 +1078,19 @@ i40evf_add_vlan(struct rte_eth_dev *dev, uint16_t vlanid) args.out_buffer = vf->aq_resp; args.out_size = I40E_AQ_BUF_SZ; err = i40evf_execute_vf_cmd(dev, &args); - if (err) + if (err) { PMD_DRV_LOG(ERR, "fail to execute command OP_ADD_VLAN"); + return err; + } + /** + * In linux kernel driver on receiving ADD_VLAN it enables + * VLAN_STRIP by default. So reconfigure the vlan_offload + * as it was done by the app earlier. + */ + err = i40evf_vlan_offload_set(dev, ETH_VLAN_STRIP_MASK) + if (err) + PMD_DRV_LOG(ERR, "fail to set vlan_strip " + "as a part of OP_ADD_VLAN"); return err; } -- 2.9.3.windows.1