irdma_sc_cqp...l_ae_handler(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… irdma_sc_cqp...l_ae_handler(9) β€” from the Kernel API Manual, bestie πŸ’…

okay so this is a page out of the Kernel API Manual, and the star of the show is irdma_sc_cqp_def_cmpl_ae_handler. yes the header truncates it to irdma_sc_cqp...l_ae_handler(9) β€” that's just the man page doing its little abbreviation thing, the real name is right below, i promise 🫢


✨ NAME ✨

irdma_sc_cqp_def_cmpl_ae_handler β€” literally just removes completed requests from the pending list. that's the whole gig. she's a cleaner, she's a queen πŸ‘‘


🌸 SYNOPSIS 🌸

void irdma_sc_cqp_def_cmpl_ae_handler (struct irdma_sc_dev *dev , struct
       irdma_aeqe_info *info , bool first , u64 *scratch , u32 *sw_def_info );

πŸŽ€ ARGUMENTS πŸŽ€

  • dev β€” the sc device struct. the whole vibe container, basically.
  • info β€” AE entry info. yes, the AE entry info. she knows things.
  • first β€” true if this is the first call to this handler for a given AEQE. first-call energy only ✨
  • scratch β€” (out) scratch entry pointer. she writes back to you, she's generous like that.
  • sw_def_info β€” (in/out) SW ticket value for this AE. in and out, she's flexible πŸ’…

πŸ¦‹ DESCRIPTION πŸ¦‹

so when an AE_DEF_CMPL event happens, you're supposed to call this function in a loop until it hands you back a NULL-ptr via scratch. yeah. a loop. not one and done. keep going until she says stop 😭

on each call, she goes looking for a matching CQP request on the pending list, takes it off the list, and gives you back the pointer to the associated scratch entry. find it, yeet it, return it. iconic behaviour tbh πŸ”₯

here's the important bit for the first situation: if this is the first call for a given AEQE, sw_def_info is not used to find matching requests. nope, not today. instead, she populates it with the value from the first matching cqp_request on the list. so it's an output on the first pass, not an input.

for subsequent calls, ooo_op->sw_def_info needs to match the value passed by a caller. match it or she's not finding your request, no cap. 🧚


πŸ‘‘ RETURN πŸ‘‘

either the scratch entry pointer for the cqp_request that needs to be released β€” or NULL if no matching request turned up. if you get NULL, congrats, that's your signal the loop is done πŸŽ‰


🌈 SEE ALSO 🌈

kernel file: ./drivers/infiniband/hw/irdma/ctrl.c β€” that's where she lives, go say hi 🏑

and the full squad, the entire friend group, everybody she knows:


aaand that's the whole page, bestie πŸ’– this one comes to you from ./drivers/infiniband/hw/irdma, dated October 2026, published under the Kernel API Manual banner and titled irdma_sc_cqp...l_ae_handler(9). go forth and loop responsibly πŸŽ€πŸ¦‹βœ¨

πŸ“¦ where this page comes from