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
[ Upstream commit 5bd088d ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
IronShen authored and gregkh committed Apr 10, 2024
1 parent 7ca0f73 commit 252f7b7
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
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 252f7b7

Please sign in to comment.