STRUCT LIBIE_CTLQ_XN_MANAGER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… STRUCT LIBIE_CTLQ_XN_MANAGER(9) β€” the vibe check

okay so bestie, welcome to the Kernel API Manual, section 9 πŸŽ€ β€” this is the page for struct libie_ctlq_xn_manager, and ngl it's a whole little ecosystem in a struct.


✨ NAME ✨

struct libie_ctlq_xn_manager β€” the structure that's literally representing the array of virtchnl transaction entries πŸ¦‹

Like, think of it as the group chat admin of your transaction entries. It holds them, it tracks who's free, and it does not appreciate chaos.


🌸 SYNOPSIS 🌸

struct libie_ctlq_xn_manager {
    struct libie_ctlq_ctx   *ctx;
    spinlock_t free_xns_bm_lock;
    unsigned long free_xns_bm[BITS_TO_LONGS(
LIBIE_CTLQ_MAX_XN_ENTRIES)];
    struct libie_ctlq_xn    ring[LIBIE_CTLQ_MAX_XN_ENTRIES];
    struct dma_pool         *small_buff_pool;
    struct completion       can_destroy;
    bool shutdown;
 };

the way this is just peak struct design, no cap 😭


🫢 Members 🫢

here's the squad, one by one πŸ‘‘

  • ctx β€” pointer to the controlq context structure πŸ’– like, it knows the controlq. that's the whole thing.
  • free_xns_bm_lock β€” the lock that protects the free Xn entries bit map πŸ”’ the bodyguard, fr fr. nobody touches the bitmap without it.
  • free_xns_bm β€” the bitmap that represents which Xn entries are free ✨ one bit per entry, keeping track, doing the most.
  • ring β€” the array of Xn entries πŸ‘‘ this is the main character. the whole circle of them, literally.
  • small_buff_pool β€” DMA pool for small send buffers 🧚 tiny buffer pool, small but mighty.
  • can_destroy β€” a completion, triggered by the last released transaction πŸ’€ so like, when the last one dips, then you get the signal. iconic behavior.
  • shutdown β€” the shutdown process has been started, no new transactions allowed πŸ™ˆ periods. the doors are CLOSED. no new entries, we're not doing that anymore.

πŸ’œ SEE ALSO πŸ’œ

Kernel file ./include/linux/net/intel/libie/controlq.h and its friends β€” here's the full lineup, don't lose any of them:

  • 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(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)

πŸ’– okay that's the whole page bestie, go read the rest of the libie controlq lore, iykyk

🌈 mwah πŸ’‹ this came to you from ./include/linux/net/intel/libie, and it's dated October 2026 β€” so like, born in the future, still slaying ⭐

πŸ“¦ where this page comes from