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