patches for DPDK stable branches
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: Huisong Li <lihuisong@huawei.com>
Cc: Dongdong Liu <liudongdong3@huawei.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'net/hns3: fix IPv4 RSS' has been queued to stable release 20.11.7
Date: Thu,  3 Nov 2022 09:27:45 +0000	[thread overview]
Message-ID: <20221103092758.1099402-87-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20221103092758.1099402-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to stable release 20.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/22. 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

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1d2054bc3718635ead72104661a2d42b387e4aa7

Thanks.

Luca Boccassi

---
From 1d2054bc3718635ead72104661a2d42b387e4aa7 Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong@huawei.com>
Date: Fri, 30 Sep 2022 15:22:16 +0800
Subject: [PATCH] net/hns3: fix IPv4 RSS

[ upstream commit 2bd90635bde040d5c8b66f3b48b7a48d2d4e4e83 ]

When user only use 'ipv4' to set 'rss_hf', hns3 will enable
all tuple fields for 'ipv4' flow. But if user use 'ipv4-tcp'
, 'ipv4' and 'l4-src-only' to set 'rss_hf', driver does not
enable all tuple fields for 'ipv4' flow.

Fixes: 806f1d5ab0e3 ("net/hns3: set RSS hash type input configuration")

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
---
 drivers/net/hns3/hns3_rss.c | 270 ++++++++++++++++++++++++------------
 1 file changed, 178 insertions(+), 92 deletions(-)

diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index ad9e74262f..cec152baa4 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -70,130 +70,209 @@ enum hns3_tuple_field {
 	HNS3_RSS_FIELD_IPV6_FRAG_IP_S
 };
 
+enum hns3_rss_tuple_type {
+	HNS3_RSS_IP_TUPLE,
+	HNS3_RSS_IP_L4_TUPLE,
+};
+
 static const struct {
 	uint64_t rss_types;
+	uint16_t tuple_type;
 	uint64_t rss_field;
 } hns3_set_tuple_table[] = {
+	/* IPV4-FRAG */
 	{ ETH_RSS_FRAG_IPV4 | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_S) },
 	{ ETH_RSS_FRAG_IPV4 | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_D) },
+	{ ETH_RSS_FRAG_IPV4,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_D) },
+
+	/* IPV4 */
+	{ ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) },
+	{ ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
+	{ ETH_RSS_IPV4,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
+
+	/* IPV4-OTHER */
+	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) },
+	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
+	{ ETH_RSS_NONFRAG_IPV4_OTHER,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
+
+	/* IPV4-TCP */
 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_D) },
+	{ ETH_RSS_NONFRAG_IPV4_TCP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_D) },
+
+	/* IPV4-UDP */
 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_D) },
+	{ ETH_RSS_NONFRAG_IPV4_UDP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_D) },
+
+	/* IPV4-SCTP */
 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_S) },
 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_D) },
-	{ ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) },
-	{ ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
-	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_SRC_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) },
-	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_DST_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
+	{ ETH_RSS_NONFRAG_IPV4_SCTP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_VER) },
+
+	/* IPV6-FRAG */
 	{ ETH_RSS_FRAG_IPV6 | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_S) },
 	{ ETH_RSS_FRAG_IPV6 | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_D) },
+	{ ETH_RSS_FRAG_IPV6,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_D) },
+
+	/* IPV6 */
+	{ ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) },
+	{ ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
+	{ ETH_RSS_IPV6,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
+
+	/* IPV6-OTHER */
+	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) },
+	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
+	{ ETH_RSS_NONFRAG_IPV6_OTHER,
+	  HNS3_RSS_IP_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
+
+	/* IPV6-TCP */
 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_D) },
+	{ ETH_RSS_NONFRAG_IPV6_TCP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_D) },
+
+	/* IPV6-UDP */
 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_D) },
+	{ ETH_RSS_NONFRAG_IPV6_UDP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_D) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_S) |
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_D) },
+
+	/* IPV6-SCTP */
 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_D) },
 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_SRC_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_SCTP_S) },
 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_DST_ONLY,
+	  HNS3_RSS_IP_L4_TUPLE,
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_SCTP_D) },
-	{ ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) },
-	{ ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
-	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_SRC_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) },
-	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_DST_ONLY,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
-};
-
-static const struct {
-	uint64_t rss_types;
-	uint64_t rss_field;
-} hns3_set_rss_types[] = {
-	{ ETH_RSS_FRAG_IPV4, BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_S) },
-	{ ETH_RSS_NONFRAG_IPV4_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_TCP_D) },
-	{ ETH_RSS_NONFRAG_IPV4_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_UDP_D) },
-	{ ETH_RSS_NONFRAG_IPV4_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_SCTP_VER) },
-	{ ETH_RSS_IPV4,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
-	{ ETH_RSS_NONFRAG_IPV4_OTHER,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_NONFRAG_IP_D) },
-	{ ETH_RSS_FRAG_IPV6, BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_D) },
-	{ ETH_RSS_NONFRAG_IPV6_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_TCP_D) },
-	{ ETH_RSS_NONFRAG_IPV6_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_D) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_UDP_D) },
-	{ ETH_RSS_NONFRAG_IPV6_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_S) |
+	{ ETH_RSS_NONFRAG_IPV6_SCTP,
+	  HNS3_RSS_IP_L4_TUPLE,
+	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_S) |
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_D) |
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_SCTP_D) |
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_SCTP_S) |
 	  BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_SCTP_VER) },
-	{ ETH_RSS_IPV6,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) },
-	{ ETH_RSS_NONFRAG_IPV6_OTHER,
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_S) |
-	  BIT_ULL(HNS3_RSS_FIELD_IPV6_NONFRAG_IP_D) }
 };
 
 /*
@@ -321,46 +400,53 @@ hns3_rss_reset_indir_table(struct hns3_hw *hw)
 	return ret;
 }
 
-int
-hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw, uint64_t rss_hf)
+static uint64_t
+hns3_rss_calc_tuple_filed(uint64_t rss_hf)
 {
-	struct hns3_rss_input_tuple_cmd *req;
-	struct hns3_cmd_desc desc;
-	uint32_t fields_count = 0; /* count times for setting tuple fields */
+	uint64_t l3_only_mask = ETH_RSS_L3_SRC_ONLY |
+				ETH_RSS_L3_DST_ONLY;
+	uint64_t l4_only_mask = ETH_RSS_L4_SRC_ONLY |
+				ETH_RSS_L4_DST_ONLY;
+	uint64_t l3_l4_only_mask = l3_only_mask | l4_only_mask;
+	bool has_l3_l4_only = !!(rss_hf & l3_l4_only_mask);
+	bool has_l3_only = !!(rss_hf & l3_only_mask);
+	uint64_t tuple = 0;
 	uint32_t i;
-	int ret;
-
-	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_RSS_INPUT_TUPLE, false);
-
-	req = (struct hns3_rss_input_tuple_cmd *)desc.data;
 
 	for (i = 0; i < RTE_DIM(hns3_set_tuple_table); i++) {
-		if ((rss_hf & hns3_set_tuple_table[i].rss_types) ==
-		     hns3_set_tuple_table[i].rss_types) {
-			req->tuple_field |=
-			    rte_cpu_to_le_64(hns3_set_tuple_table[i].rss_field);
-			fields_count++;
-		}
-	}
+		if ((rss_hf & hns3_set_tuple_table[i].rss_types) !=
+		    hns3_set_tuple_table[i].rss_types)
+			continue;
 
-	/*
-	 * When user does not specify the following types or a combination of
-	 * the following types, it enables all fields for the supported RSS
-	 * types. the following types as:
-	 * - ETH_RSS_L3_SRC_ONLY
-	 * - ETH_RSS_L3_DST_ONLY
-	 * - ETH_RSS_L4_SRC_ONLY
-	 * - ETH_RSS_L4_DST_ONLY
-	 */
-	if (fields_count == 0) {
-		for (i = 0; i < RTE_DIM(hns3_set_rss_types); i++) {
-			if ((rss_hf & hns3_set_rss_types[i].rss_types) ==
-			     hns3_set_rss_types[i].rss_types)
-				req->tuple_field |= rte_cpu_to_le_64(
-					hns3_set_rss_types[i].rss_field);
+		if (hns3_set_tuple_table[i].tuple_type == HNS3_RSS_IP_TUPLE) {
+			if (hns3_set_tuple_table[i].rss_types & l3_only_mask ||
+			    !has_l3_only)
+				tuple |= hns3_set_tuple_table[i].rss_field;
+			continue;
 		}
+
+		/* For IP types with L4, we need check both L3 and L4 */
+		if (hns3_set_tuple_table[i].rss_types & l3_l4_only_mask ||
+		    !has_l3_l4_only)
+			tuple |= hns3_set_tuple_table[i].rss_field;
 	}
 
+	return tuple;
+}
+
+int
+hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw, uint64_t rss_hf)
+{
+	struct hns3_rss_input_tuple_cmd *req;
+	struct hns3_cmd_desc desc;
+	uint64_t tuple_field;
+	int ret;
+
+	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_RSS_INPUT_TUPLE, false);
+	req = (struct hns3_rss_input_tuple_cmd *)desc.data;
+
+	tuple_field = hns3_rss_calc_tuple_filed(rss_hf);
+	req->tuple_field = rte_cpu_to_le_64(tuple_field);
 	ret = hns3_cmd_send(hw, &desc, 1);
 	if (ret) {
 		hns3_err(hw, "Update RSS flow types tuples failed %d", ret);
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-03 09:27:30.750906100 +0000
+++ 0087-net-hns3-fix-IPv4-RSS.patch	2022-11-03 09:27:25.549425848 +0000
@@ -1 +1 @@
-From 2bd90635bde040d5c8b66f3b48b7a48d2d4e4e83 Mon Sep 17 00:00:00 2001
+From 1d2054bc3718635ead72104661a2d42b387e4aa7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2bd90635bde040d5c8b66f3b48b7a48d2d4e4e83 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17,2 +18,2 @@
- drivers/net/hns3/hns3_rss.c | 266 ++++++++++++++++++++++++------------
- 1 file changed, 176 insertions(+), 90 deletions(-)
+ drivers/net/hns3/hns3_rss.c | 270 ++++++++++++++++++++++++------------
+ 1 file changed, 178 insertions(+), 92 deletions(-)
@@ -21 +22 @@
-index 6d71ee94a9..ea745c791f 100644
+index ad9e74262f..cec152baa4 100644
@@ -39 +40 @@
- 	{ RTE_ETH_RSS_FRAG_IPV4 | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_FRAG_IPV4 | ETH_RSS_L3_SRC_ONLY,
@@ -42 +43 @@
- 	{ RTE_ETH_RSS_FRAG_IPV4 | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_FRAG_IPV4 | ETH_RSS_L3_DST_ONLY,
@@ -45 +46 @@
-+	{ RTE_ETH_RSS_FRAG_IPV4,
++	{ ETH_RSS_FRAG_IPV4,
@@ -51 +52 @@
-+	{ RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_L3_SRC_ONLY,
++	{ ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
@@ -54 +55 @@
-+	{ RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_L3_DST_ONLY,
++	{ ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
@@ -57 +58 @@
-+	{ RTE_ETH_RSS_IPV4,
++	{ ETH_RSS_IPV4,
@@ -63 +64 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER | RTE_ETH_RSS_L3_SRC_ONLY,
++	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_SRC_ONLY,
@@ -66 +67 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER | RTE_ETH_RSS_L3_DST_ONLY,
++	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_DST_ONLY,
@@ -69 +70 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER,
++	{ ETH_RSS_NONFRAG_IPV4_OTHER,
@@ -75 +76 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_SRC_ONLY,
@@ -78 +79 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_DST_ONLY,
@@ -81 +82 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_SRC_ONLY,
@@ -84 +85 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_DST_ONLY,
@@ -87 +88 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP,
++	{ ETH_RSS_NONFRAG_IPV4_TCP,
@@ -95 +96 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY,
@@ -98 +99 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_DST_ONLY,
@@ -101 +102 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_SRC_ONLY,
@@ -104 +105 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_DST_ONLY,
@@ -107 +108 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP,
++	{ ETH_RSS_NONFRAG_IPV4_UDP,
@@ -115 +116 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_SRC_ONLY,
@@ -118 +119 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_DST_ONLY,
@@ -121 +122 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_SRC_ONLY,
@@ -124 +125 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_DST_ONLY,
@@ -127 +128 @@
--	{ RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_L3_SRC_ONLY,
+-	{ ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
@@ -129 +130 @@
--	{ RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_L3_DST_ONLY,
+-	{ ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
@@ -131 +132 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER | RTE_ETH_RSS_L3_SRC_ONLY,
+-	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_SRC_ONLY,
@@ -133 +134 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER | RTE_ETH_RSS_L3_DST_ONLY,
+-	{ ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_L3_DST_ONLY,
@@ -135 +136 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP,
++	{ ETH_RSS_NONFRAG_IPV4_SCTP,
@@ -144 +145 @@
- 	{ RTE_ETH_RSS_FRAG_IPV6 | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_FRAG_IPV6 | ETH_RSS_L3_SRC_ONLY,
@@ -147 +148 @@
- 	{ RTE_ETH_RSS_FRAG_IPV6 | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_FRAG_IPV6 | ETH_RSS_L3_DST_ONLY,
@@ -150 +151 @@
-+	{ RTE_ETH_RSS_FRAG_IPV6,
++	{ ETH_RSS_FRAG_IPV6,
@@ -156 +157 @@
-+	{ RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_L3_SRC_ONLY,
++	{ ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
@@ -159 +160 @@
-+	{ RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_L3_DST_ONLY,
++	{ ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
@@ -162 +163 @@
-+	{ RTE_ETH_RSS_IPV6,
++	{ ETH_RSS_IPV6,
@@ -168 +169 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER | RTE_ETH_RSS_L3_SRC_ONLY,
++	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_SRC_ONLY,
@@ -171 +172 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER | RTE_ETH_RSS_L3_DST_ONLY,
++	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_DST_ONLY,
@@ -174 +175 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER,
++	{ ETH_RSS_NONFRAG_IPV6_OTHER,
@@ -180 +181 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY,
@@ -183 +184 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_DST_ONLY,
@@ -186 +187 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_SRC_ONLY,
@@ -189 +190 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_DST_ONLY,
@@ -192 +193 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP,
++	{ ETH_RSS_NONFRAG_IPV6_TCP,
@@ -200 +201 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY,
@@ -203 +204 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_DST_ONLY,
@@ -206 +207 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_SRC_ONLY,
@@ -209 +210 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_DST_ONLY,
@@ -212 +213 @@
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP,
++	{ ETH_RSS_NONFRAG_IPV6_UDP,
@@ -220 +221 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP | RTE_ETH_RSS_L3_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY,
@@ -223 +224 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP | RTE_ETH_RSS_L3_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_DST_ONLY,
@@ -226 +227 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP | RTE_ETH_RSS_L4_SRC_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_SRC_ONLY,
@@ -229 +230 @@
- 	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP | RTE_ETH_RSS_L4_DST_ONLY,
+ 	{ ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_DST_ONLY,
@@ -232 +233 @@
--	{ RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_L3_SRC_ONLY,
+-	{ ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
@@ -234 +235 @@
--	{ RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_L3_DST_ONLY,
+-	{ ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
@@ -236 +237 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER | RTE_ETH_RSS_L3_SRC_ONLY,
+-	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_SRC_ONLY,
@@ -238 +239 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER | RTE_ETH_RSS_L3_DST_ONLY,
+-	{ ETH_RSS_NONFRAG_IPV6_OTHER | ETH_RSS_L3_DST_ONLY,
@@ -246 +247 @@
--	{ RTE_ETH_RSS_FRAG_IPV4, BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_D) |
+-	{ ETH_RSS_FRAG_IPV4, BIT_ULL(HNS3_RSS_FIELD_IPV4_EN_FRAG_IP_D) |
@@ -248 +249 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_S) |
+-	{ ETH_RSS_NONFRAG_IPV4_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV4_TCP_EN_IP_S) |
@@ -252 +253 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_S) |
+-	{ ETH_RSS_NONFRAG_IPV4_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV4_UDP_EN_IP_S) |
@@ -256 +257 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_S) |
+-	{ ETH_RSS_NONFRAG_IPV4_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV4_SCTP_EN_IP_S) |
@@ -261 +262 @@
--	{ RTE_ETH_RSS_IPV4,
+-	{ ETH_RSS_IPV4,
@@ -264 +265 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV4_OTHER,
+-	{ ETH_RSS_NONFRAG_IPV4_OTHER,
@@ -267 +268 @@
--	{ RTE_ETH_RSS_FRAG_IPV6, BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_S) |
+-	{ ETH_RSS_FRAG_IPV6, BIT_ULL(HNS3_RSS_FIELD_IPV6_FRAG_IP_S) |
@@ -269 +270 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_S) |
+-	{ ETH_RSS_NONFRAG_IPV6_TCP, BIT_ULL(HNS3_RSS_FIELD_IPV6_TCP_EN_IP_S) |
@@ -273 +274 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_S) |
+-	{ ETH_RSS_NONFRAG_IPV6_UDP, BIT_ULL(HNS3_RSS_FIELD_IPV6_UDP_EN_IP_S) |
@@ -277,2 +278,2 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_S) |
-+	{ RTE_ETH_RSS_NONFRAG_IPV6_SCTP,
+-	{ ETH_RSS_NONFRAG_IPV6_SCTP, BIT_ULL(HNS3_RSS_FIELD_IPV6_SCTP_EN_IP_S) |
++	{ ETH_RSS_NONFRAG_IPV6_SCTP,
@@ -285 +286 @@
--	{ RTE_ETH_RSS_IPV6,
+-	{ ETH_RSS_IPV6,
@@ -288 +289 @@
--	{ RTE_ETH_RSS_NONFRAG_IPV6_OTHER,
+-	{ ETH_RSS_NONFRAG_IPV6_OTHER,
@@ -297,0 +299,2 @@
+-int
+-hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw, uint64_t rss_hf)
@@ -300,5 +303,8 @@
-+{
-+	uint64_t l3_only_mask = RTE_ETH_RSS_L3_SRC_ONLY |
-+				RTE_ETH_RSS_L3_DST_ONLY;
-+	uint64_t l4_only_mask = RTE_ETH_RSS_L4_SRC_ONLY |
-+				RTE_ETH_RSS_L4_DST_ONLY;
+ {
+-	struct hns3_rss_input_tuple_cmd *req;
+-	struct hns3_cmd_desc desc;
+-	uint32_t fields_count = 0; /* count times for setting tuple fields */
++	uint64_t l3_only_mask = ETH_RSS_L3_SRC_ONLY |
++				ETH_RSS_L3_DST_ONLY;
++	uint64_t l4_only_mask = ETH_RSS_L4_SRC_ONLY |
++				ETH_RSS_L4_DST_ONLY;
@@ -309,34 +315,2 @@
-+	uint32_t i;
-+
-+	for (i = 0; i < RTE_DIM(hns3_set_tuple_table); i++) {
-+		if ((rss_hf & hns3_set_tuple_table[i].rss_types) !=
-+		    hns3_set_tuple_table[i].rss_types)
-+			continue;
-+
-+		if (hns3_set_tuple_table[i].tuple_type == HNS3_RSS_IP_TUPLE) {
-+			if (hns3_set_tuple_table[i].rss_types & l3_only_mask ||
-+			    !has_l3_only)
-+				tuple |= hns3_set_tuple_table[i].rss_field;
-+			continue;
-+		}
-+
-+		/* For IP types with L4, we need check both L3 and L4 */
-+		if (hns3_set_tuple_table[i].rss_types & l3_l4_only_mask ||
-+		    !has_l3_l4_only)
-+			tuple |= hns3_set_tuple_table[i].rss_field;
-+	}
-+
-+	return tuple;
-+}
-+
- int
- hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw, uint64_t rss_hf)
- {
- 	struct hns3_rss_input_tuple_cmd *req;
- 	struct hns3_cmd_desc desc;
--	uint32_t fields_count = 0; /* count times for setting tuple fields */
--	uint32_t i;
-+	uint64_t tuple_field;
- 	int ret;
- 
- 	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_RSS_INPUT_TUPLE, false);
+ 	uint32_t i;
+-	int ret;
@@ -344 +318,3 @@
- 	req = (struct hns3_rss_input_tuple_cmd *)desc.data;
+-	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_RSS_INPUT_TUPLE, false);
+-
+-	req = (struct hns3_rss_input_tuple_cmd *)desc.data;
@@ -346 +322 @@
--	for (i = 0; i < RTE_DIM(hns3_set_tuple_table); i++) {
+ 	for (i = 0; i < RTE_DIM(hns3_set_tuple_table); i++) {
@@ -354 +330,4 @@
--
++		if ((rss_hf & hns3_set_tuple_table[i].rss_types) !=
++		    hns3_set_tuple_table[i].rss_types)
++			continue;
+ 
@@ -359,4 +338,4 @@
--	 * - RTE_ETH_RSS_L3_SRC_ONLY
--	 * - RTE_ETH_RSS_L3_DST_ONLY
--	 * - RTE_ETH_RSS_L4_SRC_ONLY
--	 * - RTE_ETH_RSS_L4_DST_ONLY
+-	 * - ETH_RSS_L3_SRC_ONLY
+-	 * - ETH_RSS_L3_DST_ONLY
+-	 * - ETH_RSS_L4_SRC_ONLY
+-	 * - ETH_RSS_L4_DST_ONLY
@@ -370,3 +349,27 @@
--		}
--	}
--
++		if (hns3_set_tuple_table[i].tuple_type == HNS3_RSS_IP_TUPLE) {
++			if (hns3_set_tuple_table[i].rss_types & l3_only_mask ||
++			    !has_l3_only)
++				tuple |= hns3_set_tuple_table[i].rss_field;
++			continue;
+ 		}
++
++		/* For IP types with L4, we need check both L3 and L4 */
++		if (hns3_set_tuple_table[i].rss_types & l3_l4_only_mask ||
++		    !has_l3_l4_only)
++			tuple |= hns3_set_tuple_table[i].rss_field;
+ 	}
+ 
++	return tuple;
++}
++
++int
++hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw, uint64_t rss_hf)
++{
++	struct hns3_rss_input_tuple_cmd *req;
++	struct hns3_cmd_desc desc;
++	uint64_t tuple_field;
++	int ret;
++
++	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_RSS_INPUT_TUPLE, false);
++	req = (struct hns3_rss_input_tuple_cmd *)desc.data;
++

  parent reply	other threads:[~2022-11-03  9:32 UTC|newest]

Thread overview: 207+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-03  9:26 patch 'net: accept unaligned data in checksum routines' " luca.boccassi
2022-11-03  9:26 ` patch 'eal: fix side effect in some pointer arithmetic macros' " luca.boccassi
2022-11-03  9:26 ` patch 'app/testpmd: restore ixgbe bypass commands' " luca.boccassi
2022-11-03  9:26 ` patch 'net/bonding: fix array overflow in Rx burst' " luca.boccassi
2022-11-03  9:26 ` patch 'net/bonding: fix double slave link status query' " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: fix scattered Rx' " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: fix mbuf lengths in " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: fix length of each segment " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: fix checksum and RSS " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: optimise " luca.boccassi
2022-11-03  9:26 ` patch 'net/axgbe: remove freeing buffer in " luca.boccassi
2022-11-03  9:26 ` patch 'net/nfp: improve HW info header log readability' " luca.boccassi
2022-11-03  9:26 ` patch 'net/txgbe: remove semaphore between SW/FW' " luca.boccassi
2022-11-03  9:26 ` patch 'net/txgbe: rename some extended statistics' " luca.boccassi
2022-11-03  9:26 ` patch 'net/mvneta: fix build with GCC 12' " luca.boccassi
2022-11-03  9:26 ` patch 'malloc: fix storage size for some allocations' " luca.boccassi
2022-11-03  9:26 ` patch 'telemetry: fix escaping of invalid json characters' " luca.boccassi
2022-11-03  9:26 ` patch 'event/dsw: fix flow migration' " luca.boccassi
2022-11-03  9:26 ` patch 'event/sw: fix device name in dump' " luca.boccassi
2022-11-03  9:26 ` patch 'eventdev/eth_tx: add spinlock for adapter start/stop' " luca.boccassi
2022-11-03  9:26 ` patch 'eventdev/eth_tx: fix adapter stop' " luca.boccassi
2022-11-03  9:26 ` patch 'test/ipsec: skip if no compatible device' " luca.boccassi
2022-11-03  9:26 ` patch 'examples/ipsec-secgw: use Tx checksum offload conditionally' " luca.boccassi
2022-11-03  9:26 ` patch 'test/crypto: fix debug messages' " luca.boccassi
2022-11-03  9:26 ` patch 'test/ipsec: fix build with GCC 12' " luca.boccassi
2022-11-03  9:26 ` patch 'ipsec: " luca.boccassi
2022-11-03  9:26 ` patch 'crypto/qat: " luca.boccassi
2022-11-03  9:26 ` patch 'eventdev: fix name of Rx conf type in documentation' " luca.boccassi
2022-11-03  9:26 ` patch 'net/i40e: fix VF representor release' " luca.boccassi
2022-11-03  9:26 ` patch 'net/ice: fix RSS hash update' " luca.boccassi
2022-11-03  9:26 ` patch 'net/iavf: fix pattern check for flow director parser' " luca.boccassi
2022-11-03  9:26 ` patch 'net/iavf: fix Tx done descriptors cleanup' " luca.boccassi
2022-11-03  9:26 ` patch 'net/igc: remove unnecessary PHY ID checks' " luca.boccassi
2022-11-03  9:26 ` patch 'common/iavf: avoid copy in async mode' " luca.boccassi
2022-11-03  9:26 ` patch 'net/ice/base: fix media type of PHY 10G SFI C2C' " luca.boccassi
2022-11-03  9:26 ` patch 'net/ice/base: fix array overflow in add switch recipe' " luca.boccassi
2022-11-03  9:26 ` patch 'net/ice/base: fix add MAC rule' " luca.boccassi
2022-11-03  9:26 ` patch 'net/ice/base: ignore promiscuous already exist' " luca.boccassi
2022-11-03  9:26 ` patch 'net/virtio: fix crash when configured twice' " luca.boccassi
2022-11-03  9:26 ` patch 'examples/vhost: fix use after free' " luca.boccassi
2022-11-03  9:26 ` patch 'eal/x86: add 256 bytes copy for AVX2' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx4: fix Verbs FD leak in secondary process' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix check for orphan wait descriptor' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix single not inline packet storing' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix inline length exceeding descriptor limit' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix Tx check for hardware descriptor length' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix modify action with tunnel decapsulation' " luca.boccassi
2022-11-03  9:27 ` patch 'net/mlx5: fix meter profile delete after disable' " luca.boccassi
2022-11-03  9:27 ` patch 'net/iavf: check illegal packet sizes' " luca.boccassi
2022-11-03  9:27 ` patch 'net/ice: " luca.boccassi
2022-11-03  9:27 ` patch 'net/axgbe: reset end of packet in scattered Rx' " luca.boccassi
2022-11-03  9:27 ` patch 'net/axgbe: clear buffer on scattered Rx chaining failure' " luca.boccassi
2022-11-03  9:27 ` patch 'net/axgbe: save segment data in scattered Rx' " luca.boccassi
2022-11-03  9:27 ` patch 'common/sfc_efx/base: fix maximum Tx data count' " luca.boccassi
2022-11-03  9:27 ` patch 'event/dlb2: handle enqueuing more than maximum depth' " luca.boccassi
2022-11-03 16:20   ` Sevincer, Abdullah
2022-11-03  9:27 ` patch 'cryptodev: fix unduly newlines in logs' " luca.boccassi
2022-11-03  9:27 ` patch 'net/bnxt: fix null pointer dereference in LED config' " luca.boccassi
2022-11-17  9:10   ` 答复: " Mao,Yingming
2022-11-03  9:27 ` patch 'net/bnxt: remove unnecessary check' " luca.boccassi
2022-11-03  9:27 ` patch 'net/bnxt: fix representor info freeing' " luca.boccassi
2022-11-03  9:27 ` patch 'net/bnxt: fix build with GCC 13' " luca.boccassi
2022-11-03  9:27 ` patch 'mem: fix API doc about allocation on secondary processes' " luca.boccassi
2022-11-03  9:27 ` patch 'examples/vm_power_manager: use safe list iterator' " luca.boccassi
2022-11-03  9:27 ` patch 'gro: fix chain index for more than 2 packets' " luca.boccassi
2022-11-03  9:27 ` patch 'timer: fix stopping all timers' " luca.boccassi
2022-11-03  9:27 ` patch 'service: fix stats race condition for MT safe service' " luca.boccassi
2022-11-03  9:27 ` patch 'net/qede/base: fix 32-bit build with GCC 12' " luca.boccassi
2022-11-03  9:27 ` patch 'test/service: fix spurious failures by extending timeout' " luca.boccassi
2022-11-03  9:27 ` patch 'net/tap: fix overflow of network interface index' " luca.boccassi
2022-11-03  9:27 ` patch 'net/memif: fix crash with different number of Rx/Tx queues' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix code check warnings' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix next-to-use overflow in SVE Tx' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix next-to-use overflow in simple " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: optimize SVE Tx performance' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix crash when secondary process access FW' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: delete unused markup' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix RSS filter restore' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix lock protection of RSS flow rule' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix RSS flow rule restore' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: move flow direction rule recovery' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix restore filter function input' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix build with gcov' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix packet type for GENEVE' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix header files includes' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix IPv4 and IPv6 RSS' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix typos in IPv6 SCTP fields' " luca.boccassi
2022-11-03  9:27 ` luca.boccassi [this message]
2022-11-03  9:27 ` patch 'net/hns3: add L3 and L4 RSS types' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: revert fix mailbox communication with HW' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix VF mailbox message handling' " luca.boccassi
2022-11-03  9:27 ` patch 'net/hns3: fix minimum Tx frame length' " luca.boccassi
2022-11-03  9:27 ` patch 'net/nfp: fix memory leak in Rx' " luca.boccassi
2022-11-03  9:27 ` patch 'net/dpaa: fix jumbo packet Rx in case of VSP' " luca.boccassi
2022-11-03  9:27 ` patch 'net/dpaa: fix buffer freeing in slow path' " luca.boccassi
2022-11-03  9:27 ` patch 'mempool: fix get objects from mempool with cache' " luca.boccassi
2022-11-03  9:27 ` patch 'gro: trim tail padding bytes' " luca.boccassi
2022-11-03  9:27 ` patch 'net/bonding: fix Tx hash for TCP' " luca.boccassi
2022-11-03  9:27 ` patch 'eal: fix data race in multi-process support' " luca.boccassi
2022-11-03  9:27 ` patch 'graph: fix node objects allocation' " luca.boccassi
2022-11-03  9:27 ` patch 'node: check Rx element " luca.boccassi
2022-11-05 17:11   ` patch 'trace: fix mode for new trace point' " luca.boccassi
2022-11-05 17:11     ` patch 'trace: fix mode change' " luca.boccassi
2022-11-05 17:11     ` patch 'trace: fix leak with regexp' " luca.boccassi
2022-11-05 17:11     ` patch 'trace: fix dynamically enabling trace points' " luca.boccassi
2022-11-05 17:11     ` patch 'trace: fix race in debug dump' " luca.boccassi
2022-11-05 17:11     ` patch 'trace: fix metadata " luca.boccassi
2022-11-05 17:11     ` patch 'pdump: do not allow enable/disable in primary process' " luca.boccassi
2022-11-05 17:11     ` patch 'service: fix early move to inactive status' " luca.boccassi
2022-11-05 17:11     ` patch 'event/sw: fix flow ID init in self test' " luca.boccassi
2022-11-05 17:11     ` patch 'event/sw: fix log " luca.boccassi
2022-11-05 17:11     ` patch 'eventdev/crypto: fix multi-process' " luca.boccassi
2022-11-05 17:11     ` patch 'eventdev/eth_tx: fix queue delete' " luca.boccassi
2022-11-05 17:11     ` patch 'gro: check payload length after trim' " luca.boccassi
2022-11-05 17:11     ` patch 'license: fix paths' " luca.boccassi
2022-11-05 17:11     ` patch 'net/bonding: fix mode 4 with dedicated queues' " luca.boccassi
2022-11-05 17:11     ` patch 'net/bonding: fix descriptor limit reporting' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ionic: fix endianness for Rx and Tx' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ionic: fix endianness for RSS' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ionic: fix adapter name for logging' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ionic: fix reported error stats' " luca.boccassi
2022-11-05 17:11     ` patch 'net/bonding: fix flow flush order on close' " luca.boccassi
2022-11-05 17:11     ` patch 'vhost: add non-blocking API for posting interrupt' " luca.boccassi
2022-11-05 17:11     ` patch 'net/virtio: remove declaration of undefined function' " luca.boccassi
2022-11-05 17:11     ` patch 'net/mlx5: fix thread workspace memory leak' " luca.boccassi
2022-11-05 17:11     ` patch 'net/mlx5: fix RSS expansion buffer size' " luca.boccassi
2022-11-05 17:11     ` patch 'net/mlx5: fix tunnel header with IPIP offload' " luca.boccassi
2022-11-05 17:11     ` patch 'sched: fix subport profile configuration' " luca.boccassi
2022-11-05 17:11     ` patch 'examples/qos_sched: fix number of subport profiles' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ixgbe: fix broadcast Rx on VF after promisc removal' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ixgbe: fix unexpected VLAN Rx in promisc mode on VF' " luca.boccassi
2022-11-05 17:11     ` patch 'net/ice: fix null function pointer call' " luca.boccassi
2022-11-05 17:11     ` patch 'net/iavf: add thread for event callbacks' " luca.boccassi
2022-11-05 17:11     ` patch 'net/iavf: fix queue stop for large VF' " luca.boccassi
2022-11-05 17:11     ` patch 'examples/l2fwd-crypto: fix typo in error message' " luca.boccassi
2022-11-05 17:11     ` patch 'test/crypto: fix wireless auth digest segment' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix memory leak' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: add LDPC encoder padding function' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: check turbo dec/enc input' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: add null checks' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix ring/queue allocation' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix input length for CRC24B' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix clearing PF IR outside handler' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix device minimum alignment' " luca.boccassi
2022-11-05 17:11     ` patch 'baseband/acc100: fix close cleanup' " luca.boccassi
2022-11-05 17:11     ` patch 'test/crypto: fix PDCP vectors' " luca.boccassi
2022-11-05 17:11     ` patch 'examples/ipsec-secgw: fix Tx checksum offload flag' " luca.boccassi
2022-11-05 17:11     ` patch 'crypto/qat: fix null hash algorithm digest size' " luca.boccassi
2022-11-17 23:08       ` patch 'net/bonding: set initial value of descriptor count alignment' " luca.boccassi
2022-11-17 23:08         ` patch 'net/bonding: fix slave device Rx/Tx offload configuration' " luca.boccassi
2022-11-17 23:08         ` patch 'app/testpmd: fix MAC header in checksum forward engine' " luca.boccassi
2022-11-17 23:08         ` patch 'net/bonding: fix dropping valid MAC packets' " luca.boccassi
2022-11-17 23:08         ` patch 'app/testpmd: make quit flag volatile' " luca.boccassi
2022-11-17 23:08         ` patch 'net/bonding: fix mbuf fast free handling' " luca.boccassi
2022-11-17 23:08         ` patch 'eal: fix doxygen comments for UUID' " luca.boccassi
2022-11-17 23:08         ` patch 'power: fix some doxygen comments' " luca.boccassi
2022-11-17 23:08         ` patch 'hash: fix RCU configuration memory leak' " luca.boccassi
2022-11-17 23:08         ` patch 'test/hash: remove dead code in extendable bucket test' " luca.boccassi
2022-11-17 23:08         ` patch 'test/hash: fix bulk lookup check' " luca.boccassi
2022-11-17 23:08         ` patch 'net/mlx5: fix race condition in counter pool resizing' " luca.boccassi
2022-11-17 23:08         ` patch 'net/mlx5: fix hairpin split with set VLAN VID action' " luca.boccassi
2022-11-17 23:08         ` patch 'net/mlx5: fix first segment inline length' " luca.boccassi
2022-11-17 23:08         ` patch 'net/mlx5: fix port initialization with small LRO' " luca.boccassi
2022-11-17 23:08         ` patch 'net/mlx5: fix port event cleaning order' " luca.boccassi
2022-11-18 12:53           ` Michael Baum
2022-11-18 14:27             ` Luca Boccassi
2022-11-20  7:28               ` Michael Baum
2022-11-21 14:12                 ` Luca Boccassi
2022-11-21 14:17                   ` Michael Baum
2022-11-21 20:36                     ` Michael Baum
2022-11-17 23:08         ` patch 'net/mlx5: fix drop action validation' " luca.boccassi
2022-11-17 23:08         ` patch 'net/ice/base: fix duplicate flow rules' " luca.boccassi
2022-11-17 23:08         ` patch 'net/i40e: fix jumbo frame Rx with X722' " luca.boccassi
2022-11-17 23:08         ` patch 'net/iavf: fix tainted scalar' " luca.boccassi
2022-11-17 23:08         ` patch 'net/ice: fix scalar Rx path segment' " luca.boccassi
2022-11-17 23:08         ` patch 'net/ice: fix scalar Tx " luca.boccassi
2022-11-17 23:08         ` patch 'ci: bump versions of actions in GHA' " luca.boccassi
2022-11-17 23:08         ` patch 'ci: update to new API for step outputs " luca.boccassi
2022-11-17 23:08         ` patch 'doc: fix event timer adapter guide' " luca.boccassi
2022-11-17 23:08         ` patch 'examples/fips_validation: fix typo in error log' " luca.boccassi
2022-11-17 23:08         ` patch 'baseband/acc100: fix input error related to padding' " luca.boccassi
2022-11-17 23:08         ` patch 'doc: fix application name in procinfo guide' " luca.boccassi
2022-11-17 23:08         ` patch 'test/crypto: fix bitwise operator in a SNOW3G case' " luca.boccassi
2022-11-17 23:08         ` patch 'doc: fix typo depreciated instead of deprecated' " luca.boccassi
2022-11-17 23:08         ` patch 'drivers: fix typos found by Lintian' " luca.boccassi
2022-11-17 23:08         ` patch 'doc: fix net drivers ordering' " luca.boccassi
2022-11-17 23:08         ` patch 'ring: fix description' " luca.boccassi
2022-11-17 23:08         ` patch 'ring: remove leftover comment about watermark' " luca.boccassi
2022-11-22 22:02           ` patch 'vdpa/ifc: handle data path update failure' " luca.boccassi
2022-11-22 22:02             ` patch 'service: fix build with clang 15' " luca.boccassi
2022-11-22 22:02             ` patch 'bus/dpaa: " luca.boccassi
2022-11-22 22:02             ` patch 'net/atlantic: " luca.boccassi
2022-11-22 22:02             ` patch 'app/testpmd: " luca.boccassi
2022-11-22 22:02             ` patch 'app/testpmd: fix build with clang 15 in flow code' " luca.boccassi
2022-11-22 22:02             ` patch 'test/efd: fix build with clang 15' " luca.boccassi
2022-11-22 22:02             ` patch 'test/member: " luca.boccassi
2022-11-22 22:02             ` patch 'test/event: " luca.boccassi
2022-11-22 22:02             ` patch 'net/ixgbevf: fix promiscuous and allmulti' " luca.boccassi
2022-11-22 22:02             ` patch 'net/mlx5: fix maximum LRO message size' " luca.boccassi
2022-11-22 22:02             ` patch 'doc: add LRO size limitation in mlx5 guide' " luca.boccassi
2022-11-22 22:02             ` patch 'doc: fix underlines in testpmd " luca.boccassi
2022-11-22 22:02             ` patch 'doc: fix colons in testpmd aged flow rules' " luca.boccassi
2022-11-22 22:02             ` patch 'net/nfp: fix Rx descriptor DMA address' " luca.boccassi
2022-11-22 22:02             ` patch 'doc: fix maximum packet size of virtio driver' " luca.boccassi
2022-11-22 22:02             ` patch 'doc: avoid meson deprecation in setup' " luca.boccassi
2022-11-28 10:47               ` patch 'devtools: fix checkpatch header retrieval from stdin' " luca.boccassi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221103092758.1099402-87-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=lihuisong@huawei.com \
    --cc=liudongdong3@huawei.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).