^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) mac80211 subsystem (advanced)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) Information contained within this part of the book is of interest only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) for advanced interaction of mac80211 with drivers to exploit more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) hardware capabilities and improve performance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) LED support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Mac80211 supports various ways of blinking LEDs. Wherever possible,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) device LEDs should be exposed as LED class devices and hooked up to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) appropriate trigger, which will then be triggered appropriately by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) mac80211.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) ieee80211_get_tx_led_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ieee80211_get_rx_led_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) ieee80211_get_assoc_led_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ieee80211_get_radio_led_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ieee80211_tpt_blink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) ieee80211_tpt_led_trigger_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ieee80211_create_tpt_led_trigger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Hardware crypto acceleration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) :doc: Hardware crypto acceleration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) set_key_cmd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) ieee80211_key_conf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ieee80211_key_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) ieee80211_get_tkip_p1k
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ieee80211_get_tkip_p1k_iv
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ieee80211_get_tkip_p2k
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) Powersave support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) :doc: Powersave support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) Beacon filter support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) :doc: Beacon filter support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) :functions: ieee80211_beacon_loss
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) Multiple queues and QoS support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) ===============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) :functions: ieee80211_tx_queue_params
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Access point mode support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) =========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) Some parts of the if_conf should be discussed here instead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) Insert notes about VLAN interfaces with hw crypto here or in the hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) crypto chapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) support for powersaving clients
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) :doc: AP support for powersaving clients
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) ieee80211_get_buffered_bc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) ieee80211_beacon_get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ieee80211_sta_eosp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) ieee80211_frame_release_type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) ieee80211_sta_ps_transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) ieee80211_sta_ps_transition_ni
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) ieee80211_sta_set_buffered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) ieee80211_sta_block_awake
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Supporting multiple virtual interfaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) Note: WDS with identical MAC address should almost always be OK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) Insert notes about having multiple virtual interfaces with different MAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) addresses here, note which configurations are supported by mac80211, add
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) notes about supporting hw crypto with it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) ieee80211_iterate_active_interfaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ieee80211_iterate_active_interfaces_atomic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) Station handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) TODO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) ieee80211_sta
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) sta_notify_cmd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) ieee80211_find_sta
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) ieee80211_find_sta_by_ifaddr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) Hardware scan offload
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) :functions: ieee80211_scan_completed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) Aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) TX A-MPDU aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) .. kernel-doc:: net/mac80211/agg-tx.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) :doc: TX A-MPDU aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) .. WARNING: DOCPROC directive not supported: !Cnet/mac80211/agg-tx.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) RX A-MPDU aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) .. kernel-doc:: net/mac80211/agg-rx.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) :doc: RX A-MPDU aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) .. WARNING: DOCPROC directive not supported: !Cnet/mac80211/agg-rx.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) :functions: ieee80211_ampdu_mlme_action
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) Spatial Multiplexing Powersave (SMPS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) =====================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) :doc: Spatial multiplexing power save
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) ieee80211_request_smps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) ieee80211_smps_mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) This part of the book describes the rate control algorithm interface and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) how it relates to mac80211 and drivers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) Rate Control API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) ieee80211_start_tx_ba_session
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) ieee80211_start_tx_ba_cb_irqsafe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ieee80211_stop_tx_ba_session
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) ieee80211_stop_tx_ba_cb_irqsafe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ieee80211_rate_control_changed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) ieee80211_tx_rate_control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) This part of the book describes mac80211 internals.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) Key handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) Key handling basics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) -------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) .. kernel-doc:: net/mac80211/key.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) :doc: Key handling basics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) MORE TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) Receive processing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) ==================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) Transmit processing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ===================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) Station info handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) Programming information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) .. kernel-doc:: net/mac80211/sta_info.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) sta_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) ieee80211_sta_info_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) STA information lifetime rules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) ------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .. kernel-doc:: net/mac80211/sta_info.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) :doc: STA information lifetime rules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) Aggregation Functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) .. kernel-doc:: net/mac80211/sta_info.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) sta_ampdu_mlme
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) tid_ampdu_tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) tid_ampdu_rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) Synchronisation Functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) =========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) Locking, lots of RCU