net: hns3: Preserve vlan 0 in hardware table
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 3 Sep 2018 10:21:52 +0000 (11:21 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Sep 2018 05:04:45 +0000 (22:04 -0700)
When netdev is down, the stack will delete the vlan from
hardware including vlan0, which will cause problem when
doing loopback selftest when netdev is down.

This patch fixes it by always preserving vlan 0 in hardware,
because vlan 0 is defalut vlan, which should always be in
hardware.

Fixes: c39c4d98dc65 ("net: hns3: Add mac loopback selftest support in hns3 driver")
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

index 4c7442e2a78d8f583fc805b30fbef6680694fd21..004bfc1bfabcbe3e41b658546d3ebee3a7363468 100644 (file)
@@ -4749,6 +4749,9 @@ static int hclge_set_vlan_filter_hw(struct hclge_dev *hdev, __be16 proto,
        u16 vport_idx, vport_num = 0;
        int ret;
 
+       if (is_kill && !vlan_id)
+               return 0;
+
        ret = hclge_set_vf_vlan_common(hdev, vport_id, is_kill, vlan_id,
                                       0, proto);
        if (ret) {