STRUCT BRCMF_PCIE_DHI_RINGINFO(9)
π 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.__le16again β¨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
- 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