From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 85B62A04A3 for ; Fri, 5 Jun 2020 20:25:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C1A221D510; Fri, 5 Jun 2020 20:25:42 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id D8FA21D510 for ; Fri, 5 Jun 2020 20:25:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591381540; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Dw7j/Mqt+PdtDogrNxLsHhc7XzKJMqKW40dHVScEBXs=; b=RATJcX6EoMYqMiXNcfCzxoxqYSkvnyI/Pl69LenRocl3D1SnA9do1iwzuT2HviniE3ACuM ScwllJXfBEJY7As+muVCqbs+GL9+hGqqSQ/LvJ9i954ijfy2BQRux9YtQUBIgO8GsUwWuf AyrSJvEM+MdmpF2Vn8sNm2F+1TofllQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-414-wb7rjeL3Nf-RHYEHL_JCuQ-1; Fri, 05 Jun 2020 14:25:36 -0400 X-MC-Unique: wb7rjeL3Nf-RHYEHL_JCuQ-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 17A24835B5B; Fri, 5 Jun 2020 18:25:35 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.130]) by smtp.corp.redhat.com (Postfix) with ESMTP id F004C60C47; Fri, 5 Jun 2020 18:25:33 +0000 (UTC) From: Kevin Traynor To: Raslan Darawsheh Cc: Ori Kam , Bernard Iremonger , dpdk stable Date: Fri, 5 Jun 2020 19:23:58 +0100 Message-Id: <20200605182525.22483-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'app/testpmd: add parsing for QinQ VLAN headers' has been queued to LTS release 18.11.9 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 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 Acked-by: Ori Kam Acked-by: Bernard Iremonger --- 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@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);