1*4882a593Smuzhiyun=========================== 2*4882a593Smuzhiyunmac80211 subsystem (basics) 3*4882a593Smuzhiyun=========================== 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunYou should read and understand the information contained within this 6*4882a593Smuzhiyunpart of the book while implementing a mac80211 driver. In some chapters, 7*4882a593Smuzhiyunadvanced usage is noted, those may be skipped if this isn't needed. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunThis part of the book only covers station and monitor mode 10*4882a593Smuzhiyunfunctionality, additional information required to implement the other 11*4882a593Smuzhiyunmodes is covered in the second part of the book. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunBasic hardware handling 14*4882a593Smuzhiyun======================= 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunTBD 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunThis chapter shall contain information on getting a hw struct allocated 19*4882a593Smuzhiyunand registered with mac80211. 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunSince it is required to allocate rates/modes before registering a hw 22*4882a593Smuzhiyunstruct, this chapter shall also contain information on setting up the 23*4882a593Smuzhiyunrate/mode structs. 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunAdditionally, some discussion about the callbacks and the general 26*4882a593Smuzhiyunprogramming model should be in here, including the definition of 27*4882a593Smuzhiyunieee80211_ops which will be referred to a lot. 28*4882a593Smuzhiyun 29*4882a593SmuzhiyunFinally, a discussion of hardware capabilities should be done with 30*4882a593Smuzhiyunreferences to other parts of the book. 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 33*4882a593Smuzhiyun :functions: 34*4882a593Smuzhiyun ieee80211_hw 35*4882a593Smuzhiyun ieee80211_hw_flags 36*4882a593Smuzhiyun SET_IEEE80211_DEV 37*4882a593Smuzhiyun SET_IEEE80211_PERM_ADDR 38*4882a593Smuzhiyun ieee80211_ops 39*4882a593Smuzhiyun ieee80211_alloc_hw 40*4882a593Smuzhiyun ieee80211_register_hw 41*4882a593Smuzhiyun ieee80211_unregister_hw 42*4882a593Smuzhiyun ieee80211_free_hw 43*4882a593Smuzhiyun 44*4882a593SmuzhiyunPHY configuration 45*4882a593Smuzhiyun================= 46*4882a593Smuzhiyun 47*4882a593SmuzhiyunTBD 48*4882a593Smuzhiyun 49*4882a593SmuzhiyunThis chapter should describe PHY handling including start/stop callbacks 50*4882a593Smuzhiyunand the various structures used. 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 53*4882a593Smuzhiyun :functions: 54*4882a593Smuzhiyun ieee80211_conf 55*4882a593Smuzhiyun ieee80211_conf_flags 56*4882a593Smuzhiyun 57*4882a593SmuzhiyunVirtual interfaces 58*4882a593Smuzhiyun================== 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunTBD 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunThis chapter should describe virtual interface basics that are relevant 63*4882a593Smuzhiyunto the driver (VLANs, MGMT etc are not.) It should explain the use of 64*4882a593Smuzhiyunthe add_iface/remove_iface callbacks as well as the interface 65*4882a593Smuzhiyunconfiguration callbacks. 66*4882a593Smuzhiyun 67*4882a593SmuzhiyunThings related to AP mode should be discussed there. 68*4882a593Smuzhiyun 69*4882a593SmuzhiyunThings related to supporting multiple interfaces should be in the 70*4882a593Smuzhiyunappropriate chapter, a BIG FAT note should be here about this though and 71*4882a593Smuzhiyunthe recommendation to allow only a single interface in STA mode at 72*4882a593Smuzhiyunfirst! 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 75*4882a593Smuzhiyun :functions: ieee80211_vif 76*4882a593Smuzhiyun 77*4882a593SmuzhiyunReceive and transmit processing 78*4882a593Smuzhiyun=============================== 79*4882a593Smuzhiyun 80*4882a593Smuzhiyunwhat should be here 81*4882a593Smuzhiyun------------------- 82*4882a593Smuzhiyun 83*4882a593SmuzhiyunTBD 84*4882a593Smuzhiyun 85*4882a593SmuzhiyunThis should describe the receive and transmit paths in mac80211/the 86*4882a593Smuzhiyundrivers as well as transmit status handling. 87*4882a593Smuzhiyun 88*4882a593SmuzhiyunFrame format 89*4882a593Smuzhiyun------------ 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 92*4882a593Smuzhiyun :doc: Frame format 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunPacket alignment 95*4882a593Smuzhiyun---------------- 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun.. kernel-doc:: net/mac80211/rx.c 98*4882a593Smuzhiyun :doc: Packet alignment 99*4882a593Smuzhiyun 100*4882a593SmuzhiyunCalling into mac80211 from interrupts 101*4882a593Smuzhiyun------------------------------------- 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 104*4882a593Smuzhiyun :doc: Calling mac80211 from interrupts 105*4882a593Smuzhiyun 106*4882a593Smuzhiyunfunctions/definitions 107*4882a593Smuzhiyun--------------------- 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 110*4882a593Smuzhiyun :functions: 111*4882a593Smuzhiyun ieee80211_rx_status 112*4882a593Smuzhiyun mac80211_rx_encoding_flags 113*4882a593Smuzhiyun mac80211_rx_flags 114*4882a593Smuzhiyun mac80211_tx_info_flags 115*4882a593Smuzhiyun mac80211_tx_control_flags 116*4882a593Smuzhiyun mac80211_rate_control_flags 117*4882a593Smuzhiyun ieee80211_tx_rate 118*4882a593Smuzhiyun ieee80211_tx_info 119*4882a593Smuzhiyun ieee80211_tx_info_clear_status 120*4882a593Smuzhiyun ieee80211_rx 121*4882a593Smuzhiyun ieee80211_rx_ni 122*4882a593Smuzhiyun ieee80211_rx_irqsafe 123*4882a593Smuzhiyun ieee80211_tx_status 124*4882a593Smuzhiyun ieee80211_tx_status_ni 125*4882a593Smuzhiyun ieee80211_tx_status_irqsafe 126*4882a593Smuzhiyun ieee80211_rts_get 127*4882a593Smuzhiyun ieee80211_rts_duration 128*4882a593Smuzhiyun ieee80211_ctstoself_get 129*4882a593Smuzhiyun ieee80211_ctstoself_duration 130*4882a593Smuzhiyun ieee80211_generic_frame_duration 131*4882a593Smuzhiyun ieee80211_wake_queue 132*4882a593Smuzhiyun ieee80211_stop_queue 133*4882a593Smuzhiyun ieee80211_wake_queues 134*4882a593Smuzhiyun ieee80211_stop_queues 135*4882a593Smuzhiyun ieee80211_queue_stopped 136*4882a593Smuzhiyun 137*4882a593SmuzhiyunFrame filtering 138*4882a593Smuzhiyun=============== 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 141*4882a593Smuzhiyun :doc: Frame filtering 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 144*4882a593Smuzhiyun :functions: ieee80211_filter_flags 145*4882a593Smuzhiyun 146*4882a593SmuzhiyunThe mac80211 workqueue 147*4882a593Smuzhiyun====================== 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 150*4882a593Smuzhiyun :doc: mac80211 workqueue 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun.. kernel-doc:: include/net/mac80211.h 153*4882a593Smuzhiyun :functions: 154*4882a593Smuzhiyun ieee80211_queue_work 155*4882a593Smuzhiyun ieee80211_queue_delayed_work 156