STRUCT LIBIE_AQ_DESC(9)
π¦ struct libie_aq_desc(9) π¦
okay so this is the Kernel API Manual entry for struct libie_aq_desc, and bestie you're gonna want to sit down for this one because it's literally the blueprint for how the driver slides into firmware's DMs. it's giving very much "the little descriptor that could" π
β¨ NAME β¨
struct libie_aq_desc β the Admin Queue (AQ) descriptor. that's it, that's the vibe. a whole lil packet-shaped queen π
π SYNOPSIS π
okay so here's the shape of it, and yes she's got a union in her, we love a union:
struct libie_aq_desc {
__le16 flags;
__le16 opcode;
__le16 datalen;
__le16 retval;
__le32 cookie_high;
__le32 cookie_low;
union {
u8 raw[16];
struct libie_aqc_generic generic;
struct libie_aqc_get_ver get_ver;
struct libie_aqc_driver_ver driver_ver;
struct libie_aqc_req_res res_owner;
struct libie_aqc_list_caps get_cap;
struct libie_aqc_fw_log fw_log;
} params;
};
like. look at her. the raw[16] AND the fancy named structs? versatile icon behavior honestly π
π Members π
flagsβ theLIBIE_AQ_FLAG_*flags go here. little flag moment β¨opcodeβ the AQ command opcode. it's giving "which command am I" energy πdatalenβ length in bytes of the indirect/external data buffer. numbers, we respect them πretvalβ the return value from firmware. this is where firmware claps back πcookie_highβ the opaque data high-half. mysterious. love that for us πcookie_lowβ the opaque data low-half. the other half of the mystery π«Άparamsβ command-specific parameters. this is the union up there, she contains multitudes π
πΈ Description πΈ
so here's the tea β β this is the descriptor format for the commands the driver posts on the Admin Transmit Queue (ATQ). that's the posting-your-command part, very main character energy.
and then the firmware literally writes back onto the command descriptor and returns the result of the command. like a reply-text situation but for kernel descriptors ππ
now β asynchronous events that are not an immediate result of the command? those get written to the Admin Receive Queue (ARQ) using the same descriptor format. same fit, different queue. iconic π¦
also important bestie: descriptors are in little-endian notation with 32-bit words. don't forget, don't fight it, just respect the byte order fr fr π₯
π SEE ALSO π
- the kernel file
./include/linux/net/intel/libie/adminq.h(go read her, she's the source of truth) π struct libie_aqc_generic(9)struct libie_aqc_get_ver(9)struct libie_aqc_driver_ver(9)struct libie_aqc_req_res(9)struct libie_aqc_list_caps(9)struct libie_aqc_list_caps_elem(9)
like a whole friend group of structs. go say hi to all of them π«Άβ¨
lowkey reminder: keep every field where it belongs, don't shuffle the union, and keep your endianness straight. the descriptor does not want to be misinterpreted, and honestly? same π
and that's the whole page, bestie π this came to you from ./include/linux/net/intel/libie, dated October 2026, and it's literally titled struct libie_aq_desc(9) β slay, bye, go write some AQ commands ππ¦β¨
π¦ 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