[PATCH iwl-net 00/10] ice: port missing i40e fixes

From: Petr Oros

Date: Fri Oct 02 2026 - 09:15:15 EST


This series fixes bugs in ice that have been fixed in i40e, some of them
years ago, but are still present in ice. They were found by going
through the i40e history and checking each fix against the current ice
code.

Patches 3, 6 and 8 have no i40e counterpart. They showed up while
verifying the ports and are kept in the series. Patch 3 was found while
testing patch 2. With the IRQ unwind fixed the netdev still could not be
opened again after the failed ndo_open, so patch 2 alone does not make
that error path recoverable. Patch 6 was found while building a
reproducer for the i40e MAC filter overflow fixes. Those are not part of
this series, because a full switch table on E810 leaves no room for the
promiscuous rule either. Patch 8 was found while checking the i40e PF
reset fixes. It is an ice regression of the poll loop timeout check,
which i40e does correctly.

Every patch was checked on E810 before and after the change. Patches 1,
4, 5 and 6 have plain reproducers, which show UDP tunnel offload lost
after CORER, an always empty default XPS map, VF tx_dropped stuck at
zero and multicast filters silently not programmed. Patches 2, 3, 8, 9
and 10 need conditions the test box does not hit on its own (a failing
request_irq, a hung PFR, a WoL capable port, counters past 2^32) and
were verified with fault injection. Patch 7 was verified by filling the
switch table, with debug prints for the failure analysis.

An LLM was used to go through the i40e history, to write the
reproducers and fault injection hooks and to draft the patches and
changelogs. All of it was reviewed, and every fix was tested on E810 as
described above.

Petr Oros (10):
ice: replay UDP tunnel ports after a core or global reset
ice: fix IRQ freeing in ice_vsi_req_irq_msix() error path
ice: stop the LAN Tx queues when ice_vsi_open() fails
ice: restore the default XPS map after a netdev TC change
ice: report VF tx_dropped with tx_errors instead of tx_discards
ice: keep adding MAC filters after one that already exists
ice: take the switch rule AQ error from the response descriptor
ice: detect a PF reset that does not complete
ice: program multicast magic wake before tearing down the main VSI
ice: fix unsigned stat widths

drivers/net/ethernet/intel/ice/ice.h | 8 ++---
drivers/net/ethernet/intel/ice/ice_common.c | 2 +-
drivers/net/ethernet/intel/ice/ice_lib.c | 6 ++++
drivers/net/ethernet/intel/ice/ice_main.c | 36 ++++++++++++++-------
drivers/net/ethernet/intel/ice/ice_sriov.c | 2 +-
drivers/net/ethernet/intel/ice/ice_switch.c | 17 +++++++---
6 files changed, 49 insertions(+), 22 deletions(-)

--
2.55.0