Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: use napi_id_valid helper

In commit 6597e8d35851 ("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: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Stefano Jordhani <sjordhani@gmail.com>
Reviewed-by: Joe 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: Jakub Kicinski <kuba@kernel.org>

authored by

Stefano Jordhani and committed by
Jakub Kicinski
b9d75210 b706d9f0

+15 -15
+4 -4
fs/eventpoll.c
··· 447 447 if (!budget) 448 448 budget = BUSY_POLL_BUDGET; 449 449 450 - if (napi_id >= MIN_NAPI_ID && ep_busy_loop_on(ep)) { 450 + if (napi_id_valid(napi_id) && ep_busy_loop_on(ep)) { 451 451 napi_busy_loop(napi_id, nonblock ? NULL : ep_busy_loop_end, 452 452 ep, prefer_busy_poll, budget); 453 453 if (ep_events_available(ep)) ··· 492 492 * or 493 493 * Nothing to do if we already have this ID 494 494 */ 495 - if (napi_id < MIN_NAPI_ID || napi_id == ep->napi_id) 495 + if (!napi_id_valid(napi_id) || napi_id == ep->napi_id) 496 496 return; 497 497 498 498 /* record NAPI ID for use in next busy poll */ ··· 546 546 { 547 547 unsigned int napi_id = READ_ONCE(ep->napi_id); 548 548 549 - if (napi_id >= MIN_NAPI_ID && READ_ONCE(ep->prefer_busy_poll)) 549 + if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll)) 550 550 napi_suspend_irqs(napi_id); 551 551 } 552 552 ··· 554 554 { 555 555 unsigned int napi_id = READ_ONCE(ep->napi_id); 556 556 557 - if (napi_id >= MIN_NAPI_ID && READ_ONCE(ep->prefer_busy_poll)) 557 + if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll)) 558 558 napi_resume_irqs(napi_id); 559 559 } 560 560
+2 -2
include/net/busy_poll.h
··· 119 119 #ifdef CONFIG_NET_RX_BUSY_POLL 120 120 unsigned int napi_id = READ_ONCE(sk->sk_napi_id); 121 121 122 - if (napi_id >= MIN_NAPI_ID) 122 + if (napi_id_valid(napi_id)) 123 123 napi_busy_loop(napi_id, nonblock ? NULL : sk_busy_loop_end, sk, 124 124 READ_ONCE(sk->sk_prefer_busy_poll), 125 125 READ_ONCE(sk->sk_busy_poll_budget) ?: BUSY_POLL_BUDGET); ··· 134 134 /* If the skb was already marked with a valid NAPI ID, avoid overwriting 135 135 * it. 136 136 */ 137 - if (skb->napi_id < MIN_NAPI_ID) 137 + if (!napi_id_valid(skb->napi_id)) 138 138 skb->napi_id = napi->napi_id; 139 139 #endif 140 140 }
+2 -2
io_uring/napi.c
··· 44 44 struct io_napi_entry *e; 45 45 46 46 /* Non-NAPI IDs can be rejected. */ 47 - if (napi_id < MIN_NAPI_ID) 47 + if (!napi_id_valid(napi_id)) 48 48 return -EINVAL; 49 49 50 50 hash_list = &ctx->napi_ht[hash_min(napi_id, HASH_BITS(ctx->napi_ht))]; ··· 87 87 struct io_napi_entry *e; 88 88 89 89 /* Non-NAPI IDs can be rejected. */ 90 - if (napi_id < MIN_NAPI_ID) 90 + if (!napi_id_valid(napi_id)) 91 91 return -EINVAL; 92 92 93 93 hash_list = &ctx->napi_ht[hash_min(napi_id, HASH_BITS(ctx->napi_ht))];
+3 -3
net/core/dev.c
··· 1008 1008 1009 1009 WARN_ON_ONCE(!rcu_read_lock_held()); 1010 1010 1011 - if (napi_id < MIN_NAPI_ID) 1011 + if (!napi_id_valid(napi_id)) 1012 1012 return NULL; 1013 1013 1014 1014 napi = napi_by_id(napi_id); ··· 6740 6740 6741 6741 /* 0..NR_CPUS range is reserved for sender_cpu use */ 6742 6742 do { 6743 - if (unlikely(++napi_gen_id < MIN_NAPI_ID)) 6743 + if (unlikely(!napi_id_valid(++napi_gen_id))) 6744 6744 napi_gen_id = MIN_NAPI_ID; 6745 6745 } while (napi_by_id(napi_gen_id)); 6746 6746 ··· 6911 6911 6912 6912 higher = &dev->napi_list; 6913 6913 list_for_each_entry(pos, &dev->napi_list, dev_list) { 6914 - if (pos->napi_id >= MIN_NAPI_ID) 6914 + if (napi_id_valid(pos->napi_id)) 6915 6915 pos_id = pos->napi_id; 6916 6916 else if (pos->config) 6917 6917 pos_id = pos->config->napi_id;
+1 -1
net/core/netdev-genl.c
··· 267 267 268 268 prev_id = UINT_MAX; 269 269 list_for_each_entry(napi, &netdev->napi_list, dev_list) { 270 - if (napi->napi_id < MIN_NAPI_ID) 270 + if (!napi_id_valid(napi->napi_id)) 271 271 continue; 272 272 273 273 /* Dump continuation below depends on the list being sorted */
+1 -1
net/core/page_pool_user.c
··· 233 233 goto err_cancel; 234 234 235 235 napi_id = pool->p.napi ? READ_ONCE(pool->p.napi->napi_id) : 0; 236 - if (napi_id >= MIN_NAPI_ID && 236 + if (napi_id_valid(napi_id) && 237 237 nla_put_uint(rsp, NETDEV_A_PAGE_POOL_NAPI_ID, napi_id)) 238 238 goto err_cancel; 239 239
+1 -1
net/core/sock.c
··· 2042 2042 v.val = READ_ONCE(sk->sk_napi_id); 2043 2043 2044 2044 /* aggregate non-NAPI IDs down to 0 */ 2045 - if (v.val < MIN_NAPI_ID) 2045 + if (!napi_id_valid(v.val)) 2046 2046 v.val = 0; 2047 2047 2048 2048 break;
+1 -1
net/xdp/xsk.c
··· 875 875 #ifdef CONFIG_NET_RX_BUSY_POLL 876 876 /* Prefer busy-polling, skip the wakeup. */ 877 877 return READ_ONCE(sk->sk_prefer_busy_poll) && READ_ONCE(sk->sk_ll_usec) && 878 - READ_ONCE(sk->sk_napi_id) >= MIN_NAPI_ID; 878 + napi_id_valid(READ_ONCE(sk->sk_napi_id)); 879 879 #else 880 880 return false; 881 881 #endif