patch 'net/i40e: fix ethertype filter restore diagnostics' has been queued to stable release 24.11.9

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue Oct 27 12:50:45 CET 2026


Hi,

FYI, your patch has been queued to stable release 24.11.9

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

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/ced5917debb5cbed23c7636728dd75f463970c96

Thanks.

Luca Boccassi

---
>From ced5917debb5cbed23c7636728dd75f463970c96 Mon Sep 17 00:00:00 2001
From: Artem Novikov <naa at amicon.ru>
Date: Wed, 16 Sep 2026 12:31:43 +0300
Subject: [PATCH] net/i40e: fix ethertype filter restore diagnostics

[ upstream commit bb066d5f77585b88aca3441b98c9b54082772d90 ]

The control packet filter command only fills its statistics output on
success. The restore path ignores command failures and logs statistics
even if no command succeeds. With an empty filter list, it reads
uninitialized statistics.

Check each restore result and log failures with the affected filter.
Continue restoring the remaining filters after an error. Log resource
usage once after the loop, using the last successful command's
statistics, and skip this log if no command succeeded. The command
helper leaves the statistics unchanged on failure.

Fixes: ddcd4d4dbbe0 ("net/i40e: restore ethertype filter")

Signed-off-by: Artem Novikov <naa at amicon.ru>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index c289b1bab0d..e2b43adc610 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -11695,7 +11695,9 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)
 		*ethertype_list = &pf->ethertype.ethertype_list;
 	struct i40e_ethertype_filter *f;
 	struct i40e_control_filter_stats stats;
+	enum i40e_status_code ret;
 	uint16_t flags;
+	bool stats_valid = false;
 
 	TAILQ_FOREACH(f, ethertype_list, rules) {
 		flags = 0;
@@ -11705,18 +11707,29 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)
 			flags |= I40E_AQC_ADD_CONTROL_PACKET_FLAGS_DROP;
 		flags |= I40E_AQC_ADD_CONTROL_PACKET_FLAGS_TO_QUEUE;
 
-		memset(&stats, 0, sizeof(stats));
-		i40e_aq_add_rem_control_packet_filter(hw,
+		ret = i40e_aq_add_rem_control_packet_filter(hw,
 					    f->input.mac_addr.addr_bytes,
 					    f->input.ether_type,
 					    flags, pf->main_vsi->seid,
 					    f->queue, 1, &stats, NULL);
+		if (ret != I40E_SUCCESS) {
+			PMD_DRV_LOG(ERR,
+				    "Failed to restore ethertype filter, ether_type=0x%04x, queue=%u, vsi_seid=%u, err %d",
+				    f->input.ether_type, f->queue,
+				    pf->main_vsi->seid, ret);
+			continue;
+		}
+
+		stats_valid = true;
+	}
+
+	if (stats_valid) {
+		PMD_DRV_LOG(INFO, "Ethertype filter:"
+			    " mac_etype_used = %u, etype_used = %u,"
+			    " mac_etype_free = %u, etype_free = %u",
+			    stats.mac_etype_used, stats.etype_used,
+			    stats.mac_etype_free, stats.etype_free);
 	}
-	PMD_DRV_LOG(INFO, "Ethertype filter:"
-		    " mac_etype_used = %u, etype_used = %u,"
-		    " mac_etype_free = %u, etype_free = %u",
-		    stats.mac_etype_used, stats.etype_used,
-		    stats.mac_etype_free, stats.etype_free);
 }
 
 /* Restore tunnel filter */
-- 
2.47.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-10-27 11:43:59.514536011 +0000
+++ 0151-net-i40e-fix-ethertype-filter-restore-diagnostics.patch	2026-10-27 11:43:53.694065020 +0000
@@ -1 +1 @@
-From bb066d5f77585b88aca3441b98c9b54082772d90 Mon Sep 17 00:00:00 2001
+From ced5917debb5cbed23c7636728dd75f463970c96 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bb066d5f77585b88aca3441b98c9b54082772d90 ]
+
@@ -18 +19,0 @@
-Cc: stable at dpdk.org
@@ -23 +24 @@
- drivers/net/intel/i40e/i40e_ethdev.c | 27 ++++++++++++++++++++-------
+ drivers/net/i40e/i40e_ethdev.c | 27 ++++++++++++++++++++-------
@@ -26,5 +27,5 @@
-diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
-index 5d6102cae7..41d5586403 100644
---- a/drivers/net/intel/i40e/i40e_ethdev.c
-+++ b/drivers/net/intel/i40e/i40e_ethdev.c
-@@ -11612,7 +11612,9 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)
+diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
+index c289b1bab0d..e2b43adc610 100644
+--- a/drivers/net/i40e/i40e_ethdev.c
++++ b/drivers/net/i40e/i40e_ethdev.c
+@@ -11695,7 +11695,9 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)
@@ -40 +41 @@
-@@ -11622,18 +11624,29 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)
+@@ -11705,18 +11707,29 @@ i40e_ethertype_filter_restore(struct i40e_pf *pf)


More information about the stable mailing list