From: Anatoly Burakov <anatoly.burakov@intel.com>
To: dev@dpdk.org, Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH v1 01/12] net/ice/base: add direction metadata
Date: Tue, 2 Sep 2025 18:26:51 +0100 [thread overview]
Message-ID: <cd2a7623f02e88a0aff0200a41ad8f4de7543f57.1756833701.git.anatoly.burakov@intel.com> (raw)
In-Reply-To: <cover.1756833701.git.anatoly.burakov@intel.com>
From: Marcin Szycik <marcin.szycik@intel.com>
Currently it is possible to create a rule which might break Tx traffic,
because by default all switch rules apply to both Rx and Tx traffic. In
order to avoid situations where Tx traffic accidentally matches Rx rule,
always add direction metadata to all switch rules.
However, because we're adding a new piece of metadata to all rules, some
rules might get too big and be rejected because they were already maxing
out rule capacity. To avoid that, we will only add direction metadata to
rules that are big enough to store it, on the assumption that if a rule
is already big enough to max out the capacity, the rule is therefore so
hyper-specific that it is highly unlikely to match both Rx and Tx
traffic, and so the direction is implied by the fact that the rule is so
specific.
Signed-off-by: Marcin Szycik <marcin.szycik@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/intel/ice/base/ice_protocol_type.h | 1 +
drivers/net/intel/ice/base/ice_switch.c | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/drivers/net/intel/ice/base/ice_protocol_type.h b/drivers/net/intel/ice/base/ice_protocol_type.h
index de960d7d1b..789f0d7ca5 100644
--- a/drivers/net/intel/ice/base/ice_protocol_type.h
+++ b/drivers/net/intel/ice/base/ice_protocol_type.h
@@ -226,6 +226,7 @@ enum ice_prot_id {
#define ICE_TUN_FLAG_MDID_OFF(word) \
(ICE_MDID_SIZE * (ICE_TUN_FLAG_MDID + (word)))
#define ICE_TUN_FLAG_MASK 0xFF
+#define ICE_FROM_NETWORK_FLAG_MASK 0x8
#define ICE_DIR_FLAG_MASK 0x10
#define ICE_TUN_FLAG_IN_VLAN_MASK 0x80 /* VLAN inside tunneled header */
#define ICE_TUN_FLAG_VLAN_MASK 0x01
diff --git a/drivers/net/intel/ice/base/ice_switch.c b/drivers/net/intel/ice/base/ice_switch.c
index 777fc88d01..54cc2e1c07 100644
--- a/drivers/net/intel/ice/base/ice_switch.c
+++ b/drivers/net/intel/ice/base/ice_switch.c
@@ -7925,6 +7925,20 @@ ice_add_special_words(struct ice_adv_rule_info *rinfo,
u16 mask;
u16 off;
+ /*
+ * Failing to add direction metadata is not considered an error, because
+ * the kinds of rules which would trigger this error are already so
+ * highly specific that they're unlikely to match both Rx and Tx traffic
+ * at the same time.
+ */
+ if (lkup_exts->n_val_words < ICE_MAX_CHAIN_WORDS) {
+ u8 word = lkup_exts->n_val_words++;
+
+ lkup_exts->fv_words[word].prot_id = ICE_META_DATA_ID_HW;
+ lkup_exts->fv_words[word].off = ICE_TUN_FLAG_MDID_OFF(0);
+ lkup_exts->field_mask[word] = ICE_FROM_NETWORK_FLAG_MASK;
+ }
+
/* If this is a tunneled packet, then add recipe index to match the
* tunnel bit in the packet metadata flags. If this is a tun_and_non_tun
* packet, then add recipe index to match the direction bit in the flag.
--
2.47.3
next prev parent reply other threads:[~2025-09-02 17:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-02 17:26 [PATCH v1 00/12] net/ice: update to latest version Anatoly Burakov
2025-09-02 17:26 ` Anatoly Burakov [this message]
2025-09-02 17:26 ` [PATCH v1 02/12] net/ice/base: fix adding special words Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 03/12] net/ice/base: fix memory leak in HW profile handling Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 04/12] net/ice/base: fix memory leak in recipe handling Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 05/12] net/ice/base: clean up RSS LUT selection Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 06/12] net/ice/base: add 40G speed Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 07/12] net/ice/base: allow overriding recipe ID Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 08/12] net/ice/base: add missing health status defines Anatoly Burakov
2025-09-02 17:26 ` [PATCH v1 09/12] net/ice/base: improve global config lock behavior Anatoly Burakov
2025-09-02 17:27 ` [PATCH v1 10/12] net/ice: count drop-all filter stats in Rx stats Anatoly Burakov
2025-09-02 17:27 ` [PATCH v1 11/12] net/ice/base: add E835 device ID's Anatoly Burakov
2025-09-02 17:27 ` [PATCH v1 12/12] net/ice: update README Anatoly Burakov
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=cd2a7623f02e88a0aff0200a41ad8f4de7543f57.1756833701.git.anatoly.burakov@intel.com \
--to=anatoly.burakov@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@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).