rdma_cap_ib_mad(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… rdma_cap_ib_mad β€” bestie's guide to MAD support checking

Okay so this is a Linux kernel API manual page (rdma_cap_ib_mad(9), in case you were wondering) and honestly? It's a tiny little function with a big job. Let's get into it 🫢


✨ NAME ✨

rdma_cap_ib_mad β€” checks whether a port on a device supports InfiniBand Management Datagrams. yes, that's the whole vibe check πŸ’…


🌸 SYNOPSIS 🌸

bool rdma_cap_ib_mad (const struct ib_device *device , u32 port_num );

That's it. Two args, one bool back. Clean. Iconic. No notes πŸ‘‘


πŸŽ€ ARGUMENTS πŸŽ€

  • device β€” the device you're checking, bestie. Pass it in, that's the whole deal.
  • port_num β€” which port number on that device you wanna check.

πŸ’– DESCRIPTION πŸ’–

So here's the tea β˜• β€” Management Datagrams (MAD for short, and no, not the "mad" like angry, it's just the acronym lol) are a required part of the InfiniBand specification, and they're supported on all InfiniBand devices. Literally all of them. No cap.

A slightly extended version of MAD is also supported on OPA interfaces. So like, OPA gets the deluxe version, iykyk 🌈


⭐ RETURN ⭐

Returns true if the port supports sending/receiving of MAD packets πŸ¦‹

(And, by the nature of a bool β€” you can lowkey infer the other case from that. It's giving "yes or no, no essay required".)


πŸ‘‘ SEE ALSO πŸ‘‘

Buckle up bestie, this list is LONG but we're gonna get through it together, fr fr. Every single one, in order, because that's how we do it πŸ’œ

Kernel file ./include/rdma/ib_verbs.h and then:

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_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_ib_mcast(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).

Phew. That's the whole squad 😭πŸ”₯


Ngl, this function is basically one big "does this port do MAD?" check. Two args, one bool, zero drama. We love a low-maintenance icon πŸ“

And that's a wrap, bestie! This lil gem comes from ./include/rdma and it's dated October 2026 β€” so yeah, mark your calendars and stan responsibly βœ¨πŸ§šπŸ’œ

πŸ“¦ where this page comes from