ieee80211_has_pm(9)
π ieee80211_has_pm(9) β the Kernel API Manual glow-up β¨
okay so bestie, welcome to the ieee80211_has_pm(9) page, straight out of the Kernel API Manual π
this one is a tiny little legend and honestly it's giving "small but mighty", so let's get into it π«Ά
πΈ NAME πΈ
ieee80211_has_pm β literally checks if IEEE80211_FCTL_PM is set. that's the whole vibe check, no cap β¨
π¦ SYNOPSIS π¦
bool ieee80211_has_pm (__le16 fc );
π ARGUMENTS π
fcβ the frame control bytes, but they've gotta be in little-endian byteorder bestie, that's the assignment π
π RETURN π
it returns whether or not the power management flag is set π«‘ so like, true if it's there, false if it's not β the most honest little bool in the whole kernel fr fr β
π SEE ALSO π
okay this section is long and it absolutely ate π first up, the source of truth:
- Kernel file
./include/linux/ieee80211.hπ«
then the frame-control siblings, aka the has_* squad β same energy, different flags π§
ieee80211_has_tods(9),ieee80211_has_fromds(9),ieee80211_has_a4(9),ieee80211_has_morefrags(9),ieee80211_has_retry(9),ieee80211_has_moredata(9),ieee80211_has_protected(9),ieee80211_has_order(9)
the frame type checkers, the "is this even a data frame" girlies πΈ
ieee80211_is_mgmt(9),ieee80211_is_ctl(9),ieee80211_is_data(9),ieee80211_is_ext(9),ieee80211_is_data_qos(9),ieee80211_is_data_present(9)
subtype checkers, a whole sorority of them π
ieee80211_is_assoc_req(9),ieee80211_is_assoc_resp(9),ieee80211_is_reassoc_req(9),ieee80211_is_reassoc_resp(9),ieee80211_is_assoc(9),ieee80211_is_probe_req(9),ieee80211_is_probe_resp(9),ieee80211_is_beacon(9),ieee80211_is_atim(9),ieee80211_is_disassoc(9),ieee80211_is_auth(9),ieee80211_is_deauth(9),ieee80211_is_action(9),ieee80211_is_back_req(9),ieee80211_is_back(9),ieee80211_is_pspoll(9),ieee80211_is_rts(9),ieee80211_is_cts(9),ieee80211_is_ack(9),ieee80211_is_cfend(9),ieee80211_is_cfendack(9),ieee80211_is_nullfunc(9),ieee80211_is_qos_nullfunc(9),ieee80211_is_trigger(9),ieee80211_is_any_nullfunc(9),ieee80211_is_first_frag(9),ieee80211_is_frag(9)
the info-element structs and that one enum, highkey the most aesthetic crowd π
struct ieee80211_quiet_ie(9),struct ieee80211_msrment_ie(9),struct ieee80211_channel_sw_ie(9),struct ieee80211_ext_chansw_ie(9),struct ieee80211_sec_chan_offs_ie(9),struct ieee80211_wide_bw_chansw_ie(9),struct ieee80211_tim_ie(9),struct ieee80211_tpc_report_ie(9),struct ieee80211_bss_load_elem(9),struct ieee80211_timeout_interval_ie(9),enum ieee80211_idle_options(9),struct ieee80211_bss_max_idle_period_ie(9),struct ieee80211_bssid_index(9),struct ieee80211_multiple_bssid_configuration(9)
the getters and the robust-mgmt / action crew, they're carrying the whole header tbh ππ₯
ieee80211_get_qos_ctl(9),ieee80211_get_tid(9),ieee80211_get_SA(9),ieee80211_get_DA(9),ieee80211_is_bufferable_mmpdu(9),_ieee80211_is_robust_mgmt_frame(9),ieee80211_is_robust_mgmt_frame(9),ieee80211_is_public_action(9),ieee80211_is_protected_dual_of_public_action(9),_ieee80211_is_group_privacy_action(9),ieee80211_is_group_privacy_action(9),ieee80211_tu_to_usec(9),ieee80211_get_tdls_action(9),ieee80211_action_contains_tpc(9),ieee80211_is_timing_measurement(9),ieee80211_is_ftm(9),for_each_element_completed(9),struct ieee80211_enh_crit_upd(9),ieee80211_check_tim(9)
like, that's the whole roster and every single one of them is linked π no gatekeeping here π
ngl bestie, this is a one-liner function and the SEE ALSO is longer than the function itself. balance. harmony. iconic behaviour πβ¨
and that's the page!! brought to you by the source in ./include/linux, dated October 2026 πΈ the header said ieee80211_has_pm(9) and the footer said the same thing, so we're bookending this little masterpiece π mwah, go check your frame control flags, ily, bye π«Άπ
π¦ 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