On 4/25/2021 9:03 AM, Jiawen Wu wrote: > Regard QINQ as one case of extend VLAN, and always enable QINQ mode when > double VLAN is set, to avoid RSS does not work for QINQ packets. >
It is hard to understand above paragraph, can you please reword it? Also in the patch title s/VALN/VLAN VLAN_EXTEND mainly comes from ixgbe, it is different than QinQ, which one does your device supports? > Fixes: 220b0e49bc47 ("net/txgbe: support VLAN") > Cc: sta...@dpdk.org > > Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com> > --- > drivers/net/txgbe/txgbe_ethdev.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/txgbe/txgbe_ethdev.c > b/drivers/net/txgbe/txgbe_ethdev.c > index 97796f040b..87c041c2ec 100644 > --- a/drivers/net/txgbe/txgbe_ethdev.c > +++ b/drivers/net/txgbe/txgbe_ethdev.c > @@ -1217,17 +1217,12 @@ static void > txgbe_vlan_hw_extend_enable(struct rte_eth_dev *dev) > { > struct txgbe_hw *hw = TXGBE_DEV_HW(dev); > - struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; > - struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode; > uint32_t ctrl; > > PMD_INIT_FUNC_TRACE(); > > ctrl = rd32(hw, TXGBE_PORTCTL); > - ctrl |= TXGBE_PORTCTL_VLANEXT; > - if (rxmode->offloads & DEV_RX_OFFLOAD_QINQ_STRIP || > - txmode->offloads & DEV_TX_OFFLOAD_QINQ_INSERT) > - ctrl |= TXGBE_PORTCTL_QINQ; > + ctrl |= TXGBE_PORTCTL_VLANEXT | TXGBE_PORTCTL_QINQ; > wr32(hw, TXGBE_PORTCTL, ctrl); > } > > @@ -1287,8 +1282,9 @@ txgbe_vlan_offload_config(struct rte_eth_dev *dev, int > mask) > txgbe_vlan_hw_filter_disable(dev); > } > > - if (mask & ETH_VLAN_EXTEND_MASK) { > - if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND) > + if (mask & (ETH_VLAN_EXTEND_MASK | ETH_QINQ_STRIP_MASK)) { > + if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND || > + rxmode->offloads & DEV_RX_OFFLOAD_QINQ_STRIP) > txgbe_vlan_hw_extend_enable(dev); > else > txgbe_vlan_hw_extend_disable(dev); >