RE: [Intel-wired-lan] [PATCH iwl-next v4 1/7] ice: in dvm, use outer VLAN in MAC, VLAN lookup

From: Romanowski, Rafal

Date: Mon Mar 02 2026 - 12:36:10 EST


> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@xxxxxxxxxx> On Behalf Of Jakub
> Slepecki
> Sent: Wednesday, February 4, 2026 4:44 PM
> To: intel-wired-lan@xxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; Kitszel, Przemyslaw
> <przemyslaw.kitszel@xxxxxxxxx>; Nguyen, Anthony L
> <anthony.l.nguyen@xxxxxxxxx>; michal.swiatkowski@xxxxxxxxxxxxxxx; Slepecki,
> Jakub <jakub.slepecki@xxxxxxxxx>; Loktionov, Aleksandr
> <aleksandr.loktionov@xxxxxxxxx>
> Subject: [Intel-wired-lan] [PATCH iwl-next v4 1/7] ice: in dvm, use outer VLAN in
> MAC, VLAN lookup
>
> In double VLAN mode (DVM), outer VLAN is located a word earlier in the field
> vector compared to the single VLAN mode. We already modify
> ICE_SW_LKUP_VLAN to use it but ICE_SW_LKUP_MAC_VLAN was left
> untouched, causing the lookup to match any packet with one or no layer of Dot1q.
> This change enables to fix cross-vlan loopback traffic using MAC,VLAN lookups.
>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@xxxxxxxxx>
> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@xxxxxxxxxxxxxxx>
> Signed-off-by: Jakub Slepecki <jakub.slepecki@xxxxxxxxx>
>
> ---
> No changes in v4.
> No changes in v3.
> No changes in v2.
> ---
> drivers/net/ethernet/intel/ice/ice_vlan_mode.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_vlan_mode.c
> b/drivers/net/ethernet/intel/ice/ice_vlan_mode.c
> index fb526cb84776..68a7b05de44e 100644
> --- a/drivers/net/ethernet/intel/ice/ice_vlan_mode.c
> +++ b/drivers/net/ethernet/intel/ice/ice_vlan_mode.c
> @@ -198,6 +198,7 @@ static bool ice_is_dvm_supported(struct ice_hw *hw)
> #define ICE_SW_LKUP_VLAN_LOC_LKUP_IDX 1
> #define ICE_SW_LKUP_VLAN_PKT_FLAGS_LKUP_IDX 2
> #define ICE_SW_LKUP_PROMISC_VLAN_LOC_LKUP_IDX 2
> +#define ICE_SW_LKUP_MAC_VLAN_LOC_LKUP_IDX 4
> #define ICE_PKT_FLAGS_0_TO_15_FV_IDX 1
> static struct ice_update_recipe_lkup_idx_params ice_dvm_dflt_recipes[] = {
> {
> @@ -234,6 +235,17 @@ static struct ice_update_recipe_lkup_idx_params
> ice_dvm_dflt_recipes[] = {
> .mask_valid = false, /* use pre-existing mask */
> .lkup_idx = ICE_SW_LKUP_PROMISC_VLAN_LOC_LKUP_IDX,
> },
> + {
> + /* Similarly to ICE_SW_LKUP_VLAN, change to outer/single
> VLAN in
> + * DVM
> + */
> + .rid = ICE_SW_LKUP_MAC_VLAN,
> + .fv_idx = ICE_EXTERNAL_VLAN_ID_FV_IDX,
> + .ignore_valid = true,
> + .mask = 0,
> + .mask_valid = false,
> + .lkup_idx = ICE_SW_LKUP_MAC_VLAN_LOC_LKUP_IDX,
> + },
> };
>
> /**
> --
> 2.43.0


Tested-by: Rafal Romanowski <rafal.romanowski@xxxxxxxxx>