rdma_cap_eth_ah(9)
π rdma_cap_eth_ah β like, the Kernel API Manual edition, bestie β¨
okay so picture this: you're deep in the kernel, you're poking at an ib_device, and you need to know ONE thing β is this port giving RoCE energy or not? That's the whole vibe of rdma_cap_eth_ah(9). Buckle up π
π¦ NAME π¦
rdma_cap_eth_ah β basically a vibe check that asks: does this device's port have the Ethernet Address Handle capability? π
β¨ SYNOPSIS β¨
bool rdma_cap_eth_ah (const struct ib_device *device , u32 port_num );
like, that's it. that's the whole function. iconic behavior honestly π
πΈ ARGUMENTS πΈ
deviceβ the device you're checking. the main character of this operation π«Άport_numβ the port number you're checking. yes, that one. the specific one π
π DESCRIPTION π
so. RoCE. it stands for InfiniBand over Ethernet, and ngl it's kind of a genius little trick β it uses a well defined technique to fabricate GIDs over Ethernet/IP specific addresses that are native to the port. like it's out here hand-crafting addresses, we love a resourceful queen π§
normally? packet headers are generated by the sending host adapter, no stress, automatic, slay. BUT β and this is the plot twist π β when you're sending connectionless datagrams, we must manually inject the proper headers for the fabric we're communicating over. no autopilot, bestie. you're doing it by hand. π₯
β RETURN β
returns true if we are running as a RoCE port and we must force the addition of a Global Route Header built from our Ethernet Address Handle into our header list for connectionless packets. so like, true = yes babe you're doing the manual header thing π
π SEE ALSO π
everything's connected, iykyk π« β kernel file ./include/rdma/ib_verbs.h, and:
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_ib_mcast(9)rdma_cap_af_ib(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)
no cap, that's a lot of friends. go read them too, they're all slaying in ./include/rdma ππ
okay that's the whole page bestie!! this little cutie lives in ./include/rdma, it's the October 2026 era, and it goes by rdma_cap_eth_ah(9) πβ¨ go forth and check your Ethernet Address Handle capability, you absolute icon ππ¦π
π¦ 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