[dpdk-dev] [PATCH v2] net/ixgbe: fix VLAN strip setting fail for per port
Yanglong Wu
yanglong.wu at intel.com
Fri May 18 09:23:41 CEST 2018
rxq->offload should synchronize with dev_conf
Fixes: 860a94d3c692 ("net/ixgbe: support VLAN strip per queue offloading in VF")
Signed-off-by: Yanglong Wu <yanglong.wu at intel.com>
---
v2:
rework as comments asked
---
drivers/net/ixgbe/ixgbe_ethdev.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index f5006bc94..94d28878a 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2114,6 +2114,14 @@ ixgbe_vlan_hw_strip_config(struct rte_eth_dev *dev)
for (i = 0; i < dev->data->nb_rx_queues; i++) {
rxq = dev->data->rx_queues[i];
ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxq->reg_idx));
+
+ /* rxq->offload should synchronize with dev_conf*/
+ if (dev->data->dev_conf.rxmode.offloads &
+ DEV_RX_OFFLOAD_VLAN_STRIP)
+ rxq->offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;
+ else
+ rxq->offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;
+
if (rxq->offloads & DEV_RX_OFFLOAD_VLAN_STRIP) {
ctrl |= IXGBE_RXDCTL_VME;
on = TRUE;
@@ -5230,6 +5238,14 @@ ixgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
if (mask & ETH_VLAN_STRIP_MASK) {
for (i = 0; i < dev->data->nb_rx_queues; i++) {
rxq = dev->data->rx_queues[i];
+
+ /* rxq->offload should synchronize with dev_conf*/
+ if (dev->data->dev_conf.rxmode.offloads &
+ DEV_RX_OFFLOAD_VLAN_STRIP)
+ rxq->offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;
+ else
+ rxq->offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;
+
on = !!(rxq->offloads & DEV_RX_OFFLOAD_VLAN_STRIP);
ixgbevf_vlan_strip_queue_set(dev, i, on);
}
--
2.11.0
More information about the dev
mailing list