rdma_cap_ib_mcast(9)
π rdma_cap_ib_mcast β a Kernel API Manual moment β¨
okay bestie, welcome to rdma_cap_ib_mcast(9), a genuine little kernel helper from the RDMA corner of the world, and it's lowkey the vibe check you run before you let a port touch InfiniBand multicast π¦
πΈ NAME πΈ
rdma_cap_ib_mcast β check if the port of a device has the InfiniBand Multicast capability, no cap π
β¨ SYNOPSIS β¨
bool rdma_cap_ib_mcast (const struct ib_device *device , u32 port_num );
π ARGUMENTS π
deviceβ the device you want to check, bestie. hand it over and let it be examined π«Άport_numβ the port number you're checking, like literally which port, be specific π
π DESCRIPTION π
okay so this is the part where it gets iconic. InfiniBand multicast registration is more complex than your normal IPv4 or IPv6 multicast registration β like, not even the same tax bracket π
Every Host Channel Adapter has to register with the Subnet Manager when it wants to join a multicast group. That's the rule, no cap.
And the important bit: it should do so only once, regardless of how many queue pairs it subscribes to that group. Like, one registration, that's it, we're not doing it forty times, that's not the vibe π
And it should leave the group only after all queue pairs attached to the group have been detached. Periodt. Every single one has to be gone first π
β RETURN β
returns true if the port has to undertake that extra administrative overhead β the registering/unregistering dance with the SM, plus tracking the total number of queue pairs attached to the multicast group π§
π¦ SEE ALSO π¦
Everything in the group chat, fr fr β the kernel file is ./include/rdma/ib_verbs.h and here's the whole squad:
struct rdma_stat_desc(9)struct rdma_hw_stats(9)ib_rate_to_mult(9)ib_rate_to_mbps(9)ib_port_attr_to_speed_info(9)enum ib_mr_type(9)struct ib_mr_status(9)mult_to_ib_rate(9)struct ib_udata(9)struct rdma_netdev(9)struct ib_device_ops(9)ib_get_client_data(9)ib_modify_qp_is_ok(9)rdma_cap_ib_switch(9)rdma_start_port(9)rdma_for_each_port(9)rdma_end_port(9)rdma_cap_ib_mad(9)rdma_cap_opa_mad(9)rdma_cap_ib_smi(9)rdma_cap_ib_cm(9)rdma_cap_iw_cm(9)rdma_cap_ib_sa(9)rdma_cap_af_ib(9)rdma_cap_eth_ah(9)rdma_cap_opa_ah(9)rdma_max_mad_size(9)rdma_cap_roce_gid_table(9)rdma_core_cap_opa_port(9)rdma_mtu_enum_to_int(9)rdma_mtu_from_attr(9)ib_alloc_pd(9)ib_dealloc_pd(9)rdma_create_ah(9)rdma_create_user_ah(9)ib_get_gids_from_rdma_hdr(9)ib_get_rdma_header_version(9)ib_init_ah_attr_from_wc(9)ib_create_ah_from_wc(9)rdma_modify_ah(9)rdma_query_ah(9)rdma_destroy_ah_user(9)rdma_destroy_ah(9)ib_modify_srq(9)ib_query_srq(9)ib_destroy_srq_user(9)ib_destroy_srq(9)ib_post_srq_recv(9)ib_create_qp(9)ib_modify_qp_with_udata(9)ib_modify_qp(9)ib_query_qp(9)ib_destroy_qp(9)ib_open_qp(9)ib_close_qp(9)ib_post_send(9)ib_post_recv(9)ib_alloc_cq_any(9)rdma_set_cq_moderation(9)ib_destroy_cq_user(9)ib_destroy_cq(9)ib_poll_cq(9)ib_req_notify_cq(9)ib_virt_dma_to_ptr(9)ib_virt_dma_to_page(9)ib_dma_mapping_error(9)ib_dma_map_single(9)ib_dma_unmap_single(9)ib_dma_map_page(9)ib_dma_unmap_page(9)ib_dma_map_bvec(9)ib_dma_unmap_bvec(9)ib_dma_map_sgtable_attrs(9)ib_dma_map_sg(9)ib_dma_unmap_sg(9)ib_dma_max_seg_size(9)ib_dma_sync_single_for_cpu(9)ib_dma_sync_single_for_device(9)ib_dereg_mr_user(9)ib_dereg_mr(9)ib_update_fast_reg_key(9)ib_inc_rkey(9)ib_attach_mcast(9)ib_detach_mcast(9)ib_check_mr_status(9)ib_device_try_get(9)rdma_ah_find_type(9)ib_lid_cpu16(9)ib_lid_be16(9)rdma_roce_rescan_device(9)rdma_device_to_ibdev(9)ibdev_to_node(9)rdma_device_to_drv_device(9)rdma_flow_label_to_udp_sport(9)rdma_calc_flow_label(9)rdma_get_udp_sport(9)
π friendly reminder bestie: this whole page is about the capability check. it tells you true when the port has to carry that extra SM registration overhead and do the queue-pair counting. it does not do the registering for you, okay? that's somebody else's job π
and that's the whole page, mwah π this cutie lives over in ./include/rdma, dated October 2026, and it's filed under rdma_cap_ib_mcast(9) in the Kernel API Manual β go be iconic with it ππ
π¦ 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