STRUCT WCN36XX_DXE_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct wcn36xx_dxe_desc(9) πŸŽ€

okay bestie, welcome to the Kernel API Manual ✨ β€” this is the page for struct wcn36xx_dxe_desc, and it's literally just one struct but it's kind of a big deal. It describes the descriptor of one DXE buffer. That's the whole vibe. Let's get into it πŸ’…


πŸ’– NAME πŸ’–

struct wcn36xx_dxe_desc β€” describes descriptor of one DXE buffer. yes that's it, that's the name, no notes 🫢


🌸 SYNOPSIS 🌸

here's the whole thing, bestie, laid out exactly as it lives in the kernel:

struct wcn36xx_dxe_desc {
    u32 ctrl;
    u32 fr_len;
    u32 src_addr_l;
    u32 dst_addr_l;
    u32 phy_next_l;
    u32 src_addr_h;
    u32 dst_addr_h;
    u32 phy_next_h;
 };

like, eight u32s and then one of them is doing a lot of heavy lifting. main character energy fr fr πŸ‘‘


✨ Members ✨

  • ctrl β€” ok so this one is the icon, the moment, the whole personality. It's a union made up of the following bits, and I'm giving you the receipts verbatim because every single bit matters:
union { u32 valid           :1; //0 = DMA stop, 1 = DMA continue with this
                                //descriptor
u32     transfer_type   :2; //0 = Host to Host space
u32     eop             :1; //End of Packet
u32     bd_handling     :1; //if transferType = Host to BMU, then 0
                            // means first 128 bytes contain BD, and 1
                            // means create new empty BD
u32     siq             :1; // SIQ
u32     diq             :1; // DIQ
u32     pdu_rel         :1; //0 = don't release BD and PDUs when done,
                            // 1 = release them
u32     bthld_sel       :4; //BMU Threshold Select
u32     prio            :3; //Specifies the priority level to use for
                            // the transfer
u32     stop_channel    :1; //1 = DMA stops processing further, channel
                            //requires re-enabling after this
u32     intr            :1; //Interrupt on Descriptor Done
u32     rsvd            :1; //reserved
u32     size            :14;//14 bits used - ignored for BMU transfers,
                            //only used for host to host transfers?
} ctrl;
  • fr_len β€” a member, and honestly the original doesn't say a single word more about it here. no description, no lore, nothing 😭 go read the kernel file if you want the tea.
  • src_addr_l β€” listed as a member, that's all the docs give us. it's giving "figure it out" πŸ™ˆ
  • dst_addr_l β€” member. no writeup. slay anyway πŸ’œ
  • phy_next_l β€” member, no extra detail in this page.
  • src_addr_h β€” member, no extra detail in this page.
  • dst_addr_h β€” member, no extra detail in this page.
  • phy_next_h β€” member, and that's the last one. no extra detail here either ✨
lowkey the vibes of this page are "the ctrl union ate and the rest of the members are just standing there" β€” but hey, they're all still listed, nothing's getting left out on my watch 🫢

πŸ”₯ SEE ALSO πŸ”₯

  • Kernel file ./drivers/net/wireless/ath/wcn36xx/dxe.h β€” that's where the real source of truth lives, bestie. go look πŸ‘€

and that's the page!! πŸ¦‹ big kiss, mwah πŸ’‹ β€” this was struct wcn36xx_dxe_desc(9) from the Kernel API Manual, pulled from source ./drivers/net/wireless/ath/wcn..., dated October 2026. periodt. 🌈⭐

πŸ“¦ where this page comes from