STRUCT LIBIE_CTLQ_XN(9)
π struct libie_ctlq_xn(9)
okay bestie, welcome to the Kernel API Manual page for struct libie_ctlq_xn β and yes, before you ask, that's a struct, not a function, it's giving main-character data structure energy and we're gonna read it together π«Ά
β¨ NAME β¨
struct libie_ctlq_xn β the structure that represents a virtchnl transaction entry. it's literally the little record card for one single transaction, no cap π
πΈ SYNOPSIS πΈ
struct libie_ctlq_xn {
void (*resp_cb)(void *ctx, struct kvec *mem, int status);
spinlock_t xn_lock;
struct completion cmd_completion_event;
struct libie_cp_dma_mem small_dma_mem;
struct libie_cp_dma_mem send_dma_mem;
struct kvec recv_mem;
void *send_ctx;
u64 timeout_ms;
ktime_t timestamp;
struct libie_ctlq_msg *tx_msg;
u32 virtchnl_opcode;
enum libie_ctlq_xn_state state;
u8 cookie;
u8 index;
};
look at her. fourteen members. absolutely iconic lineup, she ate π β¨
π¦ Members π¦
every field, one by one, no skipping, we're doing the whole vibe check:
resp_cbβ a non-sleeping callback that handles the response to an async message. important: non-sleeping, so she stays awake and ready at all times, that's just her brand πxn_lockβ the lock that protects the transaction entry state. she's the bouncer for this struct's state, fr fr πcmd_completion_eventβ you wait on this until the reply is received, or until the xn is terminated. either outcome, this is your queue to stop waiting πsmall_dma_memβ DMA memory for copying small send buffers from the stack; it gets recycled when a response is received or on timeout. so it's reusable, she's sustainable, we love her πsend_dma_memβ the DMA memory of the send buffer. the big one's dedicated spot πrecv_memβ the receive buffer. that's it, that's the whole job, and she does it beautifully β¨send_ctxβ context for the callback function. the little handbag of info you pass along π«Άtimeout_msβ the Xn transaction timeout, in msecs. yes, msecs. βtimestampβ timestamp recorded for the Xn send. receipts, basically π§Ύtx_msgβ the control queue Tx message slot, used to track small DMA usage πvirtchnl_opcodeβ the virtchnl command opcode used for the Xn transaction. tells you which command this entry is about πΈstateβ the transaction state of a virtchnl message. current mood, essentially πcookieβ a unique message identifier, and it's incremented every time the slot is used. not the edible kind, but still slay πͺindexβ the index of the transaction entry. her seat number ποΈ
π₯ SEE ALSO π₯
- Kernel file
./include/linux/net/intel/libie/controlq.h enum libie_ctlq_type(9)struct libie_ctlq_ctx(9)struct libie_ctlq_reg(9)struct libie_cp_dma_mem(9)struct libie_ctlq_msg(9)struct libie_ctlq_create_info(9)struct libie_ctlq_info(9)struct libie_ctlq_desc(9)struct libie_ctlq_clean_params(9)libie_ctlq_release_rx_buf(9)enum libie_ctlq_xn_state(9)struct libie_ctlq_xn_manager(9)struct libie_ctlq_xn_send_params(9)libie_cp_can_send_onstack(9)struct libie_ctlq_xn_recv_params(9)struct libie_ctlq_xn_init_params(9)
that's the whole reading list, bestie, go forth and man them all π
okay that's the page!! this one lives at ./include/linux/net/intel/libie and it's dated October 2026 β and yes the manual name really is struct libie_ctlq_xn(9) the whole time. mwah πβ¨π
π¦ 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