libie_ctlq_recv(9)
π libie_ctlq_recv (9) β Kernel API Manual π
okay so bestie, welcome to the manual page for libie_ctlq_recv(9) from the Kernel API Manual β yes it's a real kernel function and yes it's lowkey iconic. it receives control queue messages, and we're gonna go through it together, no cap π«Ά
β¨ NAME β¨
libie_ctlq_recv β receive control queue messages π¬
πΈ SYNOPSIS πΈ
u32 libie_ctlq_recv (struct libie_ctlq_info *ctlq , struct
libie_ctlq_msg *msg , u32 num_q_msg );
like, that's the whole signature, and it returns a u32, slay π
π ARGUMENTS π
ctlqβ the control queue that needs to be processed for receive. this is your main character, the queue we're pulling messages out of πmsgβ an array of received control queue messages on this q. heads up bestie: this needs to be pre-allocated by the caller for as many messages as requested. we're not allocating anything for you, so come prepared πnum_q_msgβ the number of messages that can be stored in themsgbuffer. quick vibe check: this must be no greater than the number of posted buffers. don't be out here being greedy π§
π¦ DESCRIPTION π¦
so the caller is expected to return buffers via libie_ctlq_release_rx_buf. like, that's the deal, bestie β you take the buffers, you give them back π«Ά
and this next part is important, so listen up: the caller must make sure that calls to libie_ctlq_post_rx_buffs and libie_ctlq_recv for each queue are either serialized or used under ctlq->lock. no cap, this is a real requirement, not a suggestion π
β RETURN β
it returns the number of messages received β that's it, that's the whole return value, and honestly? we love a simple, predictable return π
π₯ SEE ALSO π₯
- Kernel file
./drivers/net/ethernet/intel/libie/controlq.c
and the whole friend group, in original order, go off besties π:
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(9),libie_ctlq_send_clean(9),libie_ctlq_fill_rx_msg(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)
π friendly reminder before you go: pre-allocate thatmsgarray, respect the buffer count, and please please please serialize yourlibie_ctlq_post_rx_buffs/libie_ctlq_recvcalls or holdctlq->lock. your future self will thank you π
and that's a wrap, bestie! this page came from ./drivers/net/ethernet/intel/l... (the path got cut off, not by me, i would never π) and it's dated October 2026 β so go forth, receive those messages, and remember: buffers always come back home π§β¨ bye-bye! π
π¦ 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