[PATCH iwl-net v3 0/2] ice: fix DFLT Rx rule handling for promisc and switchdev
From: Petr Oros <hidden>
Date: 2026-07-01 13:36:20
Also in:
intel-wired-lan, lkml
Two fixes for the uplink default VSI Rx rule (DFLT) on E810 when the netdev is in IFF_PROMISC. Patch 1 drops the redundant per-VLAN promisc expansion that exhausts the FLU pool on a wide VLAN trunk across several PFs. Patch 2 keeps the DFLT Rx rule across a switchdev teardown instead of clobbering the promisc state the operator asked for. Changes since v2: - Patch 1: dropped the two vid=0 ICE_SW_LKUP_PROMISC <-> ICE_SW_LKUP_PROMISC_VLAN recipe-swap guards; each swap is net-zero and guarding the demote stranded the vid=0 rule when the last VLAN was removed under the DFLT rule. - Patch 1: drop the now-redundant per-VID multicast promisc rules right after ice_set_dflt_vsi(). A bridge join raises IFF_ALLMULTI and IFF_PROMISC in separate sync passes, so the allmulti pass expands the per-VID rules before the DFLT rule exists; the cleanup keeps them from lingering and exhausting the FLU pool. exit_dflt_promisc() reinstates them on promisc off. - Patch 1: issue ice_set_promisc(ICE_MCAST_PROMISC_BITS) whenever the netdev is promiscuous, not only when this VSI installs the default VSI rule, so multicast promisc is not lost when the rule is already in use (owned by another VSI, or preserved across a switchdev session). - Patch 1: hoisted the combined VLAN promisc mask in ice_clear_promisc() into a local for alignment. Dropped Aleksandr's Reviewed-by since the code changed. - Patch 2: corrected the Fixes tag to 5c07be96d8b3, the commit that made ice_eswitch_setup_env() use the idempotent ice_set_dflt_vsi(); before it a pre-existing promisc DFLT rule made setup fail with -EEXIST so the release path was never reached. Link to v2: https://lore.kernel.org/all/20260622113428.2565255-1-poros@redhat.com/ (local) Link to v1: https://lore.kernel.org/all/cover.1781786935.git.poros@redhat.com/ (local) Petr Oros (2): ice: skip per-VLAN promisc rules when default VSI Rx rule is set ice: preserve uplink DFLT Rx rule on switchdev release drivers/net/ethernet/intel/ice/ice_eswitch.c | 18 ++- drivers/net/ethernet/intel/ice/ice_main.c | 111 +++++++++++++++---- 2 files changed, 104 insertions(+), 25 deletions(-) -- 2.54.0