ENUM IEEE802154_HW_FLAGS(9)
π enum ieee802154_hw_flags(9) β the Kernel API Manual, bestie edition
okay so this is a page from the Kernel API Manual about enum ieee802154_hw_flags, and honestly? it's giving "tiny enum, big responsibilities." let's get into it π
β¨ NAME β¨
enum ieee802154_hw_flags β hardware flags, periodt. that's it, that's the name.
π¦ SYNOPSIS π¦
here's the whole enum, exactly as it lives, no cap:
enum ieee802154_hw_flags {
IEEE802154_HW_TX_OMIT_CKSUM ,
IEEE802154_HW_LBT ,
IEEE802154_HW_CSMA_PARAMS ,
IEEE802154_HW_FRAME_RETRIES ,
IEEE802154_HW_AFILT ,
IEEE802154_HW_PROMISCUOUS ,
IEEE802154_HW_RX_OMIT_CKSUM
};
seven flags. that's the whole squad. π
π Constants π
okay, one by one, because each of these lil guys is a hardware capability check:
IEEE802154_HW_TX_OMIT_CKSUMβ means the transmitter adds the FCS all on its own. the manpage literally says "Indicates that xmitter will add FCS on it's own." β yes, "xmitter," yes, "it's," we're keeping it, it's iconic π your driver doesn't have to do the checksum math.IEEE802154_HW_LBTβ means the transceiver supports listen before transmit. like it peeks before it speaks, very polite, very mindful π«ΆIEEE802154_HW_CSMA_PARAMSβ means the transceiver supports csma parameters (max_be,min_be, backoff exponents). the backoff lore goes deep, iykyk.IEEE802154_HW_FRAME_RETRIESβ means the transceiver supports ARET frame retries setting. yes, ARET, capital letters, it's a whole thing β¨IEEE802154_HW_AFILTβ means the transceiver supports hardware address filter setting. filtering addresses in hardware like a main character πIEEE802154_HW_PROMISCUOUSβ means the transceiver supports promiscuous mode setting. it hears everything. gossip mode unlocked πIEEE802154_HW_RX_OMIT_CKSUMβ means the receiver omits FCS. no FCS on the way in, that's the vibe π¦
π Description π
so what are these flags even for? they're how the hardware tells the stack what it can and can't do β capability receipts, basically π
the general design principle: flags here should be defined in a way that the simplest hardware doesn't need to set any particular flag at all. like, the bare-minimum chip should be able to just... exist. no flags, no drama. the absence of a flag is the default story.
but bestie, there ARE exceptions to this rule. so the manpage says you are advised to review these flags carefully. don't just assume the default β go read them. π₯
πΈ SEE ALSO πΈ
go read these next, they're all in the same orbit:
- Kernel file
./include/net/mac802154.henumieee802154_hw_addr_filt_flags(9) struct ieee802154_hw_addr_filt(9)struct ieee802154_hw(9)ieee802154_get_fc_from_skb(9)ieee802154_skb_dst_pan(9)ieee802154_skb_src_pan(9)ieee802154_skb_is_intra_pan_addressing(9)ieee802154_be64_to_le64(9)ieee802154_le64_to_be64(9)ieee802154_le16_to_be16(9)ieee802154_be16_to_le16(9)ieee802154_alloc_hw(9)ieee802154_free_hw(9)ieee802154_register_hw(9)ieee802154_unregister_hw(9)ieee802154_rx_irqsafe(9)ieee802154_xmit_complete(9)ieee802154_xmit_error(9)ieee802154_xmit_hw_error(9)
and that's the page!! mwah π this lil number lives in ./include/net and it's dated October 2026, so yeah, it's from the future, we don't question it. stay slay, go set your flags correctly, and remember: the simplest hardware sets nothing at all. π§π
π¦ 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