ieee80211_tx_dequeue(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 ieee80211_tx_dequeue(9) β€” like, the Kernel API Manual page, bestie πŸ’…

okay so you opened the ieee80211_tx_dequeue(9) page from the Kernel API Manual and you're like "what is this" β€” don't worry, I gotchu. This is the function that pulls a packet out of a software tx queue, and yes she has RULES. Read them. πŸ™


✨ NAME ✨

ieee80211_tx_dequeue β€” dequeue a packet from a software tx queue πŸŽ€


✨ SYNOPSIS ✨

struct sk_buff * ieee80211_tx_dequeue (struct ieee80211_hw *hw , struct
ieee80211_txq *txq );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • hw β€” a pointer as obtained from ieee80211_alloc_hw. that's it, that's the whole vibe.
  • txq β€” a pointer you got from a station or virtual interface, or from ieee80211_next_txq. pick your source, queen. πŸ’œ

🌈 RETURN 🌈

you get the skb if it worked πŸŽ‰ β€” and NULL if no frame was available. sad girl hours but make it a return value. 😭


πŸ‘‘ DESCRIPTION πŸ‘‘

okay this is the part where you actually have to pay attention, no cap:

this must be called inside an rcu_read_lock critical section, and you can only release that section after the SKB was handled. because like… some pointers in skb->cb, e.g. the key pointer, are protected by RCU, so the critical section has to persist not just for the duration of this call but for the duration of the frame handling. she's clingy, she's committed, respect it. 🫢

but ALSO note: while you're in the wake_tx_queue method, rcu_read_lock is already held. so like, don't double-dip, bestie. πŸ™ˆ

softirqs must also be disabled when this function is called. that's a hard requirement, not a suggestion. and if you're in process context? use ieee80211_tx_dequeue_ni instead. different function, different vibe. ⭐


πŸ’– SEE ALSO πŸ’–

the lore is deep, the cross-references are endless, and every single one of them is here because I would never do you dirty like that. πŸ’€

Kernel file ./include/net/mac80211.h plus, like, all of these:


and that's the whole page, bestie β€” you ate that. πŸ’…βœ¨

source: ./include/net Β· dated October 2026 Β· Kernel API Manual Β· ieee80211_tx_dequeue(9) β€” ily, go handle your SKB responsibly πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from