DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] ethdev: fix QinQ strip offload support
@ 2019-04-14 11:11 viveksharma
  2019-04-14 11:11 ` viveksharma
                   ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: viveksharma @ 2019-04-14 11:11 UTC (permalink / raw)
  To: dev; +Cc: thomas, ferruh.yigit, arybchenko, Vivek Sharma, stable

From: Vivek Sharma <viveksharma@marvell.com>

Enable missing support for QinQ strip rx offload
in vlan offload set/get methods.

Fixes: cc9d0456b870 ("i40e: support double vlan stripping and insertion")
Cc: stable@dpdk.org

Signed-off-by: Vivek Sharma <viveksharma@marvell.com>
---
 lib/librte_ethdev/rte_ethdev.c | 17 +++++++++++++++++
 lib/librte_ethdev/rte_ethdev.h |  5 ++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index 243beb4..222df4e 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -2770,6 +2770,19 @@ rte_eth_dev_set_vlan_offload(uint16_t port_id, int offload_mask)
 		mask |= ETH_VLAN_EXTEND_MASK;
 	}
 
+	cur = !!(offload_mask & ETH_QINQ_STRIP_OFFLOAD);
+	org = !!(dev->data->dev_conf.rxmode.offloads &
+		 DEV_RX_OFFLOAD_QINQ_STRIP);
+	if (cur != org) {
+		if (cur)
+			dev->data->dev_conf.rxmode.offloads |=
+				DEV_RX_OFFLOAD_QINQ_STRIP;
+		else
+			dev->data->dev_conf.rxmode.offloads &=
+				~DEV_RX_OFFLOAD_QINQ_STRIP;
+		mask |= ETH_QINQ_STRIP_MASK;
+	}
+
 	/*no change*/
 	if (mask == 0)
 		return ret;
@@ -2805,6 +2818,10 @@ rte_eth_dev_get_vlan_offload(uint16_t port_id)
 	    DEV_RX_OFFLOAD_VLAN_EXTEND)
 		ret |= ETH_VLAN_EXTEND_OFFLOAD;
 
+	if (dev->data->dev_conf.rxmode.offloads &
+	    DEV_RX_OFFLOAD_QINQ_STRIP)
+		ret |= DEV_RX_OFFLOAD_QINQ_STRIP;
+
 	return ret;
 }
 
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 40a068f..c1792f4 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -550,11 +550,13 @@ struct rte_eth_rss_conf {
 #define ETH_VLAN_STRIP_OFFLOAD   0x0001 /**< VLAN Strip  On/Off */
 #define ETH_VLAN_FILTER_OFFLOAD  0x0002 /**< VLAN Filter On/Off */
 #define ETH_VLAN_EXTEND_OFFLOAD  0x0004 /**< VLAN Extend On/Off */
+#define ETH_QINQ_STRIP_OFFLOAD   0x0008 /**< QINQ Strip On/Off */
 
 /* Definitions used for mask VLAN setting */
 #define ETH_VLAN_STRIP_MASK   0x0001 /**< VLAN Strip  setting mask */
 #define ETH_VLAN_FILTER_MASK  0x0002 /**< VLAN Filter  setting mask*/
 #define ETH_VLAN_EXTEND_MASK  0x0004 /**< VLAN Extend  setting mask*/
+#define ETH_QINQ_STRIP_MASK   0x0008 /**< QINQ Strip  setting mask */
 #define ETH_VLAN_ID_MAX       0x0FFF /**< VLAN ID is in lower 12 bits*/
 
 /* Definitions used for receive MAC address   */
@@ -965,7 +967,8 @@ struct rte_eth_conf {
 				 DEV_RX_OFFLOAD_TCP_CKSUM)
 #define DEV_RX_OFFLOAD_VLAN (DEV_RX_OFFLOAD_VLAN_STRIP | \
 			     DEV_RX_OFFLOAD_VLAN_FILTER | \
-			     DEV_RX_OFFLOAD_VLAN_EXTEND)
+			     DEV_RX_OFFLOAD_VLAN_EXTEND | \
+			     DEV_RX_OFFLOAD_QINQ_STRIP)
 
 /*
  * If new Rx offload capabilities are defined, they also must be
-- 
2.7.4

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2019-07-04 10:05 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-14 11:11 [dpdk-dev] [PATCH] ethdev: fix QinQ strip offload support viveksharma
2019-04-14 11:11 ` viveksharma
2019-04-15 15:54 ` Stephen Hemminger
2019-04-15 15:54   ` Stephen Hemminger
2019-04-15 21:33   ` Rami Rosen
2019-04-15 21:33     ` Rami Rosen
2019-04-17  7:40 ` [dpdk-dev] [PATCH v2] " viveksharma
2019-04-17  7:40   ` viveksharma
2019-04-17  8:34   ` Thomas Monjalon
2019-04-17  8:34     ` Thomas Monjalon
2019-04-18  7:38     ` [dpdk-dev] [EXT] " Vivek Kumar Sharma
2019-04-18  7:38       ` Vivek Kumar Sharma
2019-04-18  8:07       ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2019-04-18  8:07         ` Thomas Monjalon
2019-04-19  5:59   ` [dpdk-dev] [PATCH v3] ethdev: support QinQ strip dynamic configuration viveksharma
2019-04-19  5:59     ` viveksharma
2019-06-27 11:08     ` Ferruh Yigit
2019-07-01 10:07       ` Andrew Rybchenko
2019-07-01 13:05         ` Ferruh Yigit
2019-07-02  3:37     ` [dpdk-dev] [PATCH v4] " viveksharma
2019-07-03 17:48       ` Ferruh Yigit
2019-07-03 19:55         ` Andrew Rybchenko
2019-07-04  9:41       ` Ferruh Yigit
2019-07-04 10:05         ` Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).