ENUM MAC80211_RX_FLAGS(9)
πΈ NAME πΈ
enum mac80211_rx_flags β receive flags π
okay so this is the enum that holds all the little flaggy flags you slap onto a received frame in mac80211, and every single one of them is down below, no skips, no cap β¨
π SYNOPSIS π
enum mac80211_rx_flags {
RX_FLAG_MMIC_ERROR ,
RX_FLAG_DECRYPTED ,
RX_FLAG_ONLY_MONITOR ,
RX_FLAG_MMIC_STRIPPED ,
RX_FLAG_IV_STRIPPED ,
RX_FLAG_FAILED_FCS_CRC ,
RX_FLAG_FAILED_PLCP_CRC ,
RX_FLAG_MACTIME_IS_RTAP_TS64 ,
RX_FLAG_NO_SIGNAL_VAL ,
RX_FLAG_AMPDU_DETAILS ,
RX_FLAG_PN_VALIDATED ,
RX_FLAG_DUP_VALIDATED ,
RX_FLAG_AMPDU_LAST_KNOWN ,
RX_FLAG_AMPDU_IS_LAST ,
RX_FLAG_AMPDU_DELIM_CRC_ERROR ,
RX_FLAG_MACTIME ,
RX_FLAG_MACTIME_PLCP_START ,
RX_FLAG_MACTIME_START ,
RX_FLAG_MACTIME_END ,
RX_FLAG_SKIP_MONITOR ,
RX_FLAG_AMSDU_MORE ,
RX_FLAG_RADIOTAP_TLV_AT_END ,
RX_FLAG_MIC_STRIPPED ,
RX_FLAG_ALLOW_SAME_PN ,
RX_FLAG_ICV_STRIPPED ,
RX_FLAG_AMPDU_EOF_BIT ,
RX_FLAG_AMPDU_EOF_BIT_KNOWN ,
RX_FLAG_RADIOTAP_HE ,
RX_FLAG_RADIOTAP_HE_MU ,
RX_FLAG_RADIOTAP_LSIG ,
RX_FLAG_NO_PSDU ,
RX_FLAG_8023 ,
RX_FLAG_RADIOTAP_VHT
};
that's thirty-three constants bestie, count 'em, they're all getting explained one by one π
π Constants π
RX_FLAG_MMIC_ERRORβ a Michael MIC error got reported on this frame π. use it together withRX_FLAG_MMIC_STRIPPED, they're a matching set fr fr.RX_FLAG_DECRYPTEDβ this frame was decrypted in hardware. hardware ate that, no notes πRX_FLAG_ONLY_MONITORβ report this frame only to monitor interfaces, and don't process it in any regular way. lowkey useful when drivers offload some frames but still want to report them for sniffing purposes πRX_FLAG_MMIC_STRIPPEDβ the Michael MIC is stripped off this frame, and verification has been done by the hardware. she's already been checked, don't worry about it β¨RX_FLAG_IV_STRIPPEDβ the IV and ICV are stripped from this frame. β οΈ if this flag is set, the stack cannot do any replay detection, hence the driver or hardware will have to do that. so like... somebody's gotta do it, and it's not gonna be the stack πRX_FLAG_FAILED_FCS_CRCβ set this flag if the FCS check failed on the frame πRX_FLAG_FAILED_PLCP_CRCβ set this flag if the PCLP check failed on the frame πRX_FLAG_MACTIME_IS_RTAP_TS64β the timestamp passed in the RX statusmactimeis only for use in the radiotap timestamp header, and is not otherwise a validmactimevalue. note this is a separate flag so that we continue to seeRX_FLAG_MACTIMEas unset π. also note that in this case the timestamp is reported to be 64 bits wide, not just 32 π«ΆRX_FLAG_NO_SIGNAL_VALβ the signal strength value is not present. valid only for data frames (mainly A-MPDU) πRX_FLAG_AMPDU_DETAILSβ the A-MPDU details are known, and in particular the reference number (ampdu_reference) must be populated and must be a distinct number for each A-MPDU π¦RX_FLAG_PN_VALIDATEDβ currently only valid for CCMP/GCMP frames, this flag indicates that the PN was verified for replay protection. note that this flag is also currently only supported when a frame is also decrypted (ie.RX_FLAG_DECRYPTEDmust be set) βRX_FLAG_DUP_VALIDATEDβ the driver should set this flag if it did de-duplication by itself. doing it yourself? iconic, mark it πRX_FLAG_AMPDU_LAST_KNOWNβ the last subframe is known, and it should be set on all subframes of a single A-MPDU πΈRX_FLAG_AMPDU_IS_LASTβ this subframe is the last subframe of the A-MPDU, she's the finale π¬RX_FLAG_AMPDU_DELIM_CRC_ERRORβ a delimiter CRC error has been detected on this subframe πRX_FLAG_MACTIMEβ the timestamp passed in the RX status (mactimefield) is valid if this field is non-zero, and the position where the timestamp was sampled depends on the value βRX_FLAG_MACTIME_PLCP_STARTβ the timestamp passed in the RX status (mactimefield) is valid and contains the time the SYNC preamble was received β±οΈRX_FLAG_MACTIME_STARTβ the timestamp passed in the RX status (mactimefield) is valid and contains the time the first symbol of the MPDU was received. this is useful in monitor mode and for proper IBSS merging πRX_FLAG_MACTIME_ENDβ the timestamp passed in the RX status (mactimefield) is valid and contains the time the last symbol of the MPDU (including FCS) was received πRX_FLAG_SKIP_MONITORβ process and report the frame to all interfaces except monitor interfaces. useful if drivers offload some frames but still want to report them for sniffing purposes πRX_FLAG_AMSDU_MOREβ some drivers may prefer to report separate A-MSDU subframes instead of one huge frame, for performance reasons. all but the last MSDU from an A-MSDU should have this flag set. e.g. if an A-MSDU has 3 frames, the first 2 must have the flag set, while the 3rd (last) one must not have this flag set π«Ά. the flag is used to deal with retransmission/duplication recovery properly, since A-MSDU subframes share the same sequence number. reported subframes can be either regular MSDU or singly A-MSDUs. β οΈ subframes must not be interleaved with other frames.RX_FLAG_RADIOTAP_TLV_AT_ENDβ this frame contains radiotap TLVs in theskb->data(before the 802.11 header). if used, the SKB'smac_headerpointer must be set to point to the 802.11 header after the TLVs, and any padding added after TLV data to align to 4 must be cleared by the driver putting the TLVs in the skb π§RX_FLAG_MIC_STRIPPEDβ the mic was stripped of this packet, and decryption was done by the hardware β¨RX_FLAG_ALLOW_SAME_PNβ allow the same PN as the same packet before. this is used for AMSDU subframes, which can have the same PN as the first subframe π«RX_FLAG_ICV_STRIPPEDβ the ICV is stripped from this frame. CRC checking must be done in the hardware β οΈRX_FLAG_AMPDU_EOF_BITβ value of the EOF bit in the A-MPDU delimiter for this frame π₯RX_FLAG_AMPDU_EOF_BIT_KNOWNβ the EOF value is known βRX_FLAG_RADIOTAP_HEβ HE radiotap data is present (struct ieee80211_radiotap_he, mac80211 will fill inRX_FLAG_RADIOTAP_HE_MUβ HE MU radiotap data is present (struct ieee80211_radiotap_he_mu) π¦RX_FLAG_RADIOTAP_LSIGβ L-SIG radiotap data is present πRX_FLAG_NO_PSDUβ use the frame only for radiotap reporting, with the "0-length PSDU" field included there. the value for it is instruct ieee80211_rx_status. β οΈ note that if this value isn't known, the frame shouldn't be reported at all πRX_FLAG_8023β the frame has an 802.3 header (decap offload performed by hardware or driver) πRX_FLAG_RADIOTAP_VHTβ VHT radiotap data is present β
π Description π
these flags are used with the flag member of struct ieee80211_rx_status π«Ά
DATA3_DATA_MCSDATA3_DATA_DCMDATA3_CODINGDATA5_GIDATA5_DATA_BW_RU_ALLOCDATA6_NSTSDATA3_STBC
...from the RX info data, so leave those zeroed when building this data) π
π okay bestie that's the flags tour and the description β but we're not done yet, there's more of this page coming, so hold that thought π
π SEE ALSO π
okay bestie, deep breath, because this list is the entire mac80211 cinematic universe in one place. every single one is a (9) manual page, and every single one is listed below, exactly, because I would never do you like that. think of it as the group chat member list β huge, chaotic, lowkey iconic π«Ά
πΈ the actual file + the orientation docs
Kernel file ./include/net/mac80211.hβ yes, the header itself gets a mention, it's that girlIntroduction(9)Calling mac80211 from interrupts(9)Warning(9)Frame format(9)mac80211 workqueue(9)mac80211 software tx queueing(9)HW timestamping(9)
π queues & access categories
enum ieee80211_max_queues(9)enum ieee80211_ac_numbers(9)struct ieee80211_tx_queue_params(9)
π¦ channel context era
enum ieee80211_chanctx_change(9)struct ieee80211_chan_req(9)struct ieee80211_chanctx_conf(9)enum ieee80211_chanctx_switch_mode(9)struct ieee80211_vif_chanctx_switch(9)
β¨ bss changes & the event saga
enum ieee80211_bss_change(9)enum ieee80211_event_type(9)enum ieee80211_rssi_event_data(9)struct ieee80211_rssi_event(9)enum ieee80211_mlme_event_data(9)enum ieee80211_mlme_event_status(9)struct ieee80211_mlme_event(9)struct ieee80211_ba_event(9)struct ieee80211_event(9)
π bss_conf and its extended family
struct ieee80211_mu_group_data(9)struct ieee80211_ftm_responder_params(9)struct ieee80211_fils_discovery(9)struct ieee80211_parsed_tpe(9)struct ieee80211_bss_npca_params(9)struct ieee80211_bss_conf(9)struct ieee80211_nan_channel(9)struct ieee80211_nan_peer_map(9)struct ieee80211_nan_peer_sched(9)
π₯ tx flags & friends
enum mac80211_tx_info_flags(9)enum mac80211_tx_control_flags(9)enum mac80211_tx_status_flags(9)enum mac80211_rate_control_flags(9)struct ieee80211_tx_rate(9)struct ieee80211_tx_info(9)struct ieee80211_tx_status(9)struct ieee80211_scan_ies(9)ieee80211_tx_info_clear_status(9)enum mac80211_rx_encoding_flags(9)struct ieee80211_rx_status(9)
π conf & channel switch
enum ieee80211_conf_flags(9)enum ieee80211_conf_changed(9)enum ieee80211_smps_mode(9)struct ieee80211_conf(9)struct ieee80211_channel_switch(9)
π the vif section (main character energy)
enum ieee80211_vif_flags(9)enum ieee80211_offload_flags(9)struct ieee80211_eml_params(9)struct ieee80211_nan_sched_cfg(9)struct ieee80211_vif_cfg(9)struct ieee80211_neg_ttlm(9)enum ieee80211_neg_ttlm_res(9)struct ieee80211_vif(9)ieee80211_vif_usable_links(9)ieee80211_vif_is_mld(9)ieee80211_vif_link_active(9)wdev_to_ieee80211_vif(9)ieee80211_vif_to_wdev(9)
π keys, sta, and the little helpers
enum ieee80211_key_flags(9)struct ieee80211_key_conf(9)struct ieee80211_key_seq(9)enum set_key_cmd(9)enum ieee80211_sta_state(9)enum ieee80211_sta_rx_bandwidth(9)struct ieee80211_sta_rates(9)struct ieee80211_sta_txpwr(9)struct ieee80211_sta_aggregates(9)struct ieee80211_link_sta(9)struct ieee80211_sta(9)enum sta_notify_cmd(9)struct ieee80211_tx_control(9)struct ieee80211_txq(9)
πΈ hw & registration bits
enum ieee80211_hw_flags(9)struct ieee80211_hw(9)struct ieee80211_scan_request(9)struct ieee80211_tdls_ch_sw_params(9)wiphy_to_ieee80211_hw(9)SET_IEEE80211_DEV(9)SET_IEEE80211_PERM_ADDR(9)ieee80211_free_txskb(9)ieee80211_purge_tx_queue(9)
π§ the feature-explainer girlies
Hardware crypto acceleration(9)Powersave support(9)Beacon filter support(9)Spatial multiplexing power save(9)Frame filtering(9)AP support for powersaving clients(9)HW queue control(9)
β ops, ampdu, and alloc/register
enum ieee80211_filter_flags(9)enum ieee80211_ampdu_mlme_action(9)struct ieee80211_ampdu_params(9)enum ieee80211_frame_release_type(9)enum ieee80211_rate_control_changed(9)enum ieee80211_roc_type(9)enum ieee80211_reconfig_type(9)struct ieee80211_prep_tx_info(9)struct ieee80211_ops(9)ieee80211_alloc_hw_nm(9)ieee80211_alloc_hw(9)ieee80211_register_hw(9)
π LED trigger corner (underrated fr)
struct ieee80211_tpt_blink(9)enum ieee80211_tpt_led_trigger_flags(9)ieee80211_get_tx_led_name(9)ieee80211_get_rx_led_name(9)ieee80211_get_assoc_led_name(9)ieee80211_get_radio_led_name(9)ieee80211_create_tpt_led_trigger(9)ieee80211_unregister_hw(9)ieee80211_free_hw(9)ieee80211_restart_hw(9)
π rx & powersave
ieee80211_rx_list(9)ieee80211_rx_napi(9)ieee80211_rx(9)ieee80211_rx_irqsafe(9)ieee80211_rx_ni(9)ieee80211_sta_ps_transition(9)ieee80211_sta_ps_transition_ni(9)ieee80211_sta_pspoll(9)ieee80211_sta_uapsd_trigger(9)ieee80211_sta_set_buffered(9)
π tx status, all the flavours
ieee80211_get_tx_rates(9)ieee80211_tx_rate_update(9)ieee80211_tx_status_skb(9)ieee80211_tx_status_ext(9)ieee80211_tx_status_noskb(9)ieee80211_tx_status_ni(9)ieee80211_tx_status_irqsafe(9)ieee80211_report_low_ack(9)
π¦ beacon template supremacy
struct ieee80211_mutable_offsets(9)ieee80211_beacon_get_template(9)ieee80211_beacon_get_template_ema_index(9)struct ieee80211_ema_beacons(9)ieee80211_beacon_get_template_ema_list(9)ieee80211_beacon_free_ema_list(9)ieee80211_beacon_get_tim(9)ieee80211_beacon_get(9)ieee80211_beacon_update_cntdwn(9)ieee80211_beacon_set_cntdwn(9)ieee80211_csa_finish(9)ieee80211_beacon_cntdwn_is_complete(9)ieee80211_color_change_finish(9)
β¨ frame-getters & duration math
ieee80211_proberesp_get(9)ieee80211_pspoll_get(9)ieee80211_nullfunc_get(9)ieee80211_probereq_get(9)ieee80211_rts_get(9)ieee80211_rts_duration(9)ieee80211_ctstoself_get(9)ieee80211_ctstoself_duration(9)ieee80211_generic_frame_duration(9)ieee80211_get_buffered_bc(9)
π₯ tkip & key replay things
ieee80211_get_tkip_p1k_iv(9)ieee80211_get_tkip_p1k(9)ieee80211_get_tkip_rx_p1k(9)ieee80211_get_tkip_p2k(9)ieee80211_tkip_add_iv(9)ieee80211_get_key_rx_seq(9)ieee80211_set_key_rx_seq(9)ieee80211_gtk_rekey_add(9)ieee80211_gtk_rekey_notify(9)ieee80211_key_mic_failure(9)ieee80211_key_replay(9)
π queue control & scanning
ieee80211_wake_queue(9)ieee80211_stop_queue(9)ieee80211_queue_stopped(9)ieee80211_stop_queues(9)ieee80211_wake_queues(9)ieee80211_scan_completed(9)ieee80211_sched_scan_results(9)ieee80211_sched_scan_stopped(9)
π iteration girlies (and the macros)
enum ieee80211_interface_iteration_flags(9)ieee80211_iterate_interfaces(9)ieee80211_iterate_active_interfaces(9)ieee80211_iterate_active_interfaces_atomic(9)for_each_interface(9)for_each_active_interface(9)ieee80211_iterate_active_interfaces_mtx(9)ieee80211_iterate_stations_atomic(9)for_each_station(9)ieee80211_iterate_stations_mtx(9)ieee80211_queue_work(9)ieee80211_queue_delayed_work(9)
π block-ack session chaos
ieee80211_refresh_tx_agg_session_timer(9)ieee80211_start_tx_ba_session(9)ieee80211_start_tx_ba_cb_irqsafe(9)ieee80211_stop_tx_ba_session(9)ieee80211_stop_tx_ba_cb_irqsafe(9)
β sta lookups & airtime
ieee80211_find_sta(9)ieee80211_find_sta_by_ifaddr(9)ieee80211_find_sta_by_link_addrs(9)ieee80211_sta_block_awake(9)ieee80211_sta_eosp(9)ieee80211_send_eosp_nullfunc(9)ieee80211_sta_recalc_aggregates(9)ieee80211_sta_register_airtime(9)ieee80211_txq_airtime_check(9)ieee80211_txq_aql_pending(9)
π§ iterators, keys & chanctx
ieee80211_iter_keys(9)ieee80211_iter_keys_rcu(9)ieee80211_iter_chan_contexts_atomic(9)ieee80211_iter_chan_contexts_mtx(9)ieee80211_ap_probereq_get(9)
π loss, disconnect & radar
ieee80211_beacon_loss(9)ieee80211_connection_loss(9)ieee80211_disconnect(9)ieee80211_resume_disconnect(9)ieee80211_hw_restart_disconnect(9)ieee80211_cqm_rssi_notify(9)ieee80211_cqm_beacon_loss_notify(9)ieee80211_radar_detected(9)ieee80211_chswitch_done(9)ieee80211_channel_switch_disconnect(9)ieee80211_request_smps(9)ieee80211_ready_on_channel(9)ieee80211_remain_on_channel_expired(9)
π rx block-ack, offline edition
ieee80211_stop_rx_ba_session(9)ieee80211_mark_rx_ba_filtered_frames(9)ieee80211_send_bar(9)ieee80211_manage_rx_ba_offl(9)ieee80211_start_rx_ba_session_offl(9)ieee80211_stop_rx_ba_session_offl(9)ieee80211_rx_ba_timer_expired(9)
π rate control, caps & the great misc pile
struct ieee80211_tx_rate_control(9)enum rate_control_capabilities(9)rate_control_set_rates(9)ieee80211_get_he_iftype_cap_vif(9)ieee80211_get_he_6ghz_capa_vif(9)ieee80211_get_eht_iftype_cap_vif(9)ieee80211_get_uhr_iftype_cap_vif(9)ieee80211_update_mu_groups(9)ieee80211_ave_rssi(9)ieee80211_calculate_rx_timestamp(9)ieee80211_report_wowlan_wakeup(9)ieee80211_tx_prepare_skb(9)ieee80211_parse_tx_radiotap(9)struct ieee80211_noa_data(9)ieee80211_parse_p2p_noa(9)ieee80211_update_p2p_noa(9)ieee80211_tdls_oper_request(9)ieee80211_reserve_tid(9)ieee80211_unreserve_tid(9)ieee80211_tx_dequeue(9)ieee80211_tx_dequeue_ni(9)ieee80211_handle_wake_tx_queue(9)ieee80211_next_txq(9)ieee80211_txq_schedule_start(9)ieee80211_schedule_txq(9)ieee80211_return_txq(9)ieee80211_txq_may_transmit(9)ieee80211_txq_get_depth(9)
π NAN, airtime & the very last stretch
ieee80211_nan_func_terminated(9)ieee80211_nan_func_match(9)ieee80211_nan_sched_update_done(9)ieee80211_nan_cluster_joined(9)ieee80211_nan_try_evacuate(9)ieee80211_calc_rx_airtime(9)ieee80211_calc_tx_airtime(9)ieee80211_get_fils_discovery_tmpl(9)ieee80211_get_unsol_bcast_probe_resp_tmpl(9)ieee80211_obss_color_collision_notify(9)ieee80211_is_tx_data(9)ieee80211_set_active_links(9)ieee80211_set_active_links_async(9)ieee80211_send_teardown_neg_ttlm(9)ieee80211_chan_width_to_rx_bw(9)ieee80211_prepare_rx_omi_bw(9)ieee80211_finalize_rx_omi_bw(9)ieee80211_vif_nan_started(9)ieee80211_encrypt_tx_skb(9)
and that's the whole roster, no skips, no cuts, we ate and left zero crumbs π
ngl the best way to survive this list is to pick like three that sound relevant and let the rest be background lore. they'll still be there when you need them π
okay that's genuinely it, bestie β you made it through the entire page. this one lives at ./include/net (yeah, that's the source path), it's the October 2026 version, and the page is enum mac80211_rx_flags(9). go hydrate, you earned it πβ¨π
π¦ 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