diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 9d46b2c8c2e7af0537e4f5de69f8170e2630b2b6..c8a361a51cb408c4f0ade83d8bb2b4de6ef65572 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -1641,6 +1641,9 @@ static int hns3_vlan_rx_add_vid(struct net_device *netdev, struct hnae3_handle *h = hns3_get_handle(netdev); int ret = -EIO; + if (hns3_nic_resetting(netdev)) + return -EBUSY; + if (h->ae_algo->ops->set_vlan_filter) ret = h->ae_algo->ops->set_vlan_filter(h, proto, vid, false); @@ -1653,6 +1656,9 @@ static int hns3_vlan_rx_kill_vid(struct net_device *netdev, struct hnae3_handle *h = hns3_get_handle(netdev); int ret = -EIO; + if (hns3_nic_resetting(netdev)) + return -EBUSY; + if (h->ae_algo->ops->set_vlan_filter) ret = h->ae_algo->ops->set_vlan_filter(h, proto, vid, true); @@ -1674,6 +1680,9 @@ static int hns3_ndo_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, __be16 vlan_proto = htons(ETH_P_8021Q); #endif + if (hns3_nic_resetting(netdev)) + return -EBUSY; + if (h->ae_algo->ops->set_vf_vlan_filter) ret = h->ae_algo->ops->set_vf_vlan_filter(h, vf, vlan, qos, vlan_proto);