libie_ctlq_send(9)
π libie_ctlq_send β bestie, it's giving "send a message to Control Plane or Peer" π
okay so real quick, before we even get into it: this whole page lives in libie_ctlq_send(9), aka the Kernel API Manual. that's the vibe. that's the header. now let's GO π¦
β¨ NAME β¨
libie_ctlq_send β send a message to Control Plane or Peer. literally what it says on the tin, no cap π
πΈ SYNOPSIS πΈ
void libie_ctlq_send (struct libie_ctlq_info *ctlq , u32 num_q_msg );
like, that's the whole signature. she's compact. she's iconic. copy it exactly, bestie, spaces and all π
π ARGUMENTS π
ctlqβ the specific control queue that's being used for sending a message. like, which queue, bestie, be specific πnum_q_msgβ the number of messages that are present to send onctlq. it's positive, and no greater than the number of available descriptors. so don't get greedy, okay? β
π₯ DESCRIPTION π₯
so before you even call this, the caller must fill in num_q_msg Tx messages starting at ntu beforehand. that's a you job, not a her job, iykyk π
the caller must hold ctlq->lock. and the intended pattern β write this down β is to first check the number of descriptors available, then fill in the messages, and perform send within a single critical section. one critical section. all of it. together. that's the whole bit π«Ά
not me stressing the lock thing β it's genuinely load-bearing, don't skip it π
π SEE ALSO π
the kernel file lives at ./drivers/net/ethernet/intel/libie/controlq.c β go read it, it ate β¨
and here's the whole friend group, every single one, no skipping:
libie_ctlq_free_fq(9)libie_ctlq_init_fq(9)libie_ctlq_prep_rx_desc(9)libie_ctlq_post_rx_buffs(9)libie_ctlq_free_tx_msgs(9)libie_ctlq_alloc_tx_msgs(9)libie_cp_free_desc_mem(9)libie_ctlq_dealloc_ring_res(9)libie_cp_alloc_desc_mem(9)libie_ctlq_alloc_queue_res(9)libie_ctlq_init_regs(9)libie_find_ctlq(9)libie_ctlq_add(9)libie_ctlq_remove(9)libie_ctlq_init(9)libie_ctlq_deinit(9)libie_ctlq_tx_desc_from_msg(9)libie_ctlq_send_desc_avail(9)libie_ctlq_send_clean(9)libie_ctlq_fill_rx_msg(9)libie_ctlq_recv(9)libie_ctlq_xn_pop_free(9)__libie_ctlq_xn_push_free(9)libie_ctlq_xn_push_free(9)libie_ctlq_xn_deinit_dma(9)libie_ctlq_xn_init_dma(9)libie_ctlq_xn_process_recv(9)libie_xn_check_async_timeout(9)libie_ctlq_xn_recv(9)libie_cp_map_dma_mem(9)libie_cp_unmap_dma_mem(9)libie_ctlq_xn_process_send(9)libie_ctlq_xn_send(9)struct libie_ctlq_xn_rel_tx_ctx(9)libie_ctlq_xn_rel_tx_buf(9)libie_ctlq_xn_send_clean(9)libie_ctlq_xn_shutdown(9)libie_ctlq_xn_deinit(9)libie_ctlq_xn_init(9)
and that's the page!! π§π
cute little sign-off moment: this one's from the source at ./drivers/net/ethernet/intel/l... and it's dated October 2026 β so like, future girlie energy fr fr βπΈ go forth and hold that lock, bestie π«Άβ¨
π¦ 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