mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
ice: fix enabling RX VLAN filtering
ice_port_vlan_on/off() was introduced in commit2946204b3f
("ice: implement bridge port vlan"). But ice_port_vlan_on() incorrectly assigns ena_rx_filtering to inner_vlan_ops in DVM mode. This causes an error when rx_filtering cannot be enabled in legacy mode. Reproducer: echo 1 > /sys/class/net/$PF/device/sriov_numvfs ip link set $PF vf 0 spoofchk off trust on vlan 3 dmesg: ice 0000:41:00.0: failed to enable Rx VLAN filtering for VF 0 VSI 9 during VF rebuild, error -95 Fixes:2946204b3f
("ice: implement bridge port vlan") Signed-off-by: Petr Oros <poros@redhat.com> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
90ca6956d3
commit
8edfc7a40e
@ -26,24 +26,22 @@ static void ice_port_vlan_on(struct ice_vsi *vsi)
|
||||
struct ice_vsi_vlan_ops *vlan_ops;
|
||||
struct ice_pf *pf = vsi->back;
|
||||
|
||||
/* setup inner VLAN ops */
|
||||
vlan_ops = &vsi->inner_vlan_ops;
|
||||
|
||||
if (ice_is_dvm_ena(&pf->hw)) {
|
||||
vlan_ops = &vsi->outer_vlan_ops;
|
||||
|
||||
/* setup outer VLAN ops */
|
||||
vlan_ops->set_port_vlan = ice_vsi_set_outer_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_outer_port_vlan;
|
||||
|
||||
/* setup inner VLAN ops */
|
||||
vlan_ops = &vsi->inner_vlan_ops;
|
||||
vlan_ops->add_vlan = noop_vlan_arg;
|
||||
vlan_ops->del_vlan = noop_vlan_arg;
|
||||
vlan_ops->ena_stripping = ice_vsi_ena_inner_stripping;
|
||||
vlan_ops->dis_stripping = ice_vsi_dis_inner_stripping;
|
||||
vlan_ops->ena_insertion = ice_vsi_ena_inner_insertion;
|
||||
vlan_ops->dis_insertion = ice_vsi_dis_inner_insertion;
|
||||
} else {
|
||||
vlan_ops = &vsi->inner_vlan_ops;
|
||||
|
||||
/* setup outer VLAN ops */
|
||||
vlan_ops = &vsi->outer_vlan_ops;
|
||||
vlan_ops->set_port_vlan = ice_vsi_set_outer_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_outer_port_vlan;
|
||||
} else {
|
||||
vlan_ops->set_port_vlan = ice_vsi_set_inner_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_inner_port_vlan;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user