libie_ctlq_xn_deinit(9)
π libie_ctlq_xn_deinit π
okay bestie, so this is a page from the Kernel API Manual, and it's about libie_ctlq_xn_deinit(9) β literally the cleanup era of the transaction manager. sit down, hydrate, let's get into it π«Ά
β¨ NAME β¨
libie_ctlq_xn_deinit β deallocate and free the transaction manager resources. yes it's giving "the end of an era", it's giving "closing the tabs", it's giving cleanup slay π§Ήπ
πΈ SYNOPSIS πΈ
void libie_ctlq_xn_deinit (struct libie_ctlq_xn_manager *xnm , struct libie_ctlq_ctx *ctx );
like, that's the whole call. two args. no return value. void. she takes and she gives nothing back, and honestly? iconic π
π¦ ARGUMENTS π¦
xnmβ pointer to the transaction manager. this is your main character, the whole reason we're here πctxβ libie CP context information. the supporting cast, still important, don't ignore her π«Ά
π DESCRIPTION π
okay so before you even think about calling this, there are prerequisites, and no cap you actually have to do them:
- Rx processing must be stopped beforehand via cancelling tasks. like, stop the receiving. cancel the tasks. don't skip this, bestie π
- Tx processing must be stopped beforehand via
libie_ctlq_xn_shutdown. shutdown first, deinit second. that's the order. that's the vibe check β - all buffers must be force-cleaned from the send queue. all of them. every single one. force-cleaned. the send queue should be empty and pristine before you call this, periodt π§Όβ¨
β οΈ ngl this is a teardown function, so if you roll up with stuff still running or buffers still chilling in the send queue, that's on you and it's giving chaos π do the cleanup steps first, then deallocate.
π₯ SEE ALSO π₯
first up, the source of truth herself:
- Kernel file
./drivers/net/ethernet/intel/libie/controlq.c
and now the extended friend group, aka every single one of these β go read them, iykyk π
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_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_init(9)
and that's the whole page, bestie πβ¨ sourced from ./drivers/net/ethernet/intel/l..., dated October 2026 β literally a lil timestamp from the future, we love a documented queen ππ mwah, go free those resources responsibly π¦π
π¦ 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