skb_queue_prev(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ skb_queue_prev(9) πŸ¦‹

okay so this is a page from the Kernel API Manual, and honestly? it's a tiny little function but it's lowkey iconic for what it does. let's get into it bestie πŸ’…


✨ NAME ✨

skb_queue_prev β€” return the prev packet in the queue

like... literally that's the whole job. it gives you the packet that comes before the one you're holding. πŸŽ€


🌸 SYNOPSIS 🌸

struct sk_buff * skb_queue_prev (const struct sk_buff_head *list , const
struct sk_buff *skb );

that's the whole signature, no cap. two args in, a struct sk_buff * out 🫢


πŸ’– ARGUMENTS πŸ’–

  • list β€” queue head. this is the queue you're digging around in, main character of the operation ✨
  • skb β€” current buffer. the packet you're standing on rn, and you want the one right before it πŸŽ€

🌈 DESCRIPTION 🌈

Return the prev packet in list before skb. πŸ¦‹

and here's the part that actually matters, bestie, so listen up: it is only valid to call this if skb_queue_is_first evaluates to false. like, that's the vibe check you have to pass before you even think about calling this. if skb is the first thing in the queue there's nothing before it, so don't come crying to me when it goes sideways 😭 do the check first, then call. periodt.


πŸ‘‘ SEE ALSO πŸ‘‘

the crossover episode is long, and you should honestly go read these too β€” the whole skb extended universe is in here πŸ”₯

Kernel file ./include/linux/skbuff.h and its friends: skb checksums(9), skb_frag_size(9), skb_frag_size_set(9), skb_frag_size_add(9), skb_frag_size_sub(9), skb_frag_must_loop(9), skb_frag_foreach_page(9), struct skb_shared_hwtstamps(9), dataref and headerless skbs(9), Basic sk_buff geometry(9), struct sk_buff(9), skb_pfmemalloc(9), skb_dst(9), skb_dstref_steal(9), skb_dstref_restore(9), skb_dst_set(9), skb_dst_set_noref(9), skb_dst_is_noref(9), skb_napi_id(9), skb_unref(9), kfree_skb(9), alloc_skb(9), skb_fclone_busy(9), alloc_skb_fclone(9), skb_pad(9), skb_queue_empty(9), skb_queue_empty_lockless(9), skb_queue_is_last(9), skb_queue_is_first(9), skb_queue_next(9), skb_get(9), skb_cloned(9), skb_header_cloned(9), __skb_header_release(9), skb_shared(9), skb_share_check(9), skb_unshare(9), skb_peek(9), __skb_peek(9), skb_peek_next(9), skb_peek_tail(9), skb_queue_len(9), skb_queue_len_lockless(9), __skb_queue_head_init(9), skb_queue_splice(9), skb_queue_splice_init(9), skb_queue_splice_tail(9), skb_queue_splice_tail_init(9), __skb_queue_after(9), __skb_queue_head(9), __skb_queue_tail(9), __skb_dequeue(9), __skb_dequeue_tail(9), skb_len_add(9), __skb_fill_netmem_desc(9), skb_fill_page_desc(9), skb_fill_page_desc_noacc(9), skb_headroom(9), skb_tailroom(9), skb_availroom(9), skb_reserve(9), skb_tailroom_reserve(9), skb_reset_transport_header_careful(9), skb_set_transport_header_careful(9), pskb_trim_unique(9), skb_orphan(9), skb_orphan_frags(9), __skb_queue_purge_reason(9), netdev_alloc_frag(9), netdev_alloc_skb(9), __dev_alloc_pages(9), __dev_alloc_page(9), dev_page_is_reusable(9), skb_propagate_pfmemalloc(9), skb_frag_off(9), skb_frag_off_add(9), skb_frag_off_set(9), skb_frag_off_copy(9), skb_frag_net_iov(9), skb_frag_page(9), skb_frag_netmem(9), skb_frag_address(9), skb_frag_address_safe(9), skb_frag_phys(9), skb_frag_page_copy(9), __skb_frag_dma_map(9), skb_clone_writable(9), skb_cow(9), skb_cow_head(9), skb_padto(9), __skb_put_padto(9), skb_put_padto(9), skb_linearize(9), skb_has_shared_frag(9), skb_linearize_cow(9), skb_postpull_rcsum(9), skb_postpush_rcsum(9), skb_push_rcsum(9), pskb_trim_rcsum(9), skb_needs_linearize(9), skb_get_timestamp(9), skb_data_move(9), skb_postpull_data_move(9), skb_postpush_data_move(9), skb_complete_tx_timestamp(9), skb_tstamp_tx(9), skb_tx_timestamp(9), skb_complete_wifi_ack(9), skb_checksum_complete(9), struct skb_ext(9), skb_checksum_none_assert(9), skb_head_is_locked(9)

like I said. long. go drink some water and then read them all πŸ“


and that's the whole page, bestie!! this one lives in ./include/linux, and it's dated October 2026 β€” so yeah, mark your calendar, it's giving very much future-era behavior πŸ’œβœ¨ mwah, love you, go check skb_queue_is_first before you call this πŸ™ˆ

πŸ“¦ where this page comes from