Commit 5bd088d6 authored by Jian Shen's avatar Jian Shen Committed by Paolo Abeni

net: hns3: mark unexcuted loopback test result as UNEXECUTED

Currently, loopback test may be skipped when resetting, but the test
result will still show as 'PASS', because the driver doesn't set
ETH_TEST_FL_FAILED flag. Fix it by setting the flag and
initializating the value to UNEXECUTED.

Fixes: 4c8dab1c ("net: hns3: reconstruct function hns3_self_test")
Signed-off-by: default avatarJian Shen <shenjian15@huawei.com>
Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
Reviewed-by: default avatarMichal Kubiak <michal.kubiak@intel.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 93305b77
...@@ -78,6 +78,9 @@ static const struct hns3_stats hns3_rxq_stats[] = { ...@@ -78,6 +78,9 @@ static const struct hns3_stats hns3_rxq_stats[] = {
#define HNS3_NIC_LB_TEST_NO_MEM_ERR 1 #define HNS3_NIC_LB_TEST_NO_MEM_ERR 1
#define HNS3_NIC_LB_TEST_TX_CNT_ERR 2 #define HNS3_NIC_LB_TEST_TX_CNT_ERR 2
#define HNS3_NIC_LB_TEST_RX_CNT_ERR 3 #define HNS3_NIC_LB_TEST_RX_CNT_ERR 3
#define HNS3_NIC_LB_TEST_UNEXECUTED 4
static int hns3_get_sset_count(struct net_device *netdev, int stringset);
static int hns3_lp_setup(struct net_device *ndev, enum hnae3_loop loop, bool en) static int hns3_lp_setup(struct net_device *ndev, enum hnae3_loop loop, bool en)
{ {
...@@ -418,18 +421,26 @@ static void hns3_do_external_lb(struct net_device *ndev, ...@@ -418,18 +421,26 @@ static void hns3_do_external_lb(struct net_device *ndev,
static void hns3_self_test(struct net_device *ndev, static void hns3_self_test(struct net_device *ndev,
struct ethtool_test *eth_test, u64 *data) struct ethtool_test *eth_test, u64 *data)
{ {
int cnt = hns3_get_sset_count(ndev, ETH_SS_TEST);
struct hns3_nic_priv *priv = netdev_priv(ndev); struct hns3_nic_priv *priv = netdev_priv(ndev);
struct hnae3_handle *h = priv->ae_handle; struct hnae3_handle *h = priv->ae_handle;
int st_param[HNAE3_LOOP_NONE][2]; int st_param[HNAE3_LOOP_NONE][2];
bool if_running = netif_running(ndev); bool if_running = netif_running(ndev);
int i;
/* initialize the loopback test result, avoid marking an unexcuted
* loopback test as PASS.
*/
for (i = 0; i < cnt; i++)
data[i] = HNS3_NIC_LB_TEST_UNEXECUTED;
if (hns3_nic_resetting(ndev)) { if (hns3_nic_resetting(ndev)) {
netdev_err(ndev, "dev resetting!"); netdev_err(ndev, "dev resetting!");
return; goto failure;
} }
if (!(eth_test->flags & ETH_TEST_FL_OFFLINE)) if (!(eth_test->flags & ETH_TEST_FL_OFFLINE))
return; goto failure;
if (netif_msg_ifdown(h)) if (netif_msg_ifdown(h))
netdev_info(ndev, "self test start\n"); netdev_info(ndev, "self test start\n");
...@@ -451,6 +462,10 @@ static void hns3_self_test(struct net_device *ndev, ...@@ -451,6 +462,10 @@ static void hns3_self_test(struct net_device *ndev,
if (netif_msg_ifdown(h)) if (netif_msg_ifdown(h))
netdev_info(ndev, "self test end\n"); netdev_info(ndev, "self test end\n");
return;
failure:
eth_test->flags |= ETH_TEST_FL_FAILED;
} }
static void hns3_update_limit_promisc_mode(struct net_device *netdev, static void hns3_update_limit_promisc_mode(struct net_device *netdev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment