When set the vlan_strip_offload off, it doesn't work. Because we can't update the msg in the nic.
This patch will fix this error. Fixes: d4a27a3b092a ("nfp: add basic features") Cc: sta...@dpdk.org Signed-off-by: Peng Zhang <peng.zh...@corigine.com> Signed-off-by: Yong Xu <yong...@corigine.com> Signed-off-by: Chaoyong He <chaoyong...@corigine.com> --- drivers/net/nfp/nfp_common.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index b26770dbfb..ab4cfda389 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -968,19 +968,18 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask) int ret; hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); - new_ctrl = 0; + new_ctrl = hw->ctrl; - /* Enable vlan strip if it is not configured yet */ - if ((mask & RTE_ETH_VLAN_STRIP_OFFLOAD) && - !(hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN)) - new_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_RXVLAN; - - /* Disable vlan strip just if it is configured */ - if (!(mask & RTE_ETH_VLAN_STRIP_OFFLOAD) && - (hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN)) - new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_RXVLAN; + if (mask & RTE_ETH_VLAN_STRIP_OFFLOAD) { + /* Disable vlan strip just if it is configured */ + if (hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN) + new_ctrl = new_ctrl & ~NFP_NET_CFG_CTRL_RXVLAN; + /* Enable vlan strip if it is not configured yet */ + else + new_ctrl = new_ctrl | NFP_NET_CFG_CTRL_RXVLAN; + } - if (new_ctrl == 0) + if (new_ctrl == hw->ctrl) return 0; update = NFP_NET_CFG_UPDATE_GEN; -- 2.27.0