Commit 968fde83 authored by Jie Wang's avatar Jie Wang Committed by David S. Miller
Browse files

net: hns3: add cond_resched() to hns3 ring buffer init process



Currently hns3 ring buffer init process would hold cpu too long with big
Tx/Rx ring depth. This could cause soft lockup.

So this patch adds cond_resched() to the process. Then cpu can break to
run other tasks instead of busy looping.

Fixes: a723fb8e ("net: hns3: refine for set ring parameters")
Signed-off-by: default avatarJie Wang <wangjie125@huawei.com>
Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 12cda920
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3535,6 +3535,9 @@ static int hns3_alloc_ring_buffers(struct hns3_enet_ring *ring)
		ret = hns3_alloc_and_attach_buffer(ring, i);
		if (ret)
			goto out_buffer_fail;

		if (!(i % HNS3_RESCHED_BD_NUM))
			cond_resched();
	}

	return 0;
@@ -5107,6 +5110,7 @@ int hns3_init_all_ring(struct hns3_nic_priv *priv)
		}

		u64_stats_init(&priv->ring[i].syncp);
		cond_resched();
	}

	return 0;
+2 −0
Original line number Diff line number Diff line
@@ -214,6 +214,8 @@ enum hns3_nic_state {
#define HNS3_CQ_MODE_EQE			1U
#define HNS3_CQ_MODE_CQE			0U

#define HNS3_RESCHED_BD_NUM			1024

enum hns3_pkt_l2t_type {
	HNS3_L2_TYPE_UNICAST,
	HNS3_L2_TYPE_MULTICAST,