[dpdk-stable] patch 'app/testpmd: add parsing for QinQ VLAN headers' has been queued to LTS release 18.11.9

Kevin Traynor ktraynor at redhat.com
Fri Jun 5 20:23:58 CEST 2020


Hi,

FYI, your patch has been queued to LTS release 18.11.9

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/10/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable-queue/commit/73a8faecb9d26bf73294c9bafe853b492d444344

Thanks.

Kevin.

---
>From 73a8faecb9d26bf73294c9bafe853b492d444344 Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland at mellanox.com>
Date: Thu, 23 Apr 2020 12:05:26 +0300
Subject: [PATCH] app/testpmd: add parsing for QinQ VLAN headers

[ upstream commit f16d377150a0ab406d1e845ae1c96a4519f9c0ee ]

When having QinQ VLAN headers in the packet, parse_ethernet
is capable of parsing only the first VLAN.

Add parsing for QinQ VLAN headers in the packet.

Fixes: 51f694dd40f5 ("app/testpmd: rework checksum forward engine")

Signed-off-by: Raslan Darawsheh <rasland at mellanox.com>
Acked-by: Ori Kam <orika at mellanox.com>
Acked-by: Bernard Iremonger <bernard.iremonger at intel.com>
---
 app/test-pmd/csumonly.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index 46eb52d5b8..b0d528d98c 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -139,6 +139,6 @@ parse_ipv6(struct ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info)
 /*
  * Parse an ethernet header to fill the ethertype, l2_len, l3_len and
- * ipproto. This function is able to recognize IPv4/IPv6 with one optional vlan
- * header. The l4_len argument is only set in case of TCP (useful for TSO).
+ * ipproto. This function is able to recognize IPv4/IPv6 with optional VLAN
+ * headers. The l4_len argument is only set in case of TCP (useful for TSO).
  */
 static void
@@ -147,11 +147,13 @@ parse_ethernet(struct ether_hdr *eth_hdr, struct testpmd_offload_info *info)
 	struct ipv4_hdr *ipv4_hdr;
 	struct ipv6_hdr *ipv6_hdr;
+	struct vlan_hdr *vlan_hdr;
 
 	info->l2_len = sizeof(struct ether_hdr);
 	info->ethertype = eth_hdr->ether_type;
 
-	if (info->ethertype == _htons(ETHER_TYPE_VLAN)) {
-		struct vlan_hdr *vlan_hdr = (struct vlan_hdr *)(eth_hdr + 1);
-
+	while (info->ethertype == _htons(ETHER_TYPE_VLAN) ||
+	       info->ethertype == _htons(ETHER_TYPE_QINQ)) {
+		vlan_hdr = (struct vlan_hdr *)
+			((char *)eth_hdr + info->l2_len);
 		info->l2_len  += sizeof(struct vlan_hdr);
 		info->ethertype = vlan_hdr->eth_proto;
-- 
2.21.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-06-05 19:20:51.036607058 +0100
+++ 0001-app-testpmd-add-parsing-for-QinQ-VLAN-headers.patch	2020-06-05 19:20:50.700043313 +0100
@@ -1 +1 @@
-From f16d377150a0ab406d1e845ae1c96a4519f9c0ee Mon Sep 17 00:00:00 2001
+From 73a8faecb9d26bf73294c9bafe853b492d444344 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f16d377150a0ab406d1e845ae1c96a4519f9c0ee ]
+
@@ -12 +13,0 @@
-Cc: stable at dpdk.org
@@ -18,2 +19,2 @@
- app/test-pmd/csumonly.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
+ app/test-pmd/csumonly.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
@@ -22 +23 @@
-index fe19615b14..8626223793 100644
+index 46eb52d5b8..b0d528d98c 100644
@@ -25 +26 @@
-@@ -140,6 +140,6 @@ parse_ipv6(struct rte_ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info)
+@@ -139,6 +139,6 @@ parse_ipv6(struct ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info)
@@ -34,4 +35,4 @@
-@@ -148,12 +148,13 @@ parse_ethernet(struct rte_ether_hdr *eth_hdr, struct testpmd_offload_info *info)
- 	struct rte_ipv4_hdr *ipv4_hdr;
- 	struct rte_ipv6_hdr *ipv6_hdr;
-+	struct rte_vlan_hdr *vlan_hdr;
+@@ -147,11 +147,13 @@ parse_ethernet(struct ether_hdr *eth_hdr, struct testpmd_offload_info *info)
+ 	struct ipv4_hdr *ipv4_hdr;
+ 	struct ipv6_hdr *ipv6_hdr;
++	struct vlan_hdr *vlan_hdr;
@@ -39 +40 @@
- 	info->l2_len = sizeof(struct rte_ether_hdr);
+ 	info->l2_len = sizeof(struct ether_hdr);
@@ -42,3 +43,2 @@
--	if (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN)) {
--		struct rte_vlan_hdr *vlan_hdr = (
--			struct rte_vlan_hdr *)(eth_hdr + 1);
+-	if (info->ethertype == _htons(ETHER_TYPE_VLAN)) {
+-		struct vlan_hdr *vlan_hdr = (struct vlan_hdr *)(eth_hdr + 1);
@@ -46,3 +46,3 @@
-+	while (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN) ||
-+	       info->ethertype == _htons(RTE_ETHER_TYPE_QINQ)) {
-+		vlan_hdr = (struct rte_vlan_hdr *)
++	while (info->ethertype == _htons(ETHER_TYPE_VLAN) ||
++	       info->ethertype == _htons(ETHER_TYPE_QINQ)) {
++		vlan_hdr = (struct vlan_hdr *)
@@ -50 +50 @@
- 		info->l2_len  += sizeof(struct rte_vlan_hdr);
+ 		info->l2_len  += sizeof(struct vlan_hdr);



More information about the stable mailing list