irdma_qhash_ctrl(9)
π irdma_qhash_ctrl(9) β like, the qhash on/off switch for your listen list π
okay so bestie, welcome to irdma_qhash_ctrl(9) from the Kernel API Manual. yes it's a section 9 page, yes it's about InfiniBand/RDMA connection-manager internals, and yes we're gonna get through it together. grab a strawberry drink π, this one's actually pretty chill β it's a tiny function with a big job. β¨
πΈ NAME πΈ
irdma_qhash_ctrl β literally just enable/disable qhash for a list. that's the whole vibe. π
π¦ SYNOPSIS π¦
void irdma_qhash_ctrl (struct irdma_device *iwdev , struct
irdma_cm_listener *parent_listen_node , struct irdma_cm_info *nfo , u32
*ipaddr , bool ipv4 , bool ifup );
returns void, so no return value to obsess over. she just does the thing and leaves. π
π ARGUMENTS π
six args, all of them carrying their own little main-character energy:
iwdevβ the device pointer. yep, the whole device. she's the context, she's the vibe. π₯οΈparent_listen_nodeβ the parent listen node. the mom of the situation, if you will. πΈnfoβ the cm info node. the connection-manager info bestie. πipaddrβ pointer to an IPv4 or IPv6 address. both? both. iconic. dual-stack queen. π¦ipv4β a flag that says "this is IPv4" when it's true. that's it, that's the flag. βifupβ a flag that says "the interface is up" when it's true. also that's it. π«Ά
β¨ DESCRIPTION β¨
here's the tea, and it's actually pretty simple:
this function enables or disables the qhash for the node sitting in the child listen list that matches ipaddr. that's the whole quest. find the matching IP β flip the qhash. π―
and if no matching IP was found? no big deal, she doesn't ghost you β she'll allocate and add a new child listen node to parent_listen_node. boom. new node. slay. π₯
β οΈ one very important detail bestie, do NOT skip this: the listen_list_lock is assumed to be held when called. like, the function does not go get the lock for you. you show up with that lock already in hand. no cap. if you're calling this without holding it, that's a you problem and it is giving undefined-vibes energy. π
π SEE ALSO π
so this is the part where the manpage just absolutely dumps the entire friend group on you. every single one of these is real and every single one stays. no skipping, no cutting, i promised. π«‘
Kernel file: ./drivers/infiniband/hw/irdma/cm.c
the first batch β the squad:
irdma_free_sqbuf(9),irdma_record_ird_ord(9),irdma_copy_ip_ntohl(9),irdma_copy_ip_htonl(9),irdma_get_addr_info(9),irdma_fill_sockaddr4(9),irdma_fill_sockaddr6(9),irdma_get_cmevent_info(9),irdma_send_cm_event(9),irdma_timer_list_prep(9)
more besties:
irdma_create_event(9),irdma_free_retrans_entry(9),irdma_cleanup_retrans_entry(9),irdma_form_ah_cm_frame(9),irdma_form_uda_cm_frame(9),irdma_send_reset(9),irdma_active_open_err(9),irdma_passive_open_err(9),irdma_event_connect_error(9),irdma_process_options(9)
the options-and-mpa girlies:
irdma_handle_tcp_options(9),irdma_build_mpa_v1(9),irdma_build_mpa_v2(9),irdma_cm_build_mpa_frame(9),irdma_send_mpa_request(9),irdma_send_mpa_reject(9),irdma_negotiate_mpa_v2_ird_ord(9),irdma_parse_mpa(9),irdma_schedule_cm_timer(9),irdma_retrans_expired(9)
timers and packets, oh my:
irdma_handle_close_entry(9),irdma_cm_timer_tick(9),irdma_send_syn(9),irdma_send_ack(9),irdma_send_fin(9),irdma_find_listener(9),irdma_del_multiple_qhash(9),irdma_get_vlan_mac_ipv6(9),irdma_get_vlan_ipv4(9),irdma_add_mqh_6(9)
basically her whole group chat:
irdma_add_mqh_4(9),irdma_add_mqh(9),irdma_reset_list_prep(9),irdma_dec_refcnt_listen(9),irdma_cm_del_listen(9),irdma_addr_resolve_neigh(9),irdma_get_dst_ipv6(9),irdma_addr_resolve_neigh_ipv6(9),irdma_find_node(9),irdma_add_hte_node(9)
address checker besties:
irdma_ipv4_is_lpb(9),irdma_ipv6_is_lpb(9),irdma_cm_create_ah(9),irdma_cm_free_ah(9),irdma_make_cm_node(9),irdma_rem_ref_cm_node(9),irdma_handle_fin_pkt(9),irdma_handle_rst_pkt(9),irdma_handle_rcv_mpa(9),irdma_check_syn(9)
seq + packet handling, we stay hydrated:
irdma_check_seq(9),irdma_handle_syn_pkt(9),irdma_handle_synack_pkt(9),irdma_handle_ack_pkt(9),irdma_process_pkt(9),irdma_make_listen_node(9),irdma_create_cm_node(9),irdma_cm_reject(9),irdma_cm_close(9),irdma_receive_ilq(9)
core setup and teardown:
irdma_setup_cm_core(9),irdma_cleanup_cm_core(9),irdma_init_tcp_ctx(9),irdma_cm_init_tsa_conn(9),irdma_cm_disconn(9),irdma_qp_disconnect(9),irdma_cm_disconn_true(9),irdma_disconnect_worker(9),irdma_free_lsmm_rsrc(9),irdma_accept(9)
the public-facing API cuties:
irdma_reject(9),irdma_connect(9),irdma_create_listen(9),irdma_destroy_listen(9),irdma_teardown_list_prep(9),irdma_cm_event_connected(9),irdma_cm_event_reset(9),irdma_cm_event_handler(9),irdma_cm_post_event(9),irdma_cm_teardown_connections(9)
and the last one standing, all on her own:
see? everybody's here. nobody got left on read. π«Άπ
π§ a lil sign-off π§
and that's the page!! this whole thing lives in ./drivers/infiniband/hw/irdma, dated October 2026, and it's filed under the manual name irdma_qhash_ctrl(9). go hold that lock, match that IP, and slay the qhash. periodt. π
β¨π
π¦ 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