[PATCH iwl-next v2 0/8] ice: in VEB, prevent "cross-vlan" traffic

Jakub Slepecki
2025-11-25T08:35:00Z

Currently, packets that match MAC address of a VF will be sent to loopback
even if they would cross VLAN boundaries. Effectively, this drops them.
In this patch series, we aim to address this behaviour by adding MAC,VLAN
to complement what MAC-only filters do to select packets for loopback.

To reproduce the issue have E810 connected to another adapter, then:

ip l set $pfa vf 0 vlan 4
ip l set $pfa vf 1 vlan 7
ip l set $pfb vf 0 trust on spoof off vlan 4
ip l set $pfb vf 1 trust on spoof off vlan 7
ip l set $vfa0 netns $netns0 up
ip l set $vfa1 netns $netns1 up
ip netns exec $netns0 ip a add 10.0.0.1/24 dev $vfa0
ip netns exec $netns1 ip a add 10.0.0.2/24 dev $vfa1
ip l add $br type bridge
ip l set $vfb0 master $br up
ip l set $vfb1 master $br up
ip l set $br up

Where $pfa is the E810 and $pfb is its link partner. Send the packets
between $vfa0 and $vfa1. We expect to see ICMP packets at the $br.
Instead, ARP is unable to resolve the 10.0.0.1 because the reply is
stuck in the internal switch.

Changes in v2:
- Use FIELD_GET et al. when handling fi.lb_en and fi.lan_en.
- Rename /LB_LAN/ s/_MASK/_M/ because one of uses would need to break
line.
- Close open parenthesis in ice_vsi_update_bridge_mode() description.
- Explain returns in ice_vsi_update_bridge_mode().

v1: https://lore.kernel.org/intel-wired-lan/20251120162813.37942-1-jakub.slepecki@intel.com/T/

Jakub Slepecki (7):
ice: in dvm, use outer VLAN in MAC,VLAN lookup
ice: allow creating mac,vlan filters along mac filters
ice: do not check for zero mac when creating mac filters
ice: allow overriding lan_en, lb_en in switch
ice: update mac,vlan rules when toggling between VEB and VEPA
ice: add functions to query for vsi's pvids
ice: in VEB, prevent "cross-vlan" traffic from hitting loopback

Michal Swiatkowski (1):
ice: add mac vlan to filter API

drivers/net/ethernet/intel/ice/ice_fltr.c | 104 +++++++++++++++++-
drivers/net/ethernet/intel/ice/ice_fltr.h | 10 +-
drivers/net/ethernet/intel/ice/ice_lib.c | 56 ++++++++++
drivers/net/ethernet/intel/ice/ice_lib.h | 2 +
drivers/net/ethernet/intel/ice/ice_main.c | 56 +++++++---
drivers/net/ethernet/intel/ice/ice_switch.c | 79 +++++++++----
drivers/net/ethernet/intel/ice/ice_switch.h | 13 ++-
drivers/net/ethernet/intel/ice/ice_vf_lib.c | 8 +-
.../net/ethernet/intel/ice/ice_vlan_mode.c | 12 ++
9 files changed, 295 insertions(+), 45 deletions(-)

--
2.43.0