Skip to content

Commit

Permalink
net: hns3: mark unexcuted loopback test result as UNEXECUTED
Browse files Browse the repository at this point in the history
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: 4c8dab1 ("net: hns3: reconstruct function hns3_self_test")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
  • Loading branch information
Jian Shen authored and Paolo Abeni committed Mar 26, 2024
1 parent 93305b7 commit 5bd088d
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_TX_CNT_ERR 2
#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)
{
Expand Down Expand Up @@ -418,18 +421,26 @@ static void hns3_do_external_lb(struct net_device *ndev,
static void hns3_self_test(struct net_device *ndev,
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 hnae3_handle *h = priv->ae_handle;
int st_param[HNAE3_LOOP_NONE][2];
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)) {
netdev_err(ndev, "dev resetting!");
return;
goto failure;
}

if (!(eth_test->flags & ETH_TEST_FL_OFFLINE))
return;
goto failure;

if (netif_msg_ifdown(h))
netdev_info(ndev, "self test start\n");
Expand All @@ -451,6 +462,10 @@ static void hns3_self_test(struct net_device *ndev,

if (netif_msg_ifdown(h))
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,
Expand Down

0 comments on commit 5bd088d

Please sign in to comment.