mirror of https://gitee.com/openkylin/linux.git
net: hns3: fix for loopback failure when vlan filter is enable
When vlan ctag filter is enabled, the loopback selftest fails because loopback selftest does not support vlan. This patch fixes it by disabling the vlan ctag filter when runnig loopback selftest. Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
64fd2300fc
commit
f96818a7cc
|
@ -309,6 +309,9 @@ static void hns3_self_test(struct net_device *ndev,
|
|||
struct hnae3_handle *h = priv->ae_handle;
|
||||
int st_param[HNS3_SELF_TEST_TPYE_NUM][2];
|
||||
bool if_running = netif_running(ndev);
|
||||
#if IS_ENABLED(CONFIG_VLAN_8021Q)
|
||||
bool dis_vlan_filter;
|
||||
#endif
|
||||
int test_index = 0;
|
||||
u32 i;
|
||||
|
||||
|
@ -323,6 +326,14 @@ static void hns3_self_test(struct net_device *ndev,
|
|||
if (if_running)
|
||||
dev_close(ndev);
|
||||
|
||||
#if IS_ENABLED(CONFIG_VLAN_8021Q)
|
||||
/* Disable the vlan filter for selftest does not support it */
|
||||
dis_vlan_filter = (ndev->features & NETIF_F_HW_VLAN_CTAG_FILTER) &&
|
||||
h->ae_algo->ops->enable_vlan_filter;
|
||||
if (dis_vlan_filter)
|
||||
h->ae_algo->ops->enable_vlan_filter(h, false);
|
||||
#endif
|
||||
|
||||
set_bit(HNS3_NIC_STATE_TESTING, &priv->state);
|
||||
|
||||
for (i = 0; i < HNS3_SELF_TEST_TPYE_NUM; i++) {
|
||||
|
@ -345,6 +356,11 @@ static void hns3_self_test(struct net_device *ndev,
|
|||
|
||||
clear_bit(HNS3_NIC_STATE_TESTING, &priv->state);
|
||||
|
||||
#if IS_ENABLED(CONFIG_VLAN_8021Q)
|
||||
if (dis_vlan_filter)
|
||||
h->ae_algo->ops->enable_vlan_filter(h, true);
|
||||
#endif
|
||||
|
||||
if (if_running)
|
||||
dev_open(ndev);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue