napi_alloc_skb(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– napi_alloc_skb(9) from the Kernel API Manual πŸ’–

okay bestie, welcome to the iconic little allocation page. this one is literally about grabbing an skbuff for rx inside a specific NAPI instance, and yes, it ate. πŸ’…


✨ NAME ✨

napi_alloc_skb β€” allocate skbuff for rx in a specific NAPI instance πŸ¦‹


🌸 SYNOPSIS 🌸

struct sk_buff * napi_alloc_skb (struct napi_struct *napi , unsigned int
len );

πŸŽ€ ARGUMENTS πŸŽ€

  • napi β€” the napi instance this buffer was allocated for. literally the main character here. πŸ‘‘
  • len β€” length to allocate. yes bestie, the size. πŸ“

πŸ¦‹ DESCRIPTION πŸ¦‹

Allocate a new sk_buff for use in NAPI receive. πŸ’–

This buffer will attempt to allocate the head from a special reserved region used only for NAPI Rx allocation. the way that this saves setup drama is honestly so slay. By doing this we can save several CPU cycles by avoiding having to disable and re-enable IRQs. ⚑

NULL is returned if there is no free memory. no cap, that’s the whole mood. 😭


πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./net/core/skbuff.c and the whole function friend group: drop_reasons_register_subsys(9), drop_reasons_unregister_subsys(9), skb_panic(9), napi_skb_cache_get_bulk(9), __build_skb(9), build_skb_around(9), __napi_build_skb(9), napi_build_skb(9), __alloc_skb(9), __netdev_alloc_skb(9), skb_pp_cow_data(9), skb_pp_frag_ref(9), __kfree_skb(9), sk_skb_reason_drop(9), skb_tx_error(9), consume_skb(9), __consume_stateless_skb(9), napi_consume_skb(9), alloc_skb_for_msg(9), skb_morph(9), skb_copy_ubufs(9), skb_clone(9), skb_copy(9), __pskb_copy_fclone(9), pskb_expand_head(9), skb_expand_head(9), skb_copy_expand(9), __skb_pad(9), pskb_put(9), skb_put(9), skb_push(9), skb_pull(9), skb_pull_data(9), skb_trim(9), __pskb_pull_tail(9), skb_copy_bits(9), skb_store_bits(9), skb_zerocopy(9), skb_dequeue(9), skb_dequeue_tail(9), skb_queue_purge_reason(9), skb_rbtree_purge(9), skb_queue_head(9), skb_queue_tail(9), skb_unlink(9), skb_append(9), skb_split(9), skb_shift(9), skb_prepare_seq_read(9), skb_seq_read(9), skb_abort_seq_read(9), skb_copy_seq_read(9), skb_find_text(9), skb_pull_rcsum(9), skb_segment(9), skb_to_sgvec(9), skb_cow_data(9), skb_clone_sk(9), skb_partial_csum_set(9), skb_checksum_setup(9), skb_checksum_maybe_trim(9), skb_checksum_trimmed(9), skb_try_coalesce(9), skb_scrub_packet(9), skb_eth_pop(9), skb_eth_push(9), skb_mpls_push(9), skb_mpls_pop(9), skb_mpls_update_lse(9), skb_mpls_dec_ttl(9), alloc_skb_with_frags(9), skb_condense(9), __skb_ext_alloc(9), __skb_ext_set(9), skb_ext_add(9), skb_attempt_defer_free(9), skb_splice_from_iter(9) 🌈


kisses from ./net/core πŸ’– β€” October 2026, napi_alloc_skb(9) era, byeee 🫢

πŸ“¦ where this page comes from