1=========================== 2mac80211 subsystem (basics) 3=========================== 4 5You should read and understand the information contained within this 6part of the book while implementing a mac80211 driver. In some chapters, 7advanced usage is noted, those may be skipped if this isn't needed. 8 9This part of the book only covers station and monitor mode 10functionality, additional information required to implement the other 11modes is covered in the second part of the book. 12 13Basic hardware handling 14======================= 15 16TBD 17 18This chapter shall contain information on getting a hw struct allocated 19and registered with mac80211. 20 21Since it is required to allocate rates/modes before registering a hw 22struct, this chapter shall also contain information on setting up the 23rate/mode structs. 24 25Additionally, some discussion about the callbacks and the general 26programming model should be in here, including the definition of 27ieee80211_ops which will be referred to a lot. 28 29Finally, a discussion of hardware capabilities should be done with 30references to other parts of the book. 31 32.. kernel-doc:: include/net/mac80211.h 33 :functions: ieee80211_hw 34 35.. kernel-doc:: include/net/mac80211.h 36 :functions: ieee80211_hw_flags 37 38.. kernel-doc:: include/net/mac80211.h 39 :functions: SET_IEEE80211_DEV 40 41.. kernel-doc:: include/net/mac80211.h 42 :functions: SET_IEEE80211_PERM_ADDR 43 44.. kernel-doc:: include/net/mac80211.h 45 :functions: ieee80211_ops 46 47.. kernel-doc:: include/net/mac80211.h 48 :functions: ieee80211_alloc_hw 49 50.. kernel-doc:: include/net/mac80211.h 51 :functions: ieee80211_register_hw 52 53.. kernel-doc:: include/net/mac80211.h 54 :functions: ieee80211_unregister_hw 55 56.. kernel-doc:: include/net/mac80211.h 57 :functions: ieee80211_free_hw 58 59PHY configuration 60================= 61 62TBD 63 64This chapter should describe PHY handling including start/stop callbacks 65and the various structures used. 66 67.. kernel-doc:: include/net/mac80211.h 68 :functions: ieee80211_conf 69 70.. kernel-doc:: include/net/mac80211.h 71 :functions: ieee80211_conf_flags 72 73Virtual interfaces 74================== 75 76TBD 77 78This chapter should describe virtual interface basics that are relevant 79to the driver (VLANs, MGMT etc are not.) It should explain the use of 80the add_iface/remove_iface callbacks as well as the interface 81configuration callbacks. 82 83Things related to AP mode should be discussed there. 84 85Things related to supporting multiple interfaces should be in the 86appropriate chapter, a BIG FAT note should be here about this though and 87the recommendation to allow only a single interface in STA mode at 88first! 89 90.. kernel-doc:: include/net/mac80211.h 91 :functions: ieee80211_vif 92 93Receive and transmit processing 94=============================== 95 96what should be here 97------------------- 98 99TBD 100 101This should describe the receive and transmit paths in mac80211/the 102drivers as well as transmit status handling. 103 104Frame format 105------------ 106 107.. kernel-doc:: include/net/mac80211.h 108 :doc: Frame format 109 110Packet alignment 111---------------- 112 113.. kernel-doc:: net/mac80211/rx.c 114 :doc: Packet alignment 115 116Calling into mac80211 from interrupts 117------------------------------------- 118 119.. kernel-doc:: include/net/mac80211.h 120 :doc: Calling mac80211 from interrupts 121 122functions/definitions 123--------------------- 124 125.. kernel-doc:: include/net/mac80211.h 126 :functions: ieee80211_rx_status 127 128.. kernel-doc:: include/net/mac80211.h 129 :functions: mac80211_rx_encoding_flags 130 131.. kernel-doc:: include/net/mac80211.h 132 :functions: mac80211_rx_flags 133 134.. kernel-doc:: include/net/mac80211.h 135 :functions: mac80211_tx_info_flags 136 137.. kernel-doc:: include/net/mac80211.h 138 :functions: mac80211_tx_control_flags 139 140.. kernel-doc:: include/net/mac80211.h 141 :functions: mac80211_rate_control_flags 142 143.. kernel-doc:: include/net/mac80211.h 144 :functions: ieee80211_tx_rate 145 146.. kernel-doc:: include/net/mac80211.h 147 :functions: ieee80211_tx_info 148 149.. kernel-doc:: include/net/mac80211.h 150 :functions: ieee80211_tx_info_clear_status 151 152.. kernel-doc:: include/net/mac80211.h 153 :functions: ieee80211_rx 154 155.. kernel-doc:: include/net/mac80211.h 156 :functions: ieee80211_rx_ni 157 158.. kernel-doc:: include/net/mac80211.h 159 :functions: ieee80211_rx_irqsafe 160 161.. kernel-doc:: include/net/mac80211.h 162 :functions: ieee80211_tx_status 163 164.. kernel-doc:: include/net/mac80211.h 165 :functions: ieee80211_tx_status_ni 166 167.. kernel-doc:: include/net/mac80211.h 168 :functions: ieee80211_tx_status_irqsafe 169 170.. kernel-doc:: include/net/mac80211.h 171 :functions: ieee80211_rts_get 172 173.. kernel-doc:: include/net/mac80211.h 174 :functions: ieee80211_rts_duration 175 176.. kernel-doc:: include/net/mac80211.h 177 :functions: ieee80211_ctstoself_get 178 179.. kernel-doc:: include/net/mac80211.h 180 :functions: ieee80211_ctstoself_duration 181 182.. kernel-doc:: include/net/mac80211.h 183 :functions: ieee80211_generic_frame_duration 184 185.. kernel-doc:: include/net/mac80211.h 186 :functions: ieee80211_wake_queue 187 188.. kernel-doc:: include/net/mac80211.h 189 :functions: ieee80211_stop_queue 190 191.. kernel-doc:: include/net/mac80211.h 192 :functions: ieee80211_wake_queues 193 194.. kernel-doc:: include/net/mac80211.h 195 :functions: ieee80211_stop_queues 196 197.. kernel-doc:: include/net/mac80211.h 198 :functions: ieee80211_queue_stopped 199 200Frame filtering 201=============== 202 203.. kernel-doc:: include/net/mac80211.h 204 :doc: Frame filtering 205 206.. kernel-doc:: include/net/mac80211.h 207 :functions: ieee80211_filter_flags 208 209The mac80211 workqueue 210====================== 211 212.. kernel-doc:: include/net/mac80211.h 213 :doc: mac80211 workqueue 214 215.. kernel-doc:: include/net/mac80211.h 216 :functions: ieee80211_queue_work 217 218.. kernel-doc:: include/net/mac80211.h 219 :functions: ieee80211_queue_delayed_work 220