ice: Fix VLAN pruning in switchdev mode
[ Upstream commit 761e0be2888a931465e0d7bbeecce797f9c311a3 ] In switchdev mode the uplink VSI should receive all unmatched packets, including VLANs. Therefore, VLAN pruning should be disabled if uplink is in switchdev mode. It is already being done in ice_eswitch_setup_env(), however the addition of ice_up() in commit44ba608db5("ice: do switchdev slow-path Rx using PF VSI") caused VLAN pruning to be re-enabled after disabling it. Add a check to ice_set_vlan_filtering_features() to ensure VLAN filtering will not be enabled if uplink is in switchdev mode. Note that ice_is_eswitch_mode_switchdev() is being used instead of ice_is_switchdev_running(), as the latter would only return true after the whole switchdev setup completes. Fixes:44ba608db5("ice: do switchdev slow-path Rx using PF VSI") Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com> Tested-by: Priya Singh <priyax.singh@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
25a702f252
commit
7ee237851d
@@ -6361,10 +6361,12 @@ ice_set_vlan_filtering_features(struct ice_vsi *vsi, netdev_features_t features)
|
||||
int err = 0;
|
||||
|
||||
/* support Single VLAN Mode (SVM) and Double VLAN Mode (DVM) by checking
|
||||
* if either bit is set
|
||||
* if either bit is set. In switchdev mode Rx filtering should never be
|
||||
* enabled.
|
||||
*/
|
||||
if (features &
|
||||
(NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER))
|
||||
if ((features &
|
||||
(NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER)) &&
|
||||
!ice_is_eswitch_mode_switchdev(vsi->back))
|
||||
err = vlan_ops->ena_rx_filtering(vsi);
|
||||
else
|
||||
err = vlan_ops->dis_rx_filtering(vsi);
|
||||
|
||||
Reference in New Issue
Block a user