irdma_sc_cqp...l_ae_handler(9)
π 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βtrueif 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:
irdma_get_qp_from_list(9)irdma_sc_suspend_resume_qps(9)irdma_change_l2params(9)irdma_qp_rem_qos(9)irdma_qp_add_qos(9)irdma_sc_pd_init(9)irdma_sc_add_arp_cache_entry(9)irdma_sc_del_arp_cache_entry(9)irdma_sc_manage_apbvt_entry(9)irdma_sc_manage_qhash_table_entry(9)irdma_sc_qp_init(9)irdma_sc_srq_init(9)irdma_sc_srq_create(9)irdma_sc_srq_modify(9)irdma_sc_srq_destroy(9)irdma_sc_qp_create(9)irdma_sc_qp_modify(9)irdma_sc_qp_destroy(9)irdma_sc_get_encoded_ird_size(9)irdma_sc_qp_setctx_roce_gen_2(9)irdma_sc_get_encoded_ird_size_gen_3(9)irdma_sc_qp_setctx_roce_gen_3(9)irdma_sc_add_local_mac_entry(9)irdma_sc_del_local_mac_entry(9)irdma_sc_qp_setctx(9)irdma_sc_alloc_stag(9)irdma_sc_mr_reg_non_shared(9)irdma_sc_dealloc_stag(9)irdma_sc_mw_alloc(9)irdma_sc_mr_fast_register(9)irdma_sc_gen_rts_ae(9)irdma_sc_send_lsmm(9)irdma_sc_send_rtt(9)irdma_iwarp_opcode(9)irdma_locate_mpa(9)irdma_bld_termhdr_ctrl(9)irdma_bld_termhdr_ddp_rdma(9)irdma_bld_terminate_hdr(9)irdma_terminate_send_fin(9)irdma_terminate_connection(9)irdma_terminate_received(9)irdma_sc_vsi_init(9)irdma_get_stats_idx(9)irdma_hw_stats_init_gen1(9)irdma_vsi_stats_init(9)irdma_vsi_stats_free(9)irdma_get_encoded_wqe_size(9)irdma_sc_gather_stats(9)irdma_sc_manage_stats_inst(9)irdma_sc_set_up_map(9)irdma_sc_manage_ws_node(9)irdma_sc_qp_flush_wqes(9)irdma_sc_gen_ae(9)irdma_sc_manage_push_page(9)irdma_sc_suspend_qp(9)irdma_sc_resume_qp(9)irdma_sc_cq_init(9)irdma_sc_cq_create(9)irdma_sc_cq_destroy(9)irdma_sc_cq_resize(9)irdma_sc_cq_modify(9)irdma_sc_get_decoded_ird_size_gen_3(9)irdma_check_cqp_progress(9)irdma_get_cqp_reg_info(9)irdma_sc_cqp_cleanup_handler(9)irdma_cqp_poll_registers(9)irdma_sc_decode_fpm_commit(9)irdma_sc_parse_fpm_commit_buf(9)irdma_sc_decode_fpm_query(9)irdma_sc_parse_fpm_query_buf(9)irdma_sc_cqp_init(9)irdma_sc_cqp_create(9)irdma_sc_cqp_post_sq(9)irdma_sc_cqp_get_next_send_wqe_idx(9)irdma_sc_cqp_destroy(9)irdma_sc_ccq_arm(9)irdma_sc_process_def_cmpl(9)irdma_sc_process_ooo_cmpl(9)irdma_sc_ccq_get_cqe_info(9)irdma_sc_poll_for_cqp_op_done(9)irdma_sc_manage_hmc_pm_func_table(9)irdma_sc_commit_fpm_val_done(9)irdma_sc_commit_fpm_val(9)irdma_sc_query_fpm_val_done(9)irdma_sc_query_fpm_val(9)irdma_sc_ceq_init(9)irdma_sc_ceq_create(9)irdma_sc_cceq_create_done(9)irdma_sc_cceq_destroy_done(9)irdma_sc_cceq_create(9)irdma_sc_ceq_destroy(9)irdma_sc_process_ceq(9)irdma_sc_cleanup_ceqes(9)irdma_sc_aeq_init(9)irdma_sc_aeq_create(9)irdma_sc_aeq_destroy(9)irdma_sc_get_next_aeqe(9)irdma_sc_repost_aeq_entries(9)irdma_sc_ccq_init(9)irdma_sc_ccq_create_done(9)irdma_sc_ccq_create(9)irdma_sc_ccq_destroy(9)irdma_sc_init_iw_hmc(9)irdma_set_loc_mem(9)irdma_sc_cfg_iw_fpm(9)cqp_sds_wqe_fill(9)irdma_update_pe_sds(9)irdma_update_sds_noccq(9)irdma_sc_static_hmc_pages_allocated(9)irdma_cqp_ring_full(9)irdma_est_sd(9)irdma_sc_query_rdma_features(9)irdma_get_rdma_features(9)irdma_get_rsrc_mem_config(9)irdma_cfg_sd_mem(9)irdma_get_objs_pages(9)irdma_set_host_hmc_rsrc_gen_3(9)irdma_verify_commit_fpm_gen_3(9)irdma_set_loc_hmc_rsrc_gen_3(9)cfg_fpm_value_gen_3(9)irdma_cfg_fpm_val(9)irdma_exec_cqp_cmd(9)irdma_process_cqp_cmd(9)irdma_process_bh(9)irdma_cfg_aeq(9)sc_vsi_update_stats(9)irdma_wait_pe_ready(9)irdma_sc_dev_init(9)irdma_stat_val(9)irdma_stat_delta(9)irdma_update_stats(9)
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
- 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