vlan: Invoke driver vlan hooks only if device is present
NIC drivers mark device as detached during error recovery. It expects no manangement hooks to be invoked in this state. Invoke driver vlan hooks only if device is present. Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@avagotech.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
754107e341
commit
74f2d19caf
|
@ -206,7 +206,10 @@ static int __vlan_vid_add(struct vlan_info *vlan_info, __be16 proto, u16 vid,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (vlan_hw_filter_capable(dev, vid_info)) {
|
if (vlan_hw_filter_capable(dev, vid_info)) {
|
||||||
err = ops->ndo_vlan_rx_add_vid(dev, proto, vid);
|
if (netif_device_present(dev))
|
||||||
|
err = ops->ndo_vlan_rx_add_vid(dev, proto, vid);
|
||||||
|
else
|
||||||
|
err = -ENODEV;
|
||||||
if (err) {
|
if (err) {
|
||||||
kfree(vid_info);
|
kfree(vid_info);
|
||||||
return err;
|
return err;
|
||||||
|
@ -264,7 +267,10 @@ static void __vlan_vid_del(struct vlan_info *vlan_info,
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (vlan_hw_filter_capable(dev, vid_info)) {
|
if (vlan_hw_filter_capable(dev, vid_info)) {
|
||||||
err = ops->ndo_vlan_rx_kill_vid(dev, proto, vid);
|
if (netif_device_present(dev))
|
||||||
|
err = ops->ndo_vlan_rx_kill_vid(dev, proto, vid);
|
||||||
|
else
|
||||||
|
err = -ENODEV;
|
||||||
if (err) {
|
if (err) {
|
||||||
pr_warn("failed to kill vid %04x/%d for device %s\n",
|
pr_warn("failed to kill vid %04x/%d for device %s\n",
|
||||||
proto, vid, dev->name);
|
proto, vid, dev->name);
|
||||||
|
|
Loading…
Reference in New Issue