The mac80211 subsystem

Abstract

mac80211 is the Linux stack for 802.11 hardware that implements only partial functionality in hard- or firmware. This document defines the interface between mac80211 and low-level hardware drivers.

If you're reading this document and not the header file itself, it will be incomplete because not all documentation has been converted yet.


Table of Contents

I. The basic mac80211 driver interface
1. Basic hardware handling
struct ieee80211_hw — hardware information and state
enum ieee80211_hw_flags — hardware flags
SET_IEEE80211_DEV — set device for 802.11 hardware
SET_IEEE80211_PERM_ADDR — set the permanent MAC address for 802.11 hardware
struct ieee80211_ops — callbacks from mac80211 to the driver
ieee80211_alloc_hw — Allocate a new hardware device
ieee80211_register_hw — Register hardware device
ieee80211_unregister_hw — Unregister a hardware device
ieee80211_free_hw — free hardware descriptor
2. PHY configuration
struct ieee80211_conf — configuration of the device
enum ieee80211_conf_flags — configuration flags
3. Virtual interfaces
struct ieee80211_vif — per-interface data
4. Receive and transmit processing
what should be here
Frame format
Packet alignment
Calling into mac80211 from interrupts
functions/definitions
5. Frame filtering
enum ieee80211_filter_flags — hardware filter flags
6. The mac80211 workqueue
ieee80211_queue_work — add work onto the mac80211 workqueue
ieee80211_queue_delayed_work — add work onto the mac80211 workqueue
II. Advanced driver interface
7. LED support
ieee80211_get_tx_led_name — get name of TX LED
ieee80211_get_rx_led_name — get name of RX LED
ieee80211_get_assoc_led_name — get name of association LED
ieee80211_get_radio_led_name — get name of radio LED
struct ieee80211_tpt_blink — throughput blink description
enum ieee80211_tpt_led_trigger_flags — throughput trigger flags
ieee80211_create_tpt_led_trigger — create throughput LED trigger
8. Hardware crypto acceleration
enum set_key_cmd — key command
struct ieee80211_key_conf — key information
enum ieee80211_key_flags — key flags
enum ieee80211_tkip_key_type — get tkip key
ieee80211_get_tkip_key — get a TKIP rc4 for skb
ieee80211_key_removed — disable hw acceleration for key
9. Powersave support
10. Beacon filter support
ieee80211_beacon_loss — inform hardware does not receive beacons
11. Multiple queues and QoS support
struct ieee80211_tx_queue_params — transmit queue configuration
12. Access point mode support
ieee80211_get_buffered_bc — accessing buffered broadcast and multicast frames
ieee80211_beacon_get — beacon generation function
13. Supporting multiple virtual interfaces
ieee80211_iterate_active_interfaces — iterate active interfaces
ieee80211_iterate_active_interfaces_atomic — iterate active interfaces
14. Station handling
struct ieee80211_sta — station table entry
enum sta_notify_cmd — sta notify command
ieee80211_find_sta — find a station
ieee80211_find_sta_by_ifaddr — find a station on hardware
ieee80211_sta_block_awake — block station from waking up
15. Hardware scan offload
ieee80211_scan_completed — completed hardware scan
16. Aggregation
TX A-MPDU aggregation
RX A-MPDU aggregation
enum ieee80211_ampdu_mlme_action — A-MPDU actions
17. Spatial Multiplexing Powersave (SMPS)
ieee80211_request_smps — request SM PS transition
enum ieee80211_smps_mode — spatial multiplexing power save mode
III. Rate control interface
18. Rate Control API
ieee80211_start_tx_ba_session — Start a tx Block Ack session.
ieee80211_start_tx_ba_cb_irqsafe — low level driver ready to aggregate.
ieee80211_stop_tx_ba_session — Stop a Block Ack session.
ieee80211_stop_tx_ba_cb_irqsafe — low level driver ready to stop aggregate.
enum rate_control_changed — flags to indicate which parameter changed
struct ieee80211_tx_rate_control — rate control information for/from RC algo
rate_control_send_low — helper for drivers for management/no-ack frames
IV. Internals
19. Key handling
Key handling basics
MORE TBD
20. Receive processing
21. Transmit processing
22. Station info handling
Programming information
STA information lifetime rules
23. Aggregation
struct sta_ampdu_mlme — STA aggregation information.
struct tid_ampdu_tx — TID aggregation information (Tx).
struct tid_ampdu_rx — TID aggregation information (Rx).
24. Synchronisation