Commit b9d75210 authored by Stefano Jordhani's avatar Stefano Jordhani Committed by Jakub Kicinski
Browse files

net: use napi_id_valid helper



In commit 6597e8d3 ("netdev-genl: Elide napi_id when not present"),
napi_id_valid function was added. Use the helper to refactor open-coded
checks in the source.

Suggested-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarStefano Jordhani <sjordhani@gmail.com>
Reviewed-by: default avatarJoe Damato <jdamato@fastly.com>
Reviewed-by: Jens Axboe <axboe@kernel.dk> # for iouring
Link: https://patch.msgid.link/20250214181801.931-1-sjordhani@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent b706d9f0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -447,7 +447,7 @@ static bool ep_busy_loop(struct eventpoll *ep, int nonblock)
	if (!budget)
		budget = BUSY_POLL_BUDGET;

	if (napi_id >= MIN_NAPI_ID && ep_busy_loop_on(ep)) {
	if (napi_id_valid(napi_id) && ep_busy_loop_on(ep)) {
		napi_busy_loop(napi_id, nonblock ? NULL : ep_busy_loop_end,
			       ep, prefer_busy_poll, budget);
		if (ep_events_available(ep))
@@ -492,7 +492,7 @@ static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
	 *	or
	 * Nothing to do if we already have this ID
	 */
	if (napi_id < MIN_NAPI_ID || napi_id == ep->napi_id)
	if (!napi_id_valid(napi_id) || napi_id == ep->napi_id)
		return;

	/* record NAPI ID for use in next busy poll */
@@ -546,7 +546,7 @@ static void ep_suspend_napi_irqs(struct eventpoll *ep)
{
	unsigned int napi_id = READ_ONCE(ep->napi_id);

	if (napi_id >= MIN_NAPI_ID && READ_ONCE(ep->prefer_busy_poll))
	if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll))
		napi_suspend_irqs(napi_id);
}

@@ -554,7 +554,7 @@ static void ep_resume_napi_irqs(struct eventpoll *ep)
{
	unsigned int napi_id = READ_ONCE(ep->napi_id);

	if (napi_id >= MIN_NAPI_ID && READ_ONCE(ep->prefer_busy_poll))
	if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll))
		napi_resume_irqs(napi_id);
}

+2 −2
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ static inline void sk_busy_loop(struct sock *sk, int nonblock)
#ifdef CONFIG_NET_RX_BUSY_POLL
	unsigned int napi_id = READ_ONCE(sk->sk_napi_id);

	if (napi_id >= MIN_NAPI_ID)
	if (napi_id_valid(napi_id))
		napi_busy_loop(napi_id, nonblock ? NULL : sk_busy_loop_end, sk,
			       READ_ONCE(sk->sk_prefer_busy_poll),
			       READ_ONCE(sk->sk_busy_poll_budget) ?: BUSY_POLL_BUDGET);
@@ -134,7 +134,7 @@ static inline void skb_mark_napi_id(struct sk_buff *skb,
	/* If the skb was already marked with a valid NAPI ID, avoid overwriting
	 * it.
	 */
	if (skb->napi_id < MIN_NAPI_ID)
	if (!napi_id_valid(skb->napi_id))
		skb->napi_id = napi->napi_id;
#endif
}
+2 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ int __io_napi_add_id(struct io_ring_ctx *ctx, unsigned int napi_id)
	struct io_napi_entry *e;

	/* Non-NAPI IDs can be rejected. */
	if (napi_id < MIN_NAPI_ID)
	if (!napi_id_valid(napi_id))
		return -EINVAL;

	hash_list = &ctx->napi_ht[hash_min(napi_id, HASH_BITS(ctx->napi_ht))];
@@ -87,7 +87,7 @@ static int __io_napi_del_id(struct io_ring_ctx *ctx, unsigned int napi_id)
	struct io_napi_entry *e;

	/* Non-NAPI IDs can be rejected. */
	if (napi_id < MIN_NAPI_ID)
	if (!napi_id_valid(napi_id))
		return -EINVAL;

	hash_list = &ctx->napi_ht[hash_min(napi_id, HASH_BITS(ctx->napi_ht))];
+3 −3
Original line number Diff line number Diff line
@@ -1008,7 +1008,7 @@ struct net_device *dev_get_by_napi_id(unsigned int napi_id)

	WARN_ON_ONCE(!rcu_read_lock_held());

	if (napi_id < MIN_NAPI_ID)
	if (!napi_id_valid(napi_id))
		return NULL;

	napi = napi_by_id(napi_id);
@@ -6740,7 +6740,7 @@ static void napi_hash_add(struct napi_struct *napi)

	/* 0..NR_CPUS range is reserved for sender_cpu use */
	do {
		if (unlikely(++napi_gen_id < MIN_NAPI_ID))
		if (unlikely(!napi_id_valid(++napi_gen_id)))
			napi_gen_id = MIN_NAPI_ID;
	} while (napi_by_id(napi_gen_id));

@@ -6911,7 +6911,7 @@ netif_napi_dev_list_add(struct net_device *dev, struct napi_struct *napi)

	higher = &dev->napi_list;
	list_for_each_entry(pos, &dev->napi_list, dev_list) {
		if (pos->napi_id >= MIN_NAPI_ID)
		if (napi_id_valid(pos->napi_id))
			pos_id = pos->napi_id;
		else if (pos->config)
			pos_id = pos->config->napi_id;
+1 −1
Original line number Diff line number Diff line
@@ -267,7 +267,7 @@ netdev_nl_napi_dump_one(struct net_device *netdev, struct sk_buff *rsp,

	prev_id = UINT_MAX;
	list_for_each_entry(napi, &netdev->napi_list, dev_list) {
		if (napi->napi_id < MIN_NAPI_ID)
		if (!napi_id_valid(napi->napi_id))
			continue;

		/* Dump continuation below depends on the list being sorted */
Loading