netif_napi_add(9)
π netif_napi_add(9) β like, the Kernel API Manual page, bestie
okay so picture this: you're in the kernel, you've got a network device, and you need NAPI to actually work. This is the function that sets the whole thing up. It's giving "prerequisite energy" β you literally cannot skip it. π«Ά
β¨ NAME β¨
netif_napi_add β initialize a NAPI context πΈ
π SYNOPSIS π
void netif_napi_add (struct net_device *dev , struct napi_struct *napi ,
int (*poll)(struct napi_struct *, int) );
π¦ ARGUMENTS π¦
devβ the network device. your main character, the actual hardware-adjacent vibes.napiβ the NAPI context. this is the thing you're initializing, bestie.pollβ the polling function. yep, it's a function pointer, yes it'sint (*poll)(struct napi_struct *, int), no we are not scared of it.
π DESCRIPTION π
So here's the tea: netif_napi_add must be used to initialize a NAPI context prior to calling any of the other NAPI-related functions.
Not me emphasizing any β that's the manpage's emphasis, not mine, and it is LOWKEY SERIOUS. initialize first. always. no cap. π
π SEE ALSO π
Kernel file ./include/linux/netdevice.h struct gro_node(9), plus the whole extended friend group π:
napi_is_scheduled(9)napi_schedule(9)napi_schedule_irqoff(9)napi_complete_done(9)napi_synchronize(9)napi_if_scheduled_mark_missed(9)enum netdev_priv_flags(9)struct net_device(9)netdev_priv(9)netdev_from_priv(9)netif_napi_add_config(9)netif_napi_add_tx(9)__netif_napi_del(9)netif_napi_del(9)netif_start_queue(9)netif_wake_queue(9)netif_stop_queue(9)netif_queue_stopped(9)netdev_queue_set_dql_min_limit(9)netdev_txq_bql_enqueue_prefetchw(9)netdev_txq_bql_complete_prefetchw(9)netdev_tx_sent_queue(9)netdev_sent_queue(9)netdev_tx_completed_queue(9)netdev_completed_queue(9)netdev_tx_reset_subqueue(9)netdev_reset_queue(9)netdev_cap_txqueue(9)netif_running(9)netif_start_subqueue(9)netif_stop_subqueue(9)__netif_subqueue_stopped(9)netif_subqueue_stopped(9)netif_wake_subqueue(9)netif_attr_test_mask(9)netif_attr_test_online(9)netif_attrmask_next(9)netif_attrmask_next_and(9)netif_is_multiqueue(9)dev_hold(9)dev_put(9)linkwatch_sync_dev(9)netif_carrier_ok(9)netif_dormant_on(9)netif_dormant_off(9)netif_dormant(9)netif_testing_on(9)netif_testing_off(9)netif_testing(9)netif_oper_up(9)netif_device_present(9)netif_tx_lock(9)__dev_uc_sync(9)__dev_uc_unsync(9)__dev_mc_sync(9)__dev_mc_unsync(9)
that's the entire list, i counted, we did not skip a single one because that would be a crime π
and that's the page, bestie!! brought to you by the fine people at ./include/linux, dated October 2026 β slay, read the docs, initialize your NAPI context, bye π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms