libie_ctlq_init(9)
π« libie_ctlq_init β the main character of control queue setup π«
okay so this is libie_ctlq_init(9), and it's living in the Kernel API Manual, section 9. bestie, this is the main initialization routine for all control queues and honestly? it ate. π
πΈ SYNOPSIS πΈ
int libie_ctlq_init (struct libie_ctlq_ctx *ctx , const struct
libie_ctlq_create_info *qinfo , u32 numq );
β¨ ARGUMENTS β¨
ctxβ the libie CP context information. like, the whole vibe of your CP, packaged up. π«Άqinfoβ an array of structs containing info for each queue to be initialized. yes, an array β one entry per queue, no skipping. π₯numqβ the number of queues to initialize. literally how many we're doing today. π
π¦ DESCRIPTION π¦
This initializes the queue list and adds any number and any type of control queues. so flexible, so iconic. β¨
ngl, this is an all or nothing routine β if one of them fails, all previously allocated queues get destroyed. no half-finished setups here, it's giving clean slate or nothing. π
π important vibe check: any control queue send/receive functions are not softirq/NAPI safe, and therefore this API can be used in process context only. do not try it anywhere else, fr fr. π
π RETURN π
0on success β slay π-errnoon failure β the sad path π
π SEE ALSO π
Kernel file ./drivers/net/ethernet/intel/libie/controlq.c β the source, the origin story, go read it π§
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_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_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)
that's the whole bestie list, no cap β go click through all of them, they're all linked up and ready π
k that's the page!! source is ./drivers/net/ethernet/intel/l... and it's dated October 2026 β mwah, stan, 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