rdma_flow_la...to_udp_sport(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… rdma_flow_label_to_udp_sport β€” bestie's guide to RoCE v2 port math πŸŽ€

okay so. this page lives in the Kernel API Manual, section 9, and it's about one tiny function that does one tiny thing and honestly? it ate. ✨


🌸 NAME 🌸

rdma_flow_label_to_udp_sport β€” generate a RoCE v2 UDP src port value based on the flow_label

like, that's the whole gig. it takes your flow label and turns it into a UDP source port. no cap. πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

u16 rdma_flow_label_to_udp_sport (u32 fl );

bestie look at that signature. u32 goes in, u16 comes out. it's giving "glow up but make it a type conversion". πŸ‘‘


πŸŽ€ ARGUMENTS πŸŽ€

  • fl β€” the flow_label value. that's it. that's the argument. she's a single-argument icon and she knows it. πŸ’…

✨ DESCRIPTION ✨

okay so here's the tea πŸ“ β€” this function converts that 20 bit flow_label input into a valid RoCE v2 UDP src port 14 bit value. twenty bits in, fourteen bits out. the math is mathing and it's lowkey iconic.

and the important part, the part you need to remember for the vibe check: all RoCE V2 drivers should use this same convention. like, every single one. periodt. πŸ”₯ no going rogue with your own port scheme, bestie, that's not the move.


πŸ’œ SEE ALSO πŸ’œ

this is the part where the page just. keeps. going. like a group chat at 2am. but every single one of these is real and every single one is here, so let's go 🫢

the kernel file ./include/rdma/ib_verbs.h, 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_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_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_calc_flow_label(9), rdma_get_udp_sport(9)

like I said. the whole crew showed up. πŸ’€πŸŒˆ


ngl if you were looking for OPTIONS, ENVIRONMENT, EXIT STATUS, FILES, ERRORS or EXAMPLES on this page β€” they're not here, bestie. this page is short and she's thriving. don't go making things up. πŸ™ˆ

🧚 sign-off 🧚

this little love letter to port math lives under ./include/rdma, and the date on it is October 2026. so future-coded of her. πŸ¦‹πŸ’œ go forth and use the same convention as everybody else, iykyk βœ¨πŸ‘‘

πŸ“¦ where this page comes from