| Message ID | 20260204154418.1285309-2-jakub.slepecki@intel.com |
|---|---|
| State | Changes Requested |
| Delegated to: | Anthony Nguyen |
| Headers | show |
| Series | ice: in VEB, prevent "cross-vlan" traffic | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Jakub > Slepecki > Sent: Wednesday, February 4, 2026 4:44 PM > To: intel-wired-lan@lists.osuosl.org > Cc: linux-kernel@vger.kernel.org; netdev@vger.kernel.org; Kitszel, Przemyslaw > <przemyslaw.kitszel@intel.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; michal.swiatkowski@linux.intel.com; Slepecki, > Jakub <jakub.slepecki@intel.com>; Loktionov, Aleksandr > <aleksandr.loktionov@intel.com> > 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@intel.com> > Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> > Signed-off-by: Jakub Slepecki <jakub.slepecki@intel.com> > > --- > 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@intel.com>
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, + }, }; /**