forked from Minki/linux
qede: Don't try removing unconfigured vlans
As part of ndo_vlan_rx_kill_vid() implementation,
qede is requesting firmware to remove the vlan filter.
This currently happens even if the vlan wasn't previously
added [In case device ran out of vlan credits].
For PFs this doesn't cause any issues as the firmware
would simply ignore the removal request. But for VFs their
parent PF is holding an accounting of the configured vlans,
and such a request would cause the PF to fail the VF's
removal request.
Simply fix this for both PFs & VFs and don't remove filters
that were not previously added.
Fixes: 7c1bfcad9f
("qede: Add vlan filtering offload support")
Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
797cee982e
commit
c524e2f5b7
@ -2064,10 +2064,13 @@ static int qede_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
|
||||
}
|
||||
|
||||
/* Remove vlan */
|
||||
rc = qede_set_ucast_rx_vlan(edev, QED_FILTER_XCAST_TYPE_DEL, vid);
|
||||
if (rc) {
|
||||
DP_ERR(edev, "Failed to remove VLAN %d\n", vid);
|
||||
return -EINVAL;
|
||||
if (vlan->configured) {
|
||||
rc = qede_set_ucast_rx_vlan(edev, QED_FILTER_XCAST_TYPE_DEL,
|
||||
vid);
|
||||
if (rc) {
|
||||
DP_ERR(edev, "Failed to remove VLAN %d\n", vid);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
qede_del_vlan_from_list(edev, vlan);
|
||||
|
Loading…
Reference in New Issue
Block a user