STRUCT BRCMF_FWS_HANGER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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

okay bestie, welcome to the Kernel API Manual β€” yes we're reading kernel docs for fun now, this is who we are, and honestly? iconic. today's main character is struct brcmf_fws_hanger, and no cap, she's literally just a little holding pen for packets that are waiting on a txstatus from the firmware. that's it. that's her whole job. πŸ’…


✨ NAME ✨

struct brcmf_fws_hanger β€” holds packets awaiting firmware txstatus. like a coat check but for network packets, and the firmware is the person who's supposed to come back for them 🧚


🌸 SYNOPSIS 🌸

struct brcmf_fws_hanger {
    u32 pushed;
    u32 popped;
    u32 failed_to_push;
    u32 failed_to_pop;
    u32 failed_slotfind;
    u32 slot_pos;
    struct brcmf_fws_hanger_item items[BRCMF_FWS_HANGER_MAXITEMS];
 };

like. look at her. four little u32 failure counters, two regular counters, and a whole array of items. she's balanced, she's structured, she has main character energy πŸ”₯


πŸ’– Members πŸ’–

okay so let's go through her fields one by one, because every single one of them matters and i'm not skipping a single one, that's not the vibe we're on today 🫢

  • pushed β€” the count of packets that got pushed in to wait for txstatus. they're in the hanger, they're chillin, they're waiting for their moment πŸ’…
  • popped β€” packets that got popped when a txstatus came in and got handled. bye girl, you did great, we love a clean exit πŸ‘‘
  • failed_to_push β€” this is the sad number: packets that could not be pushed. the hanger said no. it happens. 😭
  • failed_to_pop β€” packets that could not be popped. like reaching into the coat check and the coat's just... not there? concerning! πŸ™ˆ
  • failed_slotfind β€” packets for which the code failed to find an entry. no slot found, no entry located, just vibes and disappointment πŸ’€
  • slot_pos β€” the last returned item index for a free entry. basically a little bookmark so next time we don't have to search from the top, she remembers where she was at 🌸
  • items β€” the array of hanger items themselves. type is struct brcmf_fws_hanger_item, and it's sized BRCMF_FWS_HANGER_MAXITEMS so you know exactly how much room you've got. this is the actual hanger, the rest of the struct is just the receipts ✨

πŸ¦‹ SEE ALSO πŸ¦‹

if you're obsessed (and you should be) here's the whole friend group, all of them live in the kernel file ./drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c:

  • Firmware Signalling(9)
  • enum brcmf_fws_skb_state(9)
  • struct brcmf_skbuff_cb(9)
  • enum brcmf_fws_txstatus(9)
  • struct brcmf_fws_mac_descriptor(9)
  • enum brcmf_fws_hanger_item_state(9)
  • struct brcmf_fws_hanger_item(9)
  • brcmf_fws_get_tlv_len(9)
ngl, brcmf_fws_hanger_item and enum brcmf_fws_hanger_item_state are basically this struct's siblings, so if you liked this one, go read theirs too. family content. 🫢

that's the whole page!! this was pulled from ./drivers/net/wireless/broadco... (the path got a little truncated in the footer, rip, but you get the idea πŸ’€) and it's dated October 2026 β€” a little time capsule from the future, slay. now go forth and understand packets awaiting txstatus, bestie. i'm so proud of you. πŸŽ€βœ¨πŸ’œ

πŸ“¦ where this page comes from