All of lore.kernel.org
 help / color / mirror / Atom feed
From: Murphy Yang <murphyx.yang@intel.com>
To: dev@dpdk.org
Cc: qiming.yang@intel.com, jia.guo@intel.com, qi.z.zhang@intel.com,
	stevex.yang@intel.com, jingjing.wu@intel.com,
	beilei.xing@intel.com, Murphy Yang <murphyx.yang@intel.com>
Subject: [dpdk-dev] [PATCH v6] net/iavf: fix invalid RSS combinations rule can be created
Date: Mon, 28 Dec 2020 02:28:36 +0000	[thread overview]
Message-ID: <20201228022836.41870-1-murphyx.yang@intel.com> (raw)
In-Reply-To: <20201224022044.84292-1-murphyx.yang@intel.com>

Currently, when use 'flow' command to create a rule that combine with
several RSS types, even the RSS type combination is invalid or unsupported,
it also be created successfully.

Here list some invalid RSS combinations:
 - ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP
 - ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_TCP

Here list some currently unsupported RSS combinations:
 - ETH_RSS_GTPU | ETH_RSS_IPV4
 - ETH_RSS_GTPU | ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP
 - ETH_RSS_GTPU | ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP
 - ETH_RSS_GTPU | ETH_RSS_IPV6
 - ETH_RSS_GTPU | ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_UDP
 - ETH_RSS_GTPU | ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_TCP

For invalid RSS combinations, this
patch adds these combinations in 'invalid_rss_comb' array to do
valid check, if the combination check failed, the rule will be created
unsuccessful.

For unsupported RSS combinations, this patch adds these combinations in
'unsupported_rss_comb' array to do valid check, if the combination check
failed, the rule will be created unsuccessful.

Fixes: 91f27b2e39ab ("net/iavf: refactor RSS")

Signed-off-by: Murphy Yang <murphyx.yang@intel.com>
---
v6:
- add unsupported RSS combinations array.
v5:
- remove 'ETH_RSS_GTPU' from input set mask.
v4:
- use 'ETH_RSS_XXX' replace 'IAVF_RSS_TYPE_INNER_XXX'
v3:
- update the comments.
v2:
- add invalid RSS combinations.
 drivers/net/iavf/iavf_hash.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index c4c73e6644..0061eb6652 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -806,12 +806,23 @@ static void iavf_refine_proto_hdrs(struct virtchnl_proto_hdrs *proto_hdrs,
 
 static uint64_t invalid_rss_comb[] = {
 	ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP,
+	ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP,
 	ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_UDP,
+	ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_TCP,
 	RTE_ETH_RSS_L3_PRE32 | RTE_ETH_RSS_L3_PRE40 |
 	RTE_ETH_RSS_L3_PRE48 | RTE_ETH_RSS_L3_PRE56 |
 	RTE_ETH_RSS_L3_PRE96
 };
 
+static uint64_t unsupported_rss_comb[] = {
+	ETH_RSS_GTPU | ETH_RSS_IPV4,
+	ETH_RSS_GTPU | ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP,
+	ETH_RSS_GTPU | ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP,
+	ETH_RSS_GTPU | ETH_RSS_IPV6,
+	ETH_RSS_GTPU | ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_UDP,
+	ETH_RSS_GTPU | ETH_RSS_IPV6 | ETH_RSS_NONFRAG_IPV6_TCP
+};
+
 struct rss_attr_type {
 	uint64_t attr;
 	uint64_t type;
@@ -875,6 +886,13 @@ iavf_any_invalid_rss_type(enum rte_eth_hash_function rss_func,
 			return true;
 	}
 
+	/* check unsupported rss combination */
+	for (i = 0; i < RTE_DIM(unsupported_rss_comb); i++) {
+		if (__builtin_popcountll(rss_type &
+				unsupported_rss_comb[i]) > 1)
+			return true;
+	}
+
 	/* check invalid RSS attribute */
 	for (i = 0; i < RTE_DIM(rss_attr_to_valid_type); i++) {
 		struct rss_attr_type *rat = &rss_attr_to_valid_type[i];
-- 
2.17.1


  reply	other threads:[~2020-12-28  2:32 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09  7:14 [dpdk-dev] [PATCH] net/iavf: fix negative GTP-U flow rules create successfully Murphy Yang
2020-12-18  6:18 ` [dpdk-dev] [PATCH v2] " Murphy Yang
2020-12-23  2:32   ` Guo, Jia
2020-12-23  6:21   ` [dpdk-dev] [PATCH v3] net/iavf: fix invalid RSS combinations rule can be created Murphy Yang
2020-12-23  8:03     ` [dpdk-dev] [PATCH v4] " Murphy Yang
2020-12-23  8:14       ` Guo, Jia
2020-12-24  2:20       ` [dpdk-dev] [PATCH v5] " Murphy Yang
2020-12-28  2:28         ` Murphy Yang [this message]
2021-01-07  7:58           ` [dpdk-dev] [PATCH v7] " Murphy Yang
2021-01-07  9:17             ` [dpdk-dev] [PATCH v8] " Murphy Yang
2021-01-07  9:33               ` Guo, Jia
2021-01-12  4:52                 ` Zhang, Qi Z
2021-01-13  5:13               ` Huang, ZhiminX

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=20201228022836.41870-1-murphyx.yang@intel.com \
    --to=murphyx.yang@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=jia.guo@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=stevex.yang@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.