STRUCT RDMA_HW_STATS(9)
β¨ struct rdma_hw_stats(9) β¨
okay bestie, gather round, because this is the manual page for struct rdma_hw_stats π β literally the whole collection of hardware stats and their management, all wrapped up in one iconic little struct. it lives in the Kernel API Manual and it's giving "i keep all the counters safe" main character energy π
πΈ SYNOPSIS πΈ
struct rdma_hw_stats {
struct mutex lock;
unsigned long timestamp;
unsigned long lifespan;
const struct rdma_stat_desc *descs;
unsigned long *is_disabled;
int num_counters;
u64 value[];
};
no cap, that's the whole vibe right there π¦
π Members π
lockβ this is the mutex that protects parallel write access tolifespanand to the values of the counters. and why do we need it? because those counters are 64 bits and they are not guaranteed to be written atomically on 32-bit systems π so yeah, the lock is doing the lord's work π«Άtimestampβ the core code uses this one to track when the last update happened, periodt β°lifespanβ also used by the core code, this lil guy determines how old the counters should be before they get updated again. it's stored in jiffies, and it defaults to 10 milliseconds. drivers can absolutely override that default by specifying their own value during their allocation routine β slay, customisation πdescsβ an array of pointers to static descriptors, used for the counters in the directory ποΈis_disabledβ a bitmap that indicates whether each counter is currently disabled or not. vibe check per counter, basically β βnum_countersβ how many hardware counters there are. β οΈ and listen, bestie: ifnameis shorter than this number, a kernel oops will result. not cute, not slay, very much a situation π driver authors are encouraged to leaveBUILD_BUG_ON(ARRAY_SIZE(name) < num_counters)in their code to prevent this, so please please please keep it in there πvalueβ an array ofu64counters that get accessed by the sysfs code and filled in by the driver'sget_statsroutine. the actual numbers, the moment of truth π₯
π¦ SEE ALSO π¦
Kernel file ./include/rdma/ib_verbs.h, plus the whole extended friend group:
struct rdma_stat_desc(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_flow_label_to_udp_sport(9), rdma_calc_flow_label(9),
rdma_get_udp_sport(9)
and that's the whole page, bestie π this one came straight out of ./include/rdma, dated October 2026, and it's officially titled struct rdma_hw_stats(9) β go forth and read your hardware stats responsibly πβ¨
π¦ 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