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
