batadv_forw_packet_queue(9)
π¦ NAME π¦
okay so bestie, welcome to the batadv_forw_packet_queue(9) page from the Kernel API Manual β the whole vibe is: batadv_forw_packet_queue β try to queue a forwarding packet. That's it. That's the function. Let's get into it π
β¨ SYNOPSIS β¨
void batadv_forw_packet_queue (struct batadv_forw_packet *forw_packet ,
spinlock_t *lock , struct hlist_head *head , unsigned long send_time );
no cap, that's the whole signature. four params. all business, all slay π₯
π ARGUMENTS π
forw_packetβ the forwarding packet to queue. this is the main character of the whole function π«Άlockβ a key to the store (e.g.forw_{bat,bcast}_list_lock). literally the bouncer checking if you're on the list πheadβ the shelve to queue it on (e.g.forw_{bat,bcast}_list). yes that's "shelve" with an e, we don't fix typos in this house, we honor them β¨send_timeβ timestamp (jiffies) when the packet is to be sent. clock it, bestie β°
πΈ DESCRIPTION πΈ
so what does this function actually do? it tries to (re)queue a forwarding packet. think of it as putting the packet back on the shelf for its little send moment.
requeuing is prevented if the according interface is shutting down (e.g. if batadv_forw_packet_list_steal was called for this packet earlier). so if the vibe check fails, the packet stays un-queued. it's giving "we're closed" π
β οΈ actual warning, not a joke: callingbatadv_forw_packet_queueafter a call tobatadv_forw_packet_stealis forbidden! like literally do not do it. periodt.
also, the caller needs to ensure that forw_packet->delayed_work was initialized. so before you hand it over, make sure that delayed work is set up. no skipping steps, no shortcuts π
π₯ SEE ALSO π₯
bestie there are so many friends in this squad, grab a snack π
- Kernel file
./net/batman-adv/send.c batadv_send_skb_packet(9)batadv_send_broadcast_skb(9)batadv_send_unicast_skb(9)batadv_send_skb_to_orig(9)batadv_send_skb_push_fill_unicast(9)batadv_send_skb_prepare_unicast(9)batadv_send_skb_prepare_unicast_4addr(9)batadv_send_skb_unicast(9)batadv_send_skb_via_tt_generic(9)batadv_send_skb_via_gw(9)batadv_forw_packet_free(9)batadv_forw_packet_alloc(9)batadv_forw_packet_was_stolen(9)batadv_forw_packet_steal(9)batadv_forw_packet_list_steal(9)batadv_forw_packet_list_free(9)batadv_forw_packet_bcast_queue(9)batadv_forw_packet_ogmv1_queue(9)batadv_forw_bcast_packet_to_list(9)batadv_forw_bcast_packet_if(9)batadv_send_no_broadcast(9)__batadv_forw_bcast_packet(9)batadv_forw_bcast_packet(9)batadv_send_bcast_packet(9)batadv_forw_packet_bcasts_left(9)batadv_forw_packet_bcasts_dec(9)batadv_forw_packet_is_rebroadcast(9)batadv_send_outstanding_bcast_packet(9)batadv_purge_outstanding_packets(9)
and that's the whole page, bestie π this came to you from Kernel API Manual, lives in ./net/batman-adv, and is stamped October 2026. go queue your packets responsibly, iykyk ππ
π¦ 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