STRUCT IEEE80211_RADIOTAP_ITERATOR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct ieee80211_radiotap_iterator(9) β€” Kernel API Manual πŸ’…

okay so welcome to part 1 of 3, bestie 🫢 we're doing the Kernel API Manual thing and getting into the struct ieee80211_radiotap_iterator tea. Let's go. ✨


✨ NAME ✨

struct ieee80211_radiotap_iterator β€” tracks your walk thru the radiotap args that are present. Like, it keeps track of the radiotap args as you go through them. πŸ’…


🌸 SYNOPSIS 🌸

       struct ieee80211_radiotap_iterator {
           struct ieee80211_radiotap_header *_rtheader;
           const struct ieee80211_radiotap_vendor_namespaces *_vns;
           const struct ieee80211_radiotap_namespace *current_namespace;
           unsigned char *_arg, *_next_ns_data;
           __le32 *_next_bitmap;
           unsigned char *this_arg;
           int this_arg_index;
           int this_arg_size;
           int is_radiotap_ns;
           int _max_length;
           int _arg_index;
           uint32_t _bitmap_shifter;
           int _reset_on_ext;
        };

πŸŽ€ Members πŸŽ€

okay bestie, here's the whole cast β€” every member, no skips, no cap 🫢

  • _rtheader β€” pointer to the radiotap header we are walking through. that's the header we're touring, literally. πŸ—ΊοΈ
  • _vns β€” vendor namespace definitions. the vendor namespace lore lives here. ✨
  • current_namespace β€” pointer to the current namespace definition (or internally NULL if the current namespace is unknown). yes, internally NULL when the current namespace is unknown β€” that's the vibe. πŸ’œ
  • _arg β€” next argument pointer. the pointer to the next arg, periodt. πŸŽ€
  • _next_ns_data β€” beginning of the next namespace's data. where the next namespace's data begins, bestie. 🌸
  • _next_bitmap β€” internal pointer to next present u32. internal-only, iykyk. πŸ¦‹
  • this_arg β€” pointer to current radiotap arg; it is valid after each call to ieee80211_radiotap_iterator_next but also after ieee80211_radiotap_iterator_init where it will point to the beginning of the actual data portion. this one's main character energy: valid after every ieee80211_radiotap_iterator_next call, and also after ieee80211_radiotap_iterator_init, where it points to the beginning of the actual data portion. πŸ‘‘
  • this_arg_index β€” index of current arg, valid after each successful call to ieee80211_radiotap_iterator_next. successful call = valid index, no cap. ⭐
  • this_arg_size β€” length of the current arg, for convenience. just the length, for convenience β€” we love a helpful field. πŸ“
  • is_radiotap_ns β€” indicates whether the current namespace is the default radiotap namespace or not. default radiotap namespace? or not? this field tells you. 🌈
  • _max_length β€” length of radiotap header in cpu byte ordering. in cpu byte ordering, keep that exact. πŸ’«
  • _arg_index β€” next argument index. the next argument index, bestie. 🧚
  • _bitmap_shifter β€” internal shifter for curr u32 bitmap, b0 set == arg present. internal shifter for curr u32 bitmap β€” b0 set == arg present, exactly. πŸ”₯
  • _reset_on_ext β€” internal; reset the arg index to 0 when going to the next bitmap word. internal: reset the arg index to 0 when going to the next bitmap word. πŸŽ€

πŸ¦‹ Description πŸ¦‹

This struct describes the radiotap parser state. like, this is literally the state of the radiotap parser. ✨

🚨 bestie, listen: fields prefixed with an underscore must not be used by users of the parser, only by the parser internally. do not touch the underscore fields if you're a user of the parser β€” they are for the parser internally, periodt. πŸ’€

That's the parser state, and those underscore fields are internal-only. πŸ’…

🌈 SEE ALSO 🌈

okay so this is the guest list and bestie it is LONG. no cap, this page cross-references basically the entire cfg80211/mac80211 family β€” every struct, every enum, every helper, every subsystem page. if you came here looking for one friend, you found the whole group chat instead πŸ’€ ngl that's a flex. anyway, here's everyone, grouped so your eyes survive:


🫢 start here

  • Kernel file ./include/net/cfg80211.h Introduction(9)
  • Device registration(9)

πŸ“‘ bands, channels, rates and all the caps

like, all of the caps. every single one. she collected them all 🫢


πŸ› οΈ Actions and configuration

the chandef helpers alone are giving main character energy, there's like nine of them and they all ate πŸ’…


πŸ” Scanning and BSS list handling

  • Scanning and BSS list handling(9)
  • struct cfg80211_ssid(9)
  • struct cfg80211_scan_info(9)
  • struct cfg80211_scan_6ghz_params(9)
  • struct cfg80211_scan_request(9)
  • struct cfg80211_match_set(9)
  • struct cfg80211_sched_scan_plan(9)
  • struct cfg80211_bss_select_adjust(9)
  • struct cfg80211_sched_scan_request(9)
  • enum cfg80211_signal_type(9)
  • struct cfg80211_inform_bss(9)
  • struct cfg80211_bss_ies(9)
  • struct cfg80211_bss(9)
  • ieee80211_bss_get_elem(9)
  • ieee80211_bss_get_ie(9)
  • struct cfg80211_auth_request(9)
  • struct cfg80211_assoc_link(9)
  • struct cfg80211_ml_reconf_req(9)
  • enum cfg80211_assoc_req_flags(9)
  • struct cfg80211_assoc_request(9)
  • struct cfg80211_deauth_request(9)
  • struct cfg80211_disassoc_request(9)
  • struct cfg80211_ibss_params(9)
  • struct cfg80211_bss_selection(9)
  • struct cfg80211_connect_params(9)
  • enum cfg80211_connect_params_changed(9)
  • enum wiphy_params_flags(9)
  • struct cfg80211_pmksa(9)
  • struct cfg80211_pkt_pattern(9)
  • struct cfg80211_wowlan_tcp(9)
  • struct cfg80211_wowlan(9)
  • struct cfg80211_coalesce_rules(9)
  • struct cfg80211_coalesce(9)
  • struct cfg80211_wowlan_nd_match(9)
  • struct cfg80211_wowlan_nd_info(9)
  • struct cfg80211_wowlan_wakeup(9)
  • struct cfg80211_gtk_rekey_data(9)
  • struct cfg80211_update_ft_ies_params(9)
  • struct cfg80211_mgmt_tx_params(9)
  • struct cfg80211_dscp_exception(9)
  • struct cfg80211_dscp_range(9)
  • struct cfg80211_qos_map(9)

(wowlan stuff lives down here too, yes it does, don't ask me why, that's just where the docs put it 😌)


🧚 Neighbor Awareness Networking (NAN)

  • Neighbor Awareness Networking (NAN)(9)
  • struct cfg80211_nan_band_config(9)
  • struct cfg80211_nan_conf(9)
  • struct cfg80211_nan_channel(9)
  • struct cfg80211_nan_local_sched(9)
  • struct cfg80211_nan_peer_map(9)
  • struct cfg80211_nan_peer_sched(9)
  • enum cfg80211_nan_conf_changes(9)
  • struct cfg80211_nan_func_filter(9)
  • struct cfg80211_nan_func(9)

πŸ›°οΈ pmksa, external auth and measurement

  • struct cfg80211_pmk_conf(9)
  • struct cfg80211_external_auth_params(9)
  • struct cfg80211_ftm_responder_stats(9)
  • struct cfg80211_pmsr_ftm_result(9)
  • struct cfg80211_pmsr_result(9)
  • struct cfg80211_pmsr_ftm_request_peer(9)
  • struct cfg80211_pmsr_request_peer(9)
  • struct cfg80211_pmsr_request(9)
  • struct cfg80211_update_owe_info(9)

πŸ‘‘ wiphy & wireless_dev (the big ones)

the wiphy_work / wiphy_delayed_work / wiphy_hrtimer_work quartet-quartet is lowkey iconic β€” queue, cancel, flush, pending, times three flavours πŸ”₯


✨ Utility functions

channel ↔ frequency conversion, both directions, both units. she's bilingual bestie πŸ¦‹


🌸 Data path helpers

the find_* family goes hard β€” plain, ext, vendor, elem vs ie, match vs not. pick your fighter πŸ₯Š


πŸ“œ Regulatory enforcement infrastructure


πŸ—„οΈ Internal regulatory db functions

πŸ“£ bss plumbing & notification central

note the underscore situation: __cfg80211_get_bss(9) and cfg80211_get_bss(9) are two different pages, and cfg80211_sched_scan_stopped(9) vs cfg80211_sched_scan_stopped_locked(9) are also two different pages. do not conflate them, i'm begging πŸ™ˆ


πŸ“΄ RFkill integration


πŸ›οΈ Vendor commands


πŸ§ͺ Test mode


πŸ’Œ connect, roam, mgmt, cqm β€” the notification era

and that's the entire guest list for this section, bestie β€” every single one accounted for, nobody left on read πŸ’– keep scrolling tho, the page isn't done with you yet ✨

…and the guest list is literally not done yet, bestie 😭 the SEE ALSO section keeps going, so here's the rest of the crew β€” every single one of them, no skips, no cap πŸ’…

the regulatory + channel girlies πŸ¦‹

the setup-and-teardown besties πŸŽ€

the IE + wakeup + proto squad ✨

the link + interface era πŸ”₯

the NAN cuties 🧚

auth, PMSR, and OWE β€” very main character πŸ‘‘

the BSS flush + coloring-book era 🌈

MLO + channels-check crew πŸ’œ

more NAN, because there's always more NAN πŸ“

debugfs + S1G + incumbent signal, the deep-lore faves 🫢


okay and that's the whole list, bestie β€” every single reference, accounted for, nobody left on read πŸ’– you officially know the entire extended universe now, and honestly? iconic behaviour. go read the actual functions, they're right there, iykyk ✨

quick vibe check before you go: this page comes out of ./include/net, the version/date stamp on it is October 2026, and the footer at the very bottom repeats the name struct ieee8...tap_iterator(9) β€” so if you're citing it, that's your receipt πŸŽ€

byeee, go read your kernel headers, ily, slay πŸ’…

πŸ“¦ where this page comes from