STRUCT LIBIE_CTLQ_XN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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