STRUCT RDMA_HW_STATS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 to lifespan and 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: if name is shorter than this number, a kernel oops will result. not cute, not slay, very much a situation πŸ’€ driver authors are encouraged to leave BUILD_BUG_ON(ARRAY_SIZE(name) < num_counters) in their code to prevent this, so please please please keep it in there πŸ™
  • value β€” an array of u64 counters that get accessed by the sysfs code and filled in by the driver's get_stats routine. 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