<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>The 802.11 subsystems – for kernel developers</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="The 802.11 subsystems – for kernel developers" /><link rel="next" href="cfg80211-developers-guide.html" title="The cfg80211 subsystem" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The 802.11 subsystems – for kernel developers</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="cfg80211-developers-guide.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm139754525187008"></a>The 802.11 subsystems – for kernel developers</h1></div><div><h2 class="subtitle"> Explaining wireless 802.11 networking in the Linux kernel </h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Berg</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:johannes@sipsolutions.net">johannes@sipsolutions.net</a>></code></p></div></div></div></div></div><div><p class="copyright">Copyright © 2007-2009 Johannes Berg</p></div><div><div class="legalnotice"><a id="idm139754525220912"></a><p> This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. </p><p> This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. </p><p> You should have received a copy of the GNU General Public License along with this documentation; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </p><p> For more details see the file COPYING in the source distribution of Linux. </p></div></div><div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p> These books attempt to give a description of the various subsystems that play a role in 802.11 wireless networking in Linux. Since these books are for kernel developers they attempts to document the structures and functions used in the kernel as well as giving a higher-level overview. </p><p> The reader is expected to be familiar with the 802.11 standard as published by the IEEE in 802.11-2007 (or possibly later versions). References to this standard will be given as "802.11-2007 8.1.5". </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="cfg80211-developers-guide.html">The cfg80211 subsystem</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01ch01.html">1. Device registration</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-enum-ieee80211-band.html"><span class="phrase">enum ieee80211_band</span></a></span><span class="refpurpose"> — supported frequency bands </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-channel-flags.html"><span class="phrase">enum ieee80211_channel_flags</span></a></span><span class="refpurpose"> — channel flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-channel.html"><span class="phrase">struct ieee80211_channel</span></a></span><span class="refpurpose"> — channel definition </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-rate-flags.html"><span class="phrase">enum ieee80211_rate_flags</span></a></span><span class="refpurpose"> — rate flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-rate.html"><span class="phrase">struct ieee80211_rate</span></a></span><span class="refpurpose"> — bitrate definition </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-sta-ht-cap.html"><span class="phrase">struct ieee80211_sta_ht_cap</span></a></span><span class="refpurpose"> — STA's HT capabilities </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-supported-band.html"><span class="phrase">struct ieee80211_supported_band</span></a></span><span class="refpurpose"> — frequency band definition </span></dt><dt><span class="refentrytitle"><a href="API-enum-cfg80211-signal-type.html"><span class="phrase">enum cfg80211_signal_type</span></a></span><span class="refpurpose"> — signal type </span></dt><dt><span class="refentrytitle"><a href="API-enum-wiphy-params-flags.html"><span class="phrase">enum wiphy_params_flags</span></a></span><span class="refpurpose"> — set_wiphy_params bitfield values </span></dt><dt><span class="refentrytitle"><a href="API-enum-wiphy-flags.html"><span class="phrase">enum wiphy_flags</span></a></span><span class="refpurpose"> — wiphy capability flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-wiphy.html"><span class="phrase">struct wiphy</span></a></span><span class="refpurpose"> — wireless hardware description </span></dt><dt><span class="refentrytitle"><a href="API-struct-wireless-dev.html"><span class="phrase">struct wireless_dev</span></a></span><span class="refpurpose"> — wireless device state </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-new.html"><span class="phrase">wiphy_new</span></a></span><span class="refpurpose"> — create a new wiphy for use with cfg80211 </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-register.html"><span class="phrase">wiphy_register</span></a></span><span class="refpurpose"> — register a wiphy with cfg80211 </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-unregister.html"><span class="phrase">wiphy_unregister</span></a></span><span class="refpurpose"> — deregister a wiphy from cfg80211 </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-free.html"><span class="phrase">wiphy_free</span></a></span><span class="refpurpose"> — free wiphy </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-name.html"><span class="phrase">wiphy_name</span></a></span><span class="refpurpose"> — get wiphy name </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-dev.html"><span class="phrase">wiphy_dev</span></a></span><span class="refpurpose"> — get wiphy dev pointer </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-priv.html"><span class="phrase">wiphy_priv</span></a></span><span class="refpurpose"> — return priv from wiphy </span></dt><dt><span class="refentrytitle"><a href="API-priv-to-wiphy.html"><span class="phrase">priv_to_wiphy</span></a></span><span class="refpurpose"> — return the wiphy containing the priv </span></dt><dt><span class="refentrytitle"><a href="API-set-wiphy-dev.html"><span class="phrase">set_wiphy_dev</span></a></span><span class="refpurpose"> — set device pointer for wiphy </span></dt><dt><span class="refentrytitle"><a href="API-wdev-priv.html"><span class="phrase">wdev_priv</span></a></span><span class="refpurpose"> — return wiphy priv from wireless_dev </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch02.html">2. Actions and configuration</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-cfg80211-ops.html"><span class="phrase">struct cfg80211_ops</span></a></span><span class="refpurpose"> — backend description for wireless configuration </span></dt><dt><span class="refentrytitle"><a href="API-struct-vif-params.html"><span class="phrase">struct vif_params</span></a></span><span class="refpurpose"> — describes virtual interface parameters </span></dt><dt><span class="refentrytitle"><a href="API-struct-key-params.html"><span class="phrase">struct key_params</span></a></span><span class="refpurpose"> — key information </span></dt><dt><span class="refentrytitle"><a href="API-enum-survey-info-flags.html"><span class="phrase">enum survey_info_flags</span></a></span><span class="refpurpose"> — survey information flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-survey-info.html"><span class="phrase">struct survey_info</span></a></span><span class="refpurpose"> — channel survey response </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-beacon-data.html"><span class="phrase">struct cfg80211_beacon_data</span></a></span><span class="refpurpose"> — beacon data </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-ap-settings.html"><span class="phrase">struct cfg80211_ap_settings</span></a></span><span class="refpurpose"> — AP configuration </span></dt><dt><span class="refentrytitle"><a href="API-struct-station-parameters.html"><span class="phrase">struct station_parameters</span></a></span><span class="refpurpose"> — station parameters </span></dt><dt><span class="refentrytitle"><a href="API-enum-station-info-flags.html"><span class="phrase">enum station_info_flags</span></a></span><span class="refpurpose"> — station information flags </span></dt><dt><span class="refentrytitle"><a href="API-enum-rate-info-flags.html"><span class="phrase">enum rate_info_flags</span></a></span><span class="refpurpose"> — bitrate info flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-rate-info.html"><span class="phrase">struct rate_info</span></a></span><span class="refpurpose"> — bitrate information </span></dt><dt><span class="refentrytitle"><a href="API-struct-station-info.html"><span class="phrase">struct station_info</span></a></span><span class="refpurpose"> — station information </span></dt><dt><span class="refentrytitle"><a href="API-enum-monitor-flags.html"><span class="phrase">enum monitor_flags</span></a></span><span class="refpurpose"> — monitor flags </span></dt><dt><span class="refentrytitle"><a href="API-enum-mpath-info-flags.html"><span class="phrase">enum mpath_info_flags</span></a></span><span class="refpurpose"> — mesh path information flags </span></dt><dt><span class="refentrytitle"><a href="API-struct-mpath-info.html"><span class="phrase">struct mpath_info</span></a></span><span class="refpurpose"> — mesh path information </span></dt><dt><span class="refentrytitle"><a href="API-struct-bss-parameters.html"><span class="phrase">struct bss_parameters</span></a></span><span class="refpurpose"> — BSS parameters </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-txq-params.html"><span class="phrase">struct ieee80211_txq_params</span></a></span><span class="refpurpose"> — TX queue parameters </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-crypto-settings.html"><span class="phrase">struct cfg80211_crypto_settings</span></a></span><span class="refpurpose"> — Crypto settings </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-auth-request.html"><span class="phrase">struct cfg80211_auth_request</span></a></span><span class="refpurpose"> — Authentication request data </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-assoc-request.html"><span class="phrase">struct cfg80211_assoc_request</span></a></span><span class="refpurpose"> — (Re)Association request data </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-deauth-request.html"><span class="phrase">struct cfg80211_deauth_request</span></a></span><span class="refpurpose"> — Deauthentication request data </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-disassoc-request.html"><span class="phrase">struct cfg80211_disassoc_request</span></a></span><span class="refpurpose"> — Disassociation request data </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-ibss-params.html"><span class="phrase">struct cfg80211_ibss_params</span></a></span><span class="refpurpose"> — IBSS parameters </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-connect-params.html"><span class="phrase">struct cfg80211_connect_params</span></a></span><span class="refpurpose"> — Connection parameters </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-pmksa.html"><span class="phrase">struct cfg80211_pmksa</span></a></span><span class="refpurpose"> — PMK Security Association </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-rx-mlme-mgmt.html"><span class="phrase">cfg80211_rx_mlme_mgmt</span></a></span><span class="refpurpose"> — notification of processed MLME management frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-auth-timeout.html"><span class="phrase">cfg80211_auth_timeout</span></a></span><span class="refpurpose"> — notification of timed out authentication </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-rx-assoc-resp.html"><span class="phrase">cfg80211_rx_assoc_resp</span></a></span><span class="refpurpose"> — notification of processed association response </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-assoc-timeout.html"><span class="phrase">cfg80211_assoc_timeout</span></a></span><span class="refpurpose"> — notification of timed out association </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-tx-mlme-mgmt.html"><span class="phrase">cfg80211_tx_mlme_mgmt</span></a></span><span class="refpurpose"> — notification of transmitted deauth/disassoc frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-ibss-joined.html"><span class="phrase">cfg80211_ibss_joined</span></a></span><span class="refpurpose"> — notify cfg80211 that device joined an IBSS </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-connect-result.html"><span class="phrase">cfg80211_connect_result</span></a></span><span class="refpurpose"> — notify cfg80211 of connection result </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-roamed.html"><span class="phrase">cfg80211_roamed</span></a></span><span class="refpurpose"> — notify cfg80211 of roaming </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-disconnected.html"><span class="phrase">cfg80211_disconnected</span></a></span><span class="refpurpose"> — notify cfg80211 that connection was dropped </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-ready-on-channel.html"><span class="phrase">cfg80211_ready_on_channel</span></a></span><span class="refpurpose"> — notification of remain_on_channel start </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-remain-on-channel-expired.html"><span class="phrase">cfg80211_remain_on_channel_expired</span></a></span><span class="refpurpose"> — remain_on_channel duration expired </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-new-sta.html"><span class="phrase">cfg80211_new_sta</span></a></span><span class="refpurpose"> — notify userspace about station </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-rx-mgmt.html"><span class="phrase">cfg80211_rx_mgmt</span></a></span><span class="refpurpose"> — notification of received, unprocessed management frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-mgmt-tx-status.html"><span class="phrase">cfg80211_mgmt_tx_status</span></a></span><span class="refpurpose"> — notification of TX status for management frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-cqm-rssi-notify.html"><span class="phrase">cfg80211_cqm_rssi_notify</span></a></span><span class="refpurpose"> — connection quality monitoring rssi event </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-cqm-pktloss-notify.html"><span class="phrase">cfg80211_cqm_pktloss_notify</span></a></span><span class="refpurpose"> — notify userspace about packetloss to peer </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-michael-mic-failure.html"><span class="phrase">cfg80211_michael_mic_failure</span></a></span><span class="refpurpose"> — notification of Michael MIC failure (TKIP) </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch03.html">3. Scanning and BSS list handling</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-cfg80211-ssid.html"><span class="phrase">struct cfg80211_ssid</span></a></span><span class="refpurpose"> — SSID description </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-scan-request.html"><span class="phrase">struct cfg80211_scan_request</span></a></span><span class="refpurpose"> — scan request description </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-scan-done.html"><span class="phrase">cfg80211_scan_done</span></a></span><span class="refpurpose"> — notify that scan finished </span></dt><dt><span class="refentrytitle"><a href="API-struct-cfg80211-bss.html"><span class="phrase">struct cfg80211_bss</span></a></span><span class="refpurpose"> — BSS description </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-inform-bss-frame.html"><span class="phrase">cfg80211_inform_bss_frame</span></a></span><span class="refpurpose"> — inform cfg80211 of a received BSS frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-inform-bss.html"><span class="phrase">cfg80211_inform_bss</span></a></span><span class="refpurpose"> — inform cfg80211 of a new BSS </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-unlink-bss.html"><span class="phrase">cfg80211_unlink_bss</span></a></span><span class="refpurpose"> — unlink BSS from internal data structures </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-find-ie.html"><span class="phrase">cfg80211_find_ie</span></a></span><span class="refpurpose"> — find information element in data </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-bss-get-ie.html"><span class="phrase">ieee80211_bss_get_ie</span></a></span><span class="refpurpose"> — find IE with given ID </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch04.html">4. Utility functions</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-channel-to-frequency.html"><span class="phrase">ieee80211_channel_to_frequency</span></a></span><span class="refpurpose"> — convert channel number to frequency </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-frequency-to-channel.html"><span class="phrase">ieee80211_frequency_to_channel</span></a></span><span class="refpurpose"> — convert frequency to channel number </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-channel.html"><span class="phrase">ieee80211_get_channel</span></a></span><span class="refpurpose"> — get channel struct from wiphy for specified frequency </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-response-rate.html"><span class="phrase">ieee80211_get_response_rate</span></a></span><span class="refpurpose"> — get basic rate for a given rate </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-hdrlen.html"><span class="phrase">ieee80211_hdrlen</span></a></span><span class="refpurpose"> — get header length in bytes from frame control </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-hdrlen-from-skb.html"><span class="phrase">ieee80211_get_hdrlen_from_skb</span></a></span><span class="refpurpose"> — get header length from data </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-radiotap-iterator.html"><span class="phrase">struct ieee80211_radiotap_iterator</span></a></span><span class="refpurpose"> — tracks walk thru present radiotap args </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch05.html">5. Data path helpers</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-data-to-8023.html"><span class="phrase">ieee80211_data_to_8023</span></a></span><span class="refpurpose"> — convert an 802.11 data frame to 802.3 </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-data-from-8023.html"><span class="phrase">ieee80211_data_from_8023</span></a></span><span class="refpurpose"> — convert an 802.3 frame to 802.11 </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-amsdu-to-8023s.html"><span class="phrase">ieee80211_amsdu_to_8023s</span></a></span><span class="refpurpose"> — decode an IEEE 802.11n A-MSDU frame </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-classify8021d.html"><span class="phrase">cfg80211_classify8021d</span></a></span><span class="refpurpose"> — determine the 802.1p/1d tag for a data frame </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch06.html">6. Regulatory enforcement infrastructure</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-regulatory-hint.html"><span class="phrase">regulatory_hint</span></a></span><span class="refpurpose"> — driver hint to the wireless core a regulatory domain </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-apply-custom-regulatory.html"><span class="phrase">wiphy_apply_custom_regulatory</span></a></span><span class="refpurpose"> — apply a custom driver regulatory domain </span></dt><dt><span class="refentrytitle"><a href="API-freq-reg-info.html"><span class="phrase">freq_reg_info</span></a></span><span class="refpurpose"> — get regulatory information for the given frequency </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch07.html">7. RFkill integration</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-wiphy-rfkill-set-hw-state.html"><span class="phrase">wiphy_rfkill_set_hw_state</span></a></span><span class="refpurpose"> — notify cfg80211 about hw block state </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-rfkill-start-polling.html"><span class="phrase">wiphy_rfkill_start_polling</span></a></span><span class="refpurpose"> — start polling rfkill </span></dt><dt><span class="refentrytitle"><a href="API-wiphy-rfkill-stop-polling.html"><span class="phrase">wiphy_rfkill_stop_polling</span></a></span><span class="refpurpose"> — stop polling rfkill </span></dt></dl></dd><dt><span class="chapter"><a href="bk01ch08.html">8. Test mode</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-cfg80211-testmode-alloc-reply-skb.html"><span class="phrase">cfg80211_testmode_alloc_reply_skb</span></a></span><span class="refpurpose"> — allocate testmode reply </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-testmode-reply.html"><span class="phrase">cfg80211_testmode_reply</span></a></span><span class="refpurpose"> — send the reply skb </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-testmode-alloc-event-skb.html"><span class="phrase">cfg80211_testmode_alloc_event_skb</span></a></span><span class="refpurpose"> — allocate testmode event </span></dt><dt><span class="refentrytitle"><a href="API-cfg80211-testmode-event.html"><span class="phrase">cfg80211_testmode_event</span></a></span><span class="refpurpose"> — send the event </span></dt></dl></dd></dl></dd><dt><span class="book"><a href="mac80211-developers-guide.html">The mac80211 subsystem</a></span></dt><dd><dl><dt><span class="part"><a href="bk02pt01.html">I. The basic mac80211 driver interface</a></span></dt><dd><dl><dt><span class="chapter"><a href="basics.html">1. Basic hardware handling</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-ieee80211-hw.html"><span class="phrase">struct ieee80211_hw</span></a></span><span class="refpurpose"> — hardware information and state </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-hw-flags.html"><span class="phrase">enum ieee80211_hw_flags</span></a></span><span class="refpurpose"> — hardware flags </span></dt><dt><span class="refentrytitle"><a href="API-SET-IEEE80211-DEV.html"><span class="phrase">SET_IEEE80211_DEV</span></a></span><span class="refpurpose"> — set device for 802.11 hardware </span></dt><dt><span class="refentrytitle"><a href="API-SET-IEEE80211-PERM-ADDR.html"><span class="phrase">SET_IEEE80211_PERM_ADDR</span></a></span><span class="refpurpose"> — set the permanent MAC address for 802.11 hardware </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-ops.html"><span class="phrase">struct ieee80211_ops</span></a></span><span class="refpurpose"> — callbacks from mac80211 to the driver </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-alloc-hw.html"><span class="phrase">ieee80211_alloc_hw</span></a></span><span class="refpurpose"> — Allocate a new hardware device </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-register-hw.html"><span class="phrase">ieee80211_register_hw</span></a></span><span class="refpurpose"> — Register hardware device </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-unregister-hw.html"><span class="phrase">ieee80211_unregister_hw</span></a></span><span class="refpurpose"> — Unregister a hardware device </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-free-hw.html"><span class="phrase">ieee80211_free_hw</span></a></span><span class="refpurpose"> — free hardware descriptor </span></dt></dl></dd><dt><span class="chapter"><a href="phy-handling.html">2. PHY configuration</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-ieee80211-conf.html"><span class="phrase">struct ieee80211_conf</span></a></span><span class="refpurpose"> — configuration of the device </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-conf-flags.html"><span class="phrase">enum ieee80211_conf_flags</span></a></span><span class="refpurpose"> — configuration flags </span></dt></dl></dd><dt><span class="chapter"><a href="iface-handling.html">3. Virtual interfaces</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-ieee80211-vif.html"><span class="phrase">struct ieee80211_vif</span></a></span><span class="refpurpose"> — per-interface data </span></dt></dl></dd><dt><span class="chapter"><a href="rx-tx.html">4. Receive and transmit processing</a></span></dt><dd><dl><dt><span class="sect1"><a href="rx-tx.html#idm139754517934032">what should be here</a></span></dt><dt><span class="sect1"><a href="bk02pt01ch04s02.html">Frame format</a></span></dt><dt><span class="sect1"><a href="bk02pt01ch04s03.html">Packet alignment</a></span></dt><dt><span class="sect1"><a href="bk02pt01ch04s04.html">Calling into mac80211 from interrupts</a></span></dt><dt><span class="sect1"><a href="bk02pt01ch04s05.html">functions/definitions</a></span></dt></dl></dd><dt><span class="chapter"><a href="filters.html">5. Frame filtering</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-enum-ieee80211-filter-flags.html"><span class="phrase">enum ieee80211_filter_flags</span></a></span><span class="refpurpose"> — hardware filter flags </span></dt></dl></dd><dt><span class="chapter"><a href="workqueue.html">6. The mac80211 workqueue</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-queue-work.html"><span class="phrase">ieee80211_queue_work</span></a></span><span class="refpurpose"> — add work onto the mac80211 workqueue </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-queue-delayed-work.html"><span class="phrase">ieee80211_queue_delayed_work</span></a></span><span class="refpurpose"> — add work onto the mac80211 workqueue </span></dt></dl></dd></dl></dd><dt><span class="part"><a href="advanced.html">II. Advanced driver interface</a></span></dt><dd><dl><dt><span class="chapter"><a href="led-support.html">7. LED support</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-get-tx-led-name.html"><span class="phrase">ieee80211_get_tx_led_name</span></a></span><span class="refpurpose"> — get name of TX LED </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-rx-led-name.html"><span class="phrase">ieee80211_get_rx_led_name</span></a></span><span class="refpurpose"> — get name of RX LED </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-assoc-led-name.html"><span class="phrase">ieee80211_get_assoc_led_name</span></a></span><span class="refpurpose"> — get name of association LED </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-radio-led-name.html"><span class="phrase">ieee80211_get_radio_led_name</span></a></span><span class="refpurpose"> — get name of radio LED </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-tpt-blink.html"><span class="phrase">struct ieee80211_tpt_blink</span></a></span><span class="refpurpose"> — throughput blink description </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-tpt-led-trigger-flags.html"><span class="phrase">enum ieee80211_tpt_led_trigger_flags</span></a></span><span class="refpurpose"> — throughput trigger flags </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-create-tpt-led-trigger.html"><span class="phrase">ieee80211_create_tpt_led_trigger</span></a></span><span class="refpurpose"> — create throughput LED trigger </span></dt></dl></dd><dt><span class="chapter"><a href="hardware-crypto-offload.html">8. Hardware crypto acceleration</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-enum-set-key-cmd.html"><span class="phrase">enum set_key_cmd</span></a></span><span class="refpurpose"> — key command </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-key-conf.html"><span class="phrase">struct ieee80211_key_conf</span></a></span><span class="refpurpose"> — key information </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-key-flags.html"><span class="phrase">enum ieee80211_key_flags</span></a></span><span class="refpurpose"> — key flags </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-tkip-p1k.html"><span class="phrase">ieee80211_get_tkip_p1k</span></a></span><span class="refpurpose"> — get a TKIP phase 1 key </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-tkip-p1k-iv.html"><span class="phrase">ieee80211_get_tkip_p1k_iv</span></a></span><span class="refpurpose"> — get a TKIP phase 1 key for IV32 </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-tkip-p2k.html"><span class="phrase">ieee80211_get_tkip_p2k</span></a></span><span class="refpurpose"> — get a TKIP phase 2 key </span></dt></dl></dd><dt><span class="chapter"><a href="powersave.html">9. Powersave support</a></span></dt><dt><span class="chapter"><a href="beacon-filter.html">10. Beacon filter support</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-beacon-loss.html"><span class="phrase">ieee80211_beacon_loss</span></a></span><span class="refpurpose"> — inform hardware does not receive beacons </span></dt></dl></dd><dt><span class="chapter"><a href="qos.html">11. Multiple queues and QoS support</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-ieee80211-tx-queue-params.html"><span class="phrase">struct ieee80211_tx_queue_params</span></a></span><span class="refpurpose"> — transmit queue configuration </span></dt></dl></dd><dt><span class="chapter"><a href="AP.html">12. Access point mode support</a></span></dt><dd><dl><dt><span class="section"><a href="AP.html#ps-client">support for powersaving clients</a></span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-get-buffered-bc.html"><span class="phrase">ieee80211_get_buffered_bc</span></a></span><span class="refpurpose"> — accessing buffered broadcast and multicast frames </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-beacon-get.html"><span class="phrase">ieee80211_beacon_get</span></a></span><span class="refpurpose"> — beacon generation function </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-sta-eosp.html"><span class="phrase">ieee80211_sta_eosp</span></a></span><span class="refpurpose"> — notify mac80211 about end of SP </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-frame-release-type.html"><span class="phrase">enum ieee80211_frame_release_type</span></a></span><span class="refpurpose"> — frame release reason </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-sta-ps-transition.html"><span class="phrase">ieee80211_sta_ps_transition</span></a></span><span class="refpurpose"> — PS transition for connected sta </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-sta-ps-transition-ni.html"><span class="phrase">ieee80211_sta_ps_transition_ni</span></a></span><span class="refpurpose"> — PS transition for connected sta (in process context) </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-sta-set-buffered.html"><span class="phrase">ieee80211_sta_set_buffered</span></a></span><span class="refpurpose"> — inform mac80211 about driver-buffered frames </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-sta-block-awake.html"><span class="phrase">ieee80211_sta_block_awake</span></a></span><span class="refpurpose"> — block station from waking up </span></dt></dl></dd><dt><span class="chapter"><a href="multi-iface.html">13. Supporting multiple virtual interfaces</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-iterate-active-interfaces.html"><span class="phrase">ieee80211_iterate_active_interfaces</span></a></span><span class="refpurpose"> — iterate active interfaces </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-iterate-active-interfaces-atomic.html"><span class="phrase">ieee80211_iterate_active_interfaces_atomic</span></a></span><span class="refpurpose"> — iterate active interfaces </span></dt></dl></dd><dt><span class="chapter"><a href="station-handling.html">14. Station handling</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-ieee80211-sta.html"><span class="phrase">struct ieee80211_sta</span></a></span><span class="refpurpose"> — station table entry </span></dt><dt><span class="refentrytitle"><a href="API-enum-sta-notify-cmd.html"><span class="phrase">enum sta_notify_cmd</span></a></span><span class="refpurpose"> — sta notify command </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-find-sta.html"><span class="phrase">ieee80211_find_sta</span></a></span><span class="refpurpose"> — find a station </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-find-sta-by-ifaddr.html"><span class="phrase">ieee80211_find_sta_by_ifaddr</span></a></span><span class="refpurpose"> — find a station on hardware </span></dt></dl></dd><dt><span class="chapter"><a href="hardware-scan-offload.html">15. Hardware scan offload</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-scan-completed.html"><span class="phrase">ieee80211_scan_completed</span></a></span><span class="refpurpose"> — completed hardware scan </span></dt></dl></dd><dt><span class="chapter"><a href="aggregation.html">16. Aggregation</a></span></dt><dd><dl><dt><span class="sect1"><a href="aggregation.html#idm139754516603776">TX A-MPDU aggregation</a></span></dt><dt><span class="sect1"><a href="bk02pt02ch16s02.html">RX A-MPDU aggregation</a></span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-ampdu-mlme-action.html"><span class="phrase">enum ieee80211_ampdu_mlme_action</span></a></span><span class="refpurpose"> — A-MPDU actions </span></dt></dl></dd><dt><span class="chapter"><a href="smps.html">17. Spatial Multiplexing Powersave (SMPS)</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-request-smps.html"><span class="phrase">ieee80211_request_smps</span></a></span><span class="refpurpose"> — request SM PS transition </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-smps-mode.html"><span class="phrase">enum ieee80211_smps_mode</span></a></span><span class="refpurpose"> — spatial multiplexing power save mode </span></dt></dl></dd></dl></dd><dt><span class="part"><a href="rate-control.html">III. Rate control interface</a></span></dt><dd><dl><dt><span class="chapter"><a href="ratecontrol-api.html">18. Rate Control API</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-ieee80211-start-tx-ba-session.html"><span class="phrase">ieee80211_start_tx_ba_session</span></a></span><span class="refpurpose"> — Start a tx Block Ack session. </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-start-tx-ba-cb-irqsafe.html"><span class="phrase">ieee80211_start_tx_ba_cb_irqsafe</span></a></span><span class="refpurpose"> — low level driver ready to aggregate. </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-stop-tx-ba-session.html"><span class="phrase">ieee80211_stop_tx_ba_session</span></a></span><span class="refpurpose"> — Stop a Block Ack session. </span></dt><dt><span class="refentrytitle"><a href="API-ieee80211-stop-tx-ba-cb-irqsafe.html"><span class="phrase">ieee80211_stop_tx_ba_cb_irqsafe</span></a></span><span class="refpurpose"> — low level driver ready to stop aggregate. </span></dt><dt><span class="refentrytitle"><a href="API-enum-ieee80211-rate-control-changed.html"><span class="phrase">enum ieee80211_rate_control_changed</span></a></span><span class="refpurpose"> — flags to indicate what changed </span></dt><dt><span class="refentrytitle"><a href="API-struct-ieee80211-tx-rate-control.html"><span class="phrase">struct ieee80211_tx_rate_control</span></a></span><span class="refpurpose"> — rate control information for/from RC algo </span></dt><dt><span class="refentrytitle"><a href="API-rate-control-send-low.html"><span class="phrase">rate_control_send_low</span></a></span><span class="refpurpose"> — helper for drivers for management/no-ack frames </span></dt></dl></dd></dl></dd><dt><span class="part"><a href="internal.html">IV. Internals</a></span></dt><dd><dl><dt><span class="chapter"><a href="key-handling.html">19. Key handling</a></span></dt><dd><dl><dt><span class="sect1"><a href="key-handling.html#idm139754516378928">Key handling basics</a></span></dt><dt><span class="sect1"><a href="bk02pt04ch19s02.html">MORE TBD</a></span></dt></dl></dd><dt><span class="chapter"><a href="rx-processing.html">20. Receive processing</a></span></dt><dt><span class="chapter"><a href="tx-processing.html">21. Transmit processing</a></span></dt><dt><span class="chapter"><a href="sta-info.html">22. Station info handling</a></span></dt><dd><dl><dt><span class="sect1"><a href="sta-info.html#idm139754516369232">Programming information</a></span></dt><dt><span class="sect1"><a href="bk02pt04ch22s02.html">STA information lifetime rules</a></span></dt></dl></dd><dt><span class="chapter"><a href="aggregation-internals.html">23. Aggregation</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-sta-ampdu-mlme.html"><span class="phrase">struct sta_ampdu_mlme</span></a></span><span class="refpurpose"> — STA aggregation information. </span></dt><dt><span class="refentrytitle"><a href="API-struct-tid-ampdu-tx.html"><span class="phrase">struct tid_ampdu_tx</span></a></span><span class="refpurpose"> — TID aggregation information (Tx). </span></dt><dt><span class="refentrytitle"><a href="API-struct-tid-ampdu-rx.html"><span class="phrase">struct tid_ampdu_rx</span></a></span><span class="refpurpose"> — TID aggregation information (Rx). </span></dt></dl></dd><dt><span class="chapter"><a href="synchronisation.html">24. Synchronisation</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="cfg80211-developers-guide.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> The cfg80211 subsystem</td></tr></table></div></body></html>