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