From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 29FDEA0C4D; Mon, 6 Sep 2021 02:28:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B078540A4B; Mon, 6 Sep 2021 02:28:31 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 7639540042 for ; Mon, 6 Sep 2021 02:28:30 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10098"; a="216693678" X-IronPort-AV: E=Sophos;i="5.85,271,1624345200"; d="scan'208";a="216693678" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2021 17:28:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,271,1624345200"; d="scan'208";a="429695937" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga006.jf.intel.com with ESMTP; 05 Sep 2021 17:28:28 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Sun, 5 Sep 2021 17:28:28 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX601.ccr.corp.intel.com (10.109.6.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 6 Sep 2021 08:28:26 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.2242.012; Mon, 6 Sep 2021 08:28:26 +0800 From: "Zhang, Qi Z" To: "Zhang, AlvinX" , "Guo, Junfeng" CC: "dev@dpdk.org" , Ajit Khaparde , "Singh, Aman Deep" Thread-Topic: [PATCH v7] ethdev: add IPv4 and L4 checksum RSS offload types Thread-Index: AQHXnk39bX8w6Q7w6kuvdPlzP307rquWL3xg Date: Mon, 6 Sep 2021 00:28:26 +0000 Message-ID: <40f3d05eea4548ed87d49696feb9f23c@intel.com> References: <20210831094459.7840-1-alvinx.zhang@intel.com> <20210831095255.21156-1-alvinx.zhang@intel.com> In-Reply-To: <20210831095255.21156-1-alvinx.zhang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 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 Subject: Re: [dpdk-dev] [PATCH v7] ethdev: add IPv4 and L4 checksum RSS offload types X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Zhang, AlvinX > Sent: Tuesday, August 31, 2021 5:53 PM > To: Zhang, Qi Z ; Guo, Junfeng > > Cc: dev@dpdk.org; Zhang, AlvinX ; Ajit Khaparde > ; Singh, Aman Deep > > Subject: [PATCH v7] ethdev: add IPv4 and L4 checksum RSS offload types >=20 > This patch defines new RSS offload types for IPv4 and > L4(TCP/UDP/SCTP) checksum, which are required when users want to > distribute packets based on the IPv4 or L4 checksum field. >=20 > For example "flow create 0 ingress pattern eth / ipv4 / end actions rss t= ypes > ipv4-chksum end queues end / end", this flow causes all matching packets = to be > distributed to queues on basis of IPv4 checksum. >=20 > Signed-off-by: Alvin Zhang > Acked-by: Ajit Khaparde > Acked-by: Aman Deep Singh > --- >=20 > v6: rebase to eeedef70, update some note > v7: fix code style issues > --- > app/test-pmd/cmdline.c | 4 +++- > app/test-pmd/config.c | 2 ++ > doc/guides/rel_notes/release_21_11.rst | 5 +++++ > lib/ethdev/rte_ethdev.h | 24 ++++++++++++++++++++++++ > 4 files changed, 34 insertions(+), 1 deletion(-) >=20 > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > 82253bc..656a311 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -2252,6 +2252,8 @@ struct cmd_config_rss { > rss_conf.rss_hf =3D ETH_RSS_ECPRI; > else if (!strcmp(res->value, "mpls")) > rss_conf.rss_hf =3D ETH_RSS_MPLS; > + else if (!strcmp(res->value, "ipv4-chksum")) > + rss_conf.rss_hf =3D ETH_RSS_IPV4_CHKSUM; > else if (!strcmp(res->value, "none")) > rss_conf.rss_hf =3D 0; > else if (!strcmp(res->value, "level-default")) { @@ -2323,7 +2325,7 @@ > struct cmd_config_rss { > .help_str =3D "port config all rss " > "all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|" >=20 > "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|none|level-default|" > - "level-outer|level-inner|", > + "level-outer|level-inner|ipv4-chksum|", > .tokens =3D { > (void *)&cmd_config_rss_port, > (void *)&cmd_config_rss_keyword, > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index > 31d8ba1..ece78f2 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -140,6 +140,8 @@ > { "gtpu", ETH_RSS_GTPU }, > { "ecpri", ETH_RSS_ECPRI }, > { "mpls", ETH_RSS_MPLS }, > + { "ipv4-chksum", ETH_RSS_IPV4_CHKSUM }, > + { "l4-chksum", ETH_RSS_L4_CHKSUM }, > { NULL, 0 }, > }; >=20 > diff --git a/doc/guides/rel_notes/release_21_11.rst > b/doc/guides/rel_notes/release_21_11.rst > index d707a55..fa29b13 100644 > --- a/doc/guides/rel_notes/release_21_11.rst > +++ b/doc/guides/rel_notes/release_21_11.rst > @@ -55,6 +55,11 @@ New Features > Also, make sure to start the actual text at the margin. > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D >=20 > +* **Add new RSS offload types for IPv4/L4 checksum in RSS flow.** > + > + Add macros ETH_RSS_IPV4_CHKSUM and ETH_RSS_L4_CHKSUM, now IPv4 > and > + TCP/UDP/SCTP header checksum field can be used as input set for RSS. > + >=20 > Removed Items > ------------- > diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index > d2b27c3..e6734df 100644 > --- a/lib/ethdev/rte_ethdev.h > +++ b/lib/ethdev/rte_ethdev.h > @@ -537,6 +537,30 @@ struct rte_eth_rss_conf { > #define ETH_RSS_PPPOE (1ULL << 31) > #define ETH_RSS_ECPRI (1ULL << 32) > #define ETH_RSS_MPLS (1ULL << 33) > +#define ETH_RSS_IPV4_CHKSUM (1ULL << 34) > + > +/** > + * The ETH_RSS_L4_CHKSUM generally refers to a type of checksum field > +for > + * any L4 header, such as TCP, UDP and SCTP. It is similar to > +ETH_RSS_PORT, > + * it does not specify the type of L4 header. > + * We use this macro to replace below macro for constricting the use of > +RSS > + * offload bits: > + * ETH_RSS_IPV4_TCP_CHKSUM > + * ETH_RSS_IPV4_UDP_CHKSUM > + * ETH_RSS_IPV4_SCTP_CHKSUM > + * ETH_RSS_IPV6_TCP_CHKSUM > + * ETH_RSS_IPV6_UDP_CHKSUM > + * ETH_RSS_IPV6_SCTP_CHKSUM > + * > + * Then how to use this macro? We can use it in RSS flow where the > +pattern > + * type will specify the L4 header type, for example "flow create 0 > +ingress \ > + * pattern eth / ipv4 / tcp / end actions rss types l4-chksum end > +queues end \ > + * / end" > + * > + * For the case that checksum is not used in a UDP header, it takes the > + * reserved value 0 as input for the hash function. > + */ > +#define ETH_RSS_L4_CHKSUM (1ULL << 35) >=20 > /* > * We use the following macros to combine with above ETH_RSS_* for > -- > 1.8.3.1 Reviewed-by: Qi Zhang