napi_alloc_skb(9)
π 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
- 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