STRUCT BRCMF_PCIE_DHI_RINGINFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

struct brcmf_pcie_dhi_ringinfo β€” the dongle/host interface shared ring info, aka the group chat between your dongle and your host where all the ring bookkeeping lives πŸ’–

So basically bestie, this struct is the shared info block for the DHI (dongle/host interface) rings. It's giving "index cards for the index cards" and honestly it ate. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

struct brcmf_pcie_dhi_ringinfo {
    __le32 ringmem;
    __le32 h2d_w_idx_ptr;
    __le32 h2d_r_idx_ptr;
    __le32 d2h_w_idx_ptr;
    __le32 d2h_r_idx_ptr;
    struct msgbuf_buf_addr  h2d_w_idx_hostaddr;
    struct msgbuf_buf_addr  h2d_r_idx_hostaddr;
    struct msgbuf_buf_addr  d2h_w_idx_hostaddr;
    struct msgbuf_buf_addr  d2h_r_idx_hostaddr;
    __le16 max_flowrings;
    __le16 max_submissionrings;
    __le16 max_completionrings;
 };

no cap, that's the whole shape of her. eleven fields. main character energy. πŸ‘‘


🌸 Members 🌸

Okay so let's go field by field, because every single one of these matters and I would never do you dirty by skipping any 🫢

  • ringmem β€” a dongle memory pointer that points at where the ring memory lives. literally the address of the whole vibe. πŸ“
  • h2d_w_idx_ptr β€” h2d ring write indices, as dongle memory pointers. host-to-dongle, writing, pointing at dongle memory. iykyk πŸ’«
  • h2d_r_idx_ptr β€” h2d ring read indices, as dongle memory pointers. same h2d situation but we're reading now, and it's still dongle memory pointers. πŸ”
  • d2h_w_idx_ptr β€” d2h ring write indices, as dongle memory pointers. dongle-to-host direction, writing, dongle memory pointers. πŸŽ€
  • d2h_r_idx_ptr β€” d2h ring read indices, as dongle memory pointers. dongle-to-host, reading, dongle memory pointers. yes the pattern is the pattern, she's consistent πŸ’…
  • h2d_w_idx_hostaddr β€” h2d ring write indices, but as host memory pointers this time. plot twist! different memory, same h2d write indices πŸ¦‹
  • h2d_r_idx_hostaddr β€” h2d ring read indices as host memory pointers. h2d, read, host memory. mwah. πŸ’œ
  • d2h_w_idx_hostaddr β€” d2h ring write indices as host memory pointers. d2h, write, host memory. slay. ⭐
  • d2h_r_idx_hostaddr β€” d2h ring read indices as host memory pointers. that's the last of the four host-address twins and she understood the assignment 🌈
  • max_flowrings β€” the maximum number of tx flow rings supported. __le16, so little-endian, bestie, don't forget πŸ”₯
  • max_submissionrings β€” the maximum number of submission rings (h2d) supported. __le16 again ✨
  • max_completionrings β€” the maximum number of completion rings (d2h) supported. last one, __le16, and she's iconic πŸŽ€
ok real talk: notice how every pointer field here is just an index-location pointer (dongle side vs host side) and then the three maxima tell you how many rings you actually get. that's the whole struct. no notes. πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

  • Kernel file ./drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c β€” the source of truth, go read her πŸ“–
  • brcmf_pcie_bus_console_read(9) β€” her bestie, also worth a look πŸ’–

and that's the whole page, bestie β€” no crumbs left behind 🧚

sign-off szn: this was ./drivers/net/wireless/broadco... (the source/version bit, cutely truncated as always 😭), dated October 2026, and it's the manual for struct brcmf...dhi_ringinfo(9). periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from