Johannes Berg | 819bf59 | 2016-10-11 14:56:53 +0200 | [diff] [blame] | 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 |