From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id D6EC0A0545;
	Wed, 29 Jun 2022 08:57:22 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id B7EA6400D7;
	Wed, 29 Jun 2022 08:57:22 +0200 (CEST)
Received: from mga02.intel.com (mga02.intel.com [134.134.136.20])
 by mails.dpdk.org (Postfix) with ESMTP id 8C77140042;
 Wed, 29 Jun 2022 08:57:21 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1656485841; x=1688021841;
 h=from:to:cc:subject:date:message-id:references:
 in-reply-to:content-transfer-encoding:mime-version;
 bh=2bkASS2p1QqWMSlCd6T45+NQdzJAWgBBwPaPH0v0AJQ=;
 b=NpIzYbdPX1XFdndPgJfVYCe908Sg+3xxJMNfI/1gsDcrLFRLxB2MjDma
 BNtDCyGrmZurjAAKOnNRAUmkpTynQA32j6wkSL4+jz9WWNHcty2kPcLwK
 49PXVptFPR9MR9Ac3CuXAPEy259QXObdvP88yfMtsfdiXtQQ2zlTIk7jR
 uHA1DRkl2rdPUgWLJyA84O7Xf1L0QsFZDnbCc3MZEqUdJkEAtABYPbXqp
 LsPv9fEXYfUSYFsuEHLkCbHUyzOIDyMiknE1xUMFGgfG5YsP9/EnGdFQy
 phAf12x4irJ02uoQctJ9TdfbCrWPIFRkAj0QYR1FzfqdF/ToJ6rr0uc8X g==;
X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="270707767"
X-IronPort-AV: E=Sophos;i="5.92,230,1650956400"; d="scan'208";a="270707767"
Received: from fmsmga008.fm.intel.com ([10.253.24.58])
 by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 28 Jun 2022 23:57:20 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.92,230,1650956400"; d="scan'208";a="647255797"
Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84])
 by fmsmga008.fm.intel.com with ESMTP; 28 Jun 2022 23:57:20 -0700
Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by
 fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.27; Tue, 28 Jun 2022 23:57:19 -0700
Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by
 fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.27; Tue, 28 Jun 2022 23:57:19 -0700
Received: from fmsmsx612.amr.corp.intel.com ([10.18.126.92]) by
 fmsmsx612.amr.corp.intel.com ([10.18.126.92]) with mapi id 15.01.2308.027;
 Tue, 28 Jun 2022 23:57:19 -0700
From: "Hu, Jiayu" <jiayu.hu@intel.com>
To: Kumara Parameshwaran <kumaraparamesh92@gmail.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "stable@dpdk.org" <stable@dpdk.org>
Subject: RE: [PATCH v5] gro: bug fix in identifying fragmented packets
Thread-Topic: [PATCH v5] gro: bug fix in identifying fragmented packets
Thread-Index: AQHYihENoyU8hq2feU+G5dsTW05/wq1l9rYA
Date: Wed, 29 Jun 2022 06:57:19 +0000
Message-ID: <962006acc1164a068d8cb727516c5816@intel.com>
References: <20220320101232.34438-1-kumaraparamesh92@gmail.com>
 <20220627103114.94924-1-kumaraparmesh92@gmail.com>
In-Reply-To: <20220627103114.94924-1-kumaraparmesh92@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-reaction: no-action
dlp-version: 11.6.500.17
dlp-product: dlpe-windows
x-originating-ip: [10.239.127.36]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

Reviewed-by: Jiayu Hu <jiayu.hu@intel.com>

Thanks,
Jiayu

> -----Original Message-----
> From: Kumara Parameshwaran <kumaraparamesh92@gmail.com>
> Sent: Monday, June 27, 2022 6:31 PM
> To: Hu, Jiayu <jiayu.hu@intel.com>
> Cc: dev@dpdk.org; Kumara Parameshwaran
> <kumaraparamesh92@gmail.com>; stable@dpdk.org
> Subject: [PATCH v5] gro: bug fix in identifying fragmented packets
>=20
> From: Kumara Parameshwaran <kumaraparamesh92@gmail.com>
>=20
> A packet with RTE_PTYPE_L4_FRAG(0x300) contains both RTE_PTYPE_L4_TCP
> (0x100) & RTE_PTYPE_L4_UDP (0x200). A fragmented packet as defined in
> rte_mbuf_ptype.h cannot be recognized as other L4 types and hence the
> GRO layer should not use IS_IPV4_TCP_PKT or IS_IPV4_UDP_PKT for
> RTE_PTYPE_L4_FRAG. Hence, if the packet type is RTE_PTYPE_L4_FRAG the ip
> header should be parsed to recognize the appropriate IP type and invoke t=
he
> respective gro handler.
>=20
> Fixes: 1ca5e6740852 ("gro: support UDP/IPv4")
> Cc: stable@dpdk.org
> Signed-off-by: Kumara Parameshwaran <kumaraparamesh92@gmail.com>
> ---
> v1:
> * Introduce IS_IPV4_FRAGMENT macro to check if fragmented packet and
>   if true extract the IP header to identify the protocol type and
>   invoke the appropriate gro handler. This is done for both
>   rte_gro_reassemble and rte_gro_reassemble_burst APIs.
> v2,v3,v4:
> * Fix extra whitespace and column limit warnings
> v5
> * Use RTE_PTYPE_L4_FRAG to identify the fragmented packets in
>   IS_IPV4_TCP_PKT and IS_IPV4_VXLAN_TCP4_PKT
>=20
>  lib/gro/rte_gro.c | 2 ++
>  1 file changed, 2 insertions(+)
>=20
> diff --git a/lib/gro/rte_gro.c b/lib/gro/rte_gro.c index
> 6f7dd4d709..e35399fd42 100644
> --- a/lib/gro/rte_gro.c
> +++ b/lib/gro/rte_gro.c
> @@ -32,6 +32,7 @@ static gro_tbl_pkt_count_fn
> tbl_pkt_count_fn[RTE_GRO_TYPE_MAX_NUM] =3D {
>=20
>  #define IS_IPV4_TCP_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
>  		((ptype & RTE_PTYPE_L4_TCP) =3D=3D RTE_PTYPE_L4_TCP) && \
> +		((ptype & RTE_PTYPE_L4_FRAG) !=3D RTE_PTYPE_L4_FRAG) &&
> \
>  		(RTE_ETH_IS_TUNNEL_PKT(ptype) =3D=3D 0))
>=20
>  #define IS_IPV4_UDP_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \ @@ -
> 40,6 +41,7 @@ static gro_tbl_pkt_count_fn
> tbl_pkt_count_fn[RTE_GRO_TYPE_MAX_NUM] =3D {
>=20
>  #define IS_IPV4_VXLAN_TCP4_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype)
> && \
>  		((ptype & RTE_PTYPE_L4_UDP) =3D=3D RTE_PTYPE_L4_UDP) && \
> +		((ptype & RTE_PTYPE_L4_FRAG) !=3D RTE_PTYPE_L4_FRAG) &&
> \
>  		((ptype & RTE_PTYPE_TUNNEL_VXLAN) =3D=3D \
>  		 RTE_PTYPE_TUNNEL_VXLAN) && \
>  		((ptype & RTE_PTYPE_INNER_L4_TCP) =3D=3D \
> --
> 2.25.1