ieee80211_amsdu_to_8023s(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’« ieee80211_amsdu_to_8023s(9) β€” the Kernel API Manual, bestie edition πŸ’«

okay so picture this: you're deep in the kernel, section 9 of the manual, and you've got yourself an A-MSDU frame that needs decoding. this is literally the page for that. welcome, i'm so glad you're here 🫢


✨ NAME ✨

ieee80211_amsdu_to_8023s β€” decode an IEEE 802.11n A-MSDU frame πŸ’…

🌸 SYNOPSIS 🌸

void ieee80211_amsdu_to_8023s (struct sk_buff *skb , struct sk_buff_head
*list , const u8 *addr , enum nl80211_iftype iftype , const unsigned int
extra_headroom , const u8 *check_da , const u8 *check_sa , u8
mesh_control );

like, yes, that's a whole lot of parameters. we'll get through them together, one at a time, no cap πŸŽ€

πŸ¦‹ ARGUMENTS πŸ¦‹

  • skb β€” the input A-MSDU frame, and bestie listen: it comes in with no headers at all. fully header-less. naked frame energy 🫣
  • list β€” the output list of 802.3 frames. heads up tho: you (the caller) have to allocate and initialize it. it is not gonna do that for you, it's not that kind of function πŸ’€
  • addr β€” the device MAC address ✨
  • iftype β€” the device interface type, as an enum nl80211_iftype πŸ’œ
  • extra_headroom β€” the hardware extra headroom for SKBs in the list. an const unsigned int, iconic, mysterious, necessary 🌈
  • check_da β€” the DA to check in the inner ethernet header, or NULL. your choice, main character πŸŽ€
  • check_sa β€” the SA to check in the inner ethernet header, or NULL. same vibe, different destination/source situation, iykyk 🌸
  • mesh_control β€” see mesh_hdr in ieee80211_is_valid_amsdu. that's the whole description. go look at that one for the lore 🧚

πŸ”₯ DESCRIPTION πŸ”₯

so what does this actually do? it decodes an IEEE 802.11 A-MSDU and converts it into a list of 802.3 frames. one in, a whole little list out β€” it's giving assembly line, it's giving transformation arc πŸ‘‘

⚠️ real talk: the list will be empty if the decode fails. no partial results, no leftovers, just vibes and an empty list. 😭
πŸ’€ and the important one: the skb must be fully header-less before being passed in here β€” and it is freed in this function. so do not, i repeat, do not go touching that skb afterwards. it's gone. periodt.

more parts coming, don't go anywhere bestie πŸ’–

πŸ’… SEE ALSO πŸ’…

okay bestie, buckle up, because this is the part where the manpage introduces you to its entire friend group 😭 and it is a LOT of friends. like, "my birthday party is at a stadium" levels of friends. every single one of these is a (9) page, every single one is real, and we're listing them all because we do not gatekeep here πŸ’–

first up, the literal source file that started all of this, plus the foundational lore:

look at all those caps. HT, VHT, HE, EHT, UHR β€” it's giving alphabet soup but make it ✨wireless✨. EHT and UHR are the newer kids and honestly they ate πŸ”₯


πŸŽ€ Actions and configuration πŸŽ€

the chandef squad is lowkey the main character here β€” channel definition girlies stay winning πŸ‘‘ and dfs is everywhere because radar avoidance is not a vibe you skip, bestie, that one's legally required πŸ’€


  • enum survey_info_flags(9)
  • struct survey_info(9)
  • struct cfg80211_crypto_settings(9)
  • struct cfg80211_mbssid_config(9)
  • struct cfg80211_mbssid_elems(9)
  • struct cfg80211_rnr_elems(9)
  • struct cfg80211_beacon_data(9)
  • struct cfg80211_acl_data(9)
  • struct cfg80211_fils_discovery(9)
  • struct cfg80211_unsol_bcast_probe_resp(9)
  • struct cfg80211_s1g_short_beacon(9)
  • struct cfg80211_ap_settings(9)
  • struct cfg80211_ap_update(9)
  • struct cfg80211_csa_settings(9)
  • struct cfg80211_color_change_settings(9)
  • struct iface_combination_params(9)
  • enum station_parameters_apply_mask(9)
  • struct sta_txpwr(9)
  • struct link_station_parameters(9)
  • struct link_station_del_parameters(9)
  • struct cfg80211_ttlm_params(9)
  • struct station_parameters(9)
  • struct station_del_parameters(9)
  • enum cfg80211_station_type(9)
  • cfg80211_check_station_change(9)
  • enum rate_info_flags(9)
  • enum rate_info_bw(9)
  • struct rate_info(9)
  • enum bss_param_flags(9)
  • struct sta_bss_parameters(9)
  • struct cfg80211_txq_stats(9)
  • struct cfg80211_tid_stats(9)
  • struct link_station_info(9)
  • struct station_info(9)
  • struct cfg80211_sar_sub_specs(9)
  • struct cfg80211_sar_specs(9)
  • struct cfg80211_sar_freq_ranges(9)
  • struct cfg80211_sar_capa(9)
  • cfg80211_get_station(9)
  • enum monitor_flags(9)
  • enum mpath_info_flags(9)
  • struct mpath_info(9)
  • enum wiphy_bss_param_flags(9)
  • struct bss_parameters(9)
  • struct mesh_config(9)
  • struct mesh_setup(9)
  • struct ocb_setup(9)
  • struct ieee80211_txq_params(9)

mesh? ocb? sar? we contain multitudes fr fr πŸ¦‹


🌸 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 bestie!! wake-on-wireless-lan!! the laptop stays asleep but still listens, that's iconic behavior honestly 😴✨


the wiphy_work / wiphy_delayed_work / wiphy_hrtimer_work trio is giving "three siblings, same energy, different timers" πŸ’€ queue, cancel, flush, pending β€” the whole choreography, periodt.


🧚 Utility functions 🧚

channel number ⇄ frequency ⇄ kHz, back and forth forever, like a situationship that never ends πŸ”


🫢 Data path helpers 🫢

hiiiii these are our direct coworkers 🫢 the find_ie family is basically "where's the information element" β€” the unsung heroes of every single frame you've ever received, no cap. and yes, ieee80211_is_valid_amsdu(9) is literally our page's bestie, go say hi πŸ’œ


πŸ”₯ Regulatory enforcement infrastructure πŸ”₯

rules are rules bestie, and the regulatory db has OPINIONS about which frequencies you're allowed to touch 🌍 the _sync one is the one that waits β€” the "I'm not leaving until you answer" variant πŸ™ˆ


πŸ“ Internal regulatory db functions πŸ“

just the one internal function, sitting there, minding its business, holding the WMM rules for the regulatory database. small but mighty ⭐


ref_bss and put_bss are the classic refcount couple β€” you take one, you give one back, or the kernel leaks and we don't do leaks in this house 😀 also cfg80211_michael_mic_failure(9) is genuinely the coolest-sounding function name in this entire list, i said what i said πŸ’…


🌈 RFkill integration 🌈

the airplane-mode squad ✈️ hw state + reason, and yes there's a reason parameter because "why is my wifi off" deserves an actual answer, bestie 😭


πŸ’€ Vendor commands πŸ’€

alloc a reply, fill it, send it, don't forget to free it β€” the eternal cycle πŸŽ€ and _ucast is the unicast version, for when you want to whisper to one listener instead of yelling to the whole group chat πŸ“’


πŸŽ€ Test mode πŸŽ€

same pattern, different subsystem β€” alloc / reply, alloc / event. consistency is so attractive honestly ✨


the cqm notify squad β€” RSSI, packet loss, TXE, beacon loss β€” is literally the "are you okay? are you okay? are you okay annie" of wireless πŸ’€ connection quality monitoring stays booked and busy.

and that's the list bestie!! every single one, no skips, no cap 🌈 if you made it to the bottom, you're officially a cfg80211 scholar, go drink some water πŸ“πŸ’–

...and the guest list keeps going, bestie, because this section is long and every single one of these pulled up to the function. No plus-ones were cut. πŸ’…


okay that's genuinely everyone, i checked twice πŸ’€

so yeah β€” ieee80211_amsdu_to_8023s(9) lives under ./include/net, this is the October 2026 edition, and that's the whole page! go convert some A-MSDU frames into 802.3 and slay, bestie 🫢✨

πŸ“¦ where this page comes from