ieee80211_ie_split(9)
β¨ ieee80211_ie_split β¨
okay bestie, so this one's from the Kernel API Manual β section 9, kernel developer vibes, very main character of the kernel API honestly π
πΈ NAME πΈ
ieee80211_ie_split β split an IE buffer according to ordering π«
π SYNOPSIS π
size_t ieee80211_ie_split (const u8 *ies , size_t ielen , const u8 *ids
, int n_ids , size_t offset );
literally the whole signature, no cap β¨
π¦ ARGUMENTS π¦
iesβ the IE buffer π like, the actual buffer bestie, this is the thing we're splittingielenβ the length of the IE buffer π exactly what it says on the tinidsβ an array with element IDs that are allowed before the split. and okay this part is a lil special π aWLAN_EID_EXTENSIONvalue means that the next EID in the list is a sub-element of the EXTENSION IE. iykyk π«Άn_idsβ the size of the element ID array π’ how many IDs we're working withoffsetβ offset where to start splitting in the buffer π― like the starting point, where we kick things off
π DESCRIPTION π
so what does this do?? it splits an IE buffer by updating the offset variable to point to the location where the buffer should be split. that's the whole bit β¨
β οΈ okay this is the important part, do NOT skip it: it assumes that the given IE buffer is well-formed, and this has to be guaranteed by the caller! that's you bestie, that's your job π the function is not gonna vibe check the buffer for you, no cap π
it also assumes that the IEs in the buffer are ordered correctly π§ if not, the result of using this function will not be ordered correctly either, i.e. it does no reordering. so like, it's not out here fixing your mess, it's just splitting what you gave it π
β RETURN β
the offset where the next part of the buffer starts π which may be ielen if the entire (remainder) of the buffer should be used π slay
still more to come bestie, don't go anywhere π
okay bestie so this is the part of the page that's just the biggest friend group at the party π
β literally everyone cfg80211 has ever met, all tagged with (9) like a little name badge so you know which manual section they live in. no cap, this is the whole squad, so let's go down the line, no skipping, no "omg I'll get to them later" π
- Kernel file
./include/net/cfg80211.h Introduction(9)
starting with the foundational texts and the capability lore π
Device registration(9)enum ieee80211_channel_flags(9)struct ieee80211_channel(9)enum ieee80211_rate_flags(9)enum ieee80211_bss_type(9)enum ieee80211_privacy(9)struct ieee80211_rate(9)struct ieee80211_he_obss_pd(9)struct cfg80211_he_bss_color(9)struct ieee80211_sta_ht_cap(9)struct ieee80211_sta_vht_cap(9)struct ieee80211_sta_he_cap(9)struct ieee80211_eht_mcs_nss_supp(9)struct ieee80211_sta_eht_cap(9)struct ieee80211_sta_uhr_cap(9)struct ieee80211_sband_iftype_data(9)enum ieee80211_edmg_bw_config(9)struct ieee80211_edmg(9)
the s1g + band-support girlies, they ate π
struct ieee80211_sta_s1g_cap(9)struct ieee80211_supported_band(9)_ieee80211_set_sband_iftype_data(9)ieee80211_set_sband_iftype_data(9)for_each_sband_iftype_data(9)ieee80211_get_sband_iftype_data(9)ieee80211_get_he_iftype_cap(9)ieee80211_get_he_6ghz_capa(9)ieee80211_get_eht_iftype_cap(9)ieee80211_get_uhr_iftype_cap(9)wiphy_read_of_freq_limits(9)
okay next up, the whole "Actions and configuration" chapter and every struct that lives in it π₯
Actions and configuration(9)struct vif_params(9)struct key_params(9)struct cfg80211_chan_def(9)struct cfg80211_tid_cfg(9)struct cfg80211_tid_config(9)struct cfg80211_fils_aad(9)struct cfg80211_set_hw_timestamp(9)
the channel-definition crew, they're literally the main characters of every "why is my bandwidth weird" moment π
cfg80211_get_chandef_type(9)cfg80211_chandef_create(9)cfg80211_chandef_identical(9)cfg80211_chandef_is_edmg(9)cfg80211_chandef_is_s1g(9)cfg80211_chandef_compatible(9)nl80211_chan_width_to_mhz(9)cfg80211_chandef_get_width(9)cfg80211_chandef_valid(9)cfg80211_chandef_usable(9)cfg80211_chandef_dfs_required(9)cfg80211_chandef_dfs_usable(9)cfg80211_chandef_dfs_cac_time(9)cfg80211_chandef_primary(9)cfg80211_chandef_npca_valid(9)cfg80211_chandef_add_npca(9)cfg80211_chandef_add_dbe(9)nl80211_send_chandef(9)ieee80211_chandef_max_power(9)cfg80211_chandef_s1g_pri_width(9)cfg80211_any_usable_channels(9)
survey + crypto + beacon-ish squad, showing up together like they carpooled π
enum survey_info_flags(9)struct survey_info(9)-struct cfg80211_crypto_settings(9)`
okay so the SEE ALSO section is still going, and honestly? it's giving β¨guest list at the functionβ¨. here's everyone else who gets a mention, in the exact order the page names them β no skipping, no shuffling, we're respecting the queue π
cfg80211_reg_check_beaconing(9)cfg80211_reg_can_beacon(9)cfg80211_reg_can_beacon_relax(9)cfg80211_ch_switch_notify(9)cfg80211_ch_switch_started_notify(9)ieee80211_operating_class_to_band(9)ieee80211_operating_class_to_chandef(9)ieee80211_chandef_to_operating_class(9)ieee80211_chandef_to_khz(9)cfg80211_tdls_oper_request(9)cfg80211_calculate_bitrate(9)cfg80211_unregister_wdev(9)cfg80211_register_netdevice(9)cfg80211_unregister_netdevice(9)struct cfg80211_ft_event_params(9)cfg80211_ft_event(9)cfg80211_get_p2p_attr(9)ieee80211_ie_split_ric(9)ieee80211_fragment_element(9)cfg80211_report_wowlan_wakeup(9)cfg80211_crit_proto_stopped(9)ieee80211_get_num_supported_channels(9)
and we're still going, bestie, do not close the tab π
cfg80211_check_combinations(9)cfg80211_iter_combinations(9)cfg80211_get_radio_idx_by_chan(9)cfg80211_stop_link(9)cfg80211_stop_iface(9)cfg80211_shutdown_all_interfaces(9)wiphy_ext_feature_set(9)wiphy_ext_feature_isset(9)cfg80211_free_nan_func(9)struct cfg80211_nan_match_params(9)cfg80211_nan_match(9)cfg80211_nan_func_terminated(9)cfg80211_nan_sched_update_done(9)cfg80211_external_auth_request(9)cfg80211_pmsr_report(9)cfg80211_pmsr_complete(9)cfg80211_iftype_allowed(9)cfg80211_assoc_comeback(9)cfg80211_update_owe_info_event(9)cfg80211_bss_flush(9)
the way this list just keeps going. main character energy fr fr π
cfg80211_bss_color_notify(9)cfg80211_obss_color_collision_notify(9)cfg80211_color_change_started_notify(9)cfg80211_color_change_aborted_notify(9)cfg80211_color_change_notify(9)cfg80211_6ghz_power_type(9)cfg80211_links_removed(9)struct cfg80211_mlo_reconf_done_data(9)cfg80211_mlo_reconf_add_done(9)cfg80211_schedule_channels_check(9)cfg80211_epcs_changed(9)cfg80211_next_nan_dw_notif(9)cfg80211_nan_cluster_joined(9)cfg80211_nan_ulw_update(9)cfg80211_nan_channel_evac(9)wiphy_locked_debugfs_read(9)wiphy_locked_debugfs_write(9)cfg80211_s1g_get_start_freq_khz(9)cfg80211_s1g_get_end_freq_khz(9)cfg80211_s1g_get_primary_sibling(9)cfg80211_incumbent_signal_notify(9)
that's the whole squad, every single one, and yes i counted, we do not leave a bestie off the list π«Ά
ngl bestie, if you're reading this far you either really love cfg80211 cross-references or you clicked "SEE ALSO" by accident. either way i'm proud of you π
and that's a wrap on ieee80211_ie_split(9)! π the page lives in ./include/net, it's dated October 2026, and this whole gorgeous thing goes by the name ieee80211_ie_split(9) β go forth, split some IEs, and slay β¨π
π
π¦ 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