1 ===========================
2 mac80211 subsystem (basics)
3 ===========================
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.
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.
13 Basic hardware handling
14 =======================
18 This chapter shall contain information on getting a hw struct allocated
19 and registered with mac80211.
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
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.
29 Finally, a discussion of hardware capabilities should be done with
30 references to other parts of the book.
32 .. kernel-doc:: include/net/mac80211.h
33 :functions: ieee80211_hw
35 .. kernel-doc:: include/net/mac80211.h
36 :functions: ieee80211_hw_flags
38 .. kernel-doc:: include/net/mac80211.h
39 :functions: SET_IEEE80211_DEV
41 .. kernel-doc:: include/net/mac80211.h
42 :functions: SET_IEEE80211_PERM_ADDR
44 .. kernel-doc:: include/net/mac80211.h
45 :functions: ieee80211_ops
47 .. kernel-doc:: include/net/mac80211.h
48 :functions: ieee80211_alloc_hw
50 .. kernel-doc:: include/net/mac80211.h
51 :functions: ieee80211_register_hw
53 .. kernel-doc:: include/net/mac80211.h
54 :functions: ieee80211_unregister_hw
56 .. kernel-doc:: include/net/mac80211.h
57 :functions: ieee80211_free_hw
64 This chapter should describe PHY handling including start/stop callbacks
65 and the various structures used.
67 .. kernel-doc:: include/net/mac80211.h
68 :functions: ieee80211_conf
70 .. kernel-doc:: include/net/mac80211.h
71 :functions: ieee80211_conf_flags
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.
83 Things related to AP mode should be discussed there.
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
90 .. kernel-doc:: include/net/mac80211.h
91 :functions: ieee80211_vif
93 Receive and transmit processing
94 ===============================
101 This should describe the receive and transmit paths in mac80211/the
102 drivers as well as transmit status handling.
107 .. kernel-doc:: include/net/mac80211.h
113 .. kernel-doc:: net/mac80211/rx.c
114 :doc: Packet alignment
116 Calling into mac80211 from interrupts
117 -------------------------------------
119 .. kernel-doc:: include/net/mac80211.h
120 :doc: Calling mac80211 from interrupts
122 functions/definitions
123 ---------------------
125 .. kernel-doc:: include/net/mac80211.h
126 :functions: ieee80211_rx_status
128 .. kernel-doc:: include/net/mac80211.h
129 :functions: mac80211_rx_encoding_flags
131 .. kernel-doc:: include/net/mac80211.h
132 :functions: mac80211_rx_flags
134 .. kernel-doc:: include/net/mac80211.h
135 :functions: mac80211_tx_info_flags
137 .. kernel-doc:: include/net/mac80211.h
138 :functions: mac80211_tx_control_flags
140 .. kernel-doc:: include/net/mac80211.h
141 :functions: mac80211_rate_control_flags
143 .. kernel-doc:: include/net/mac80211.h
144 :functions: ieee80211_tx_rate
146 .. kernel-doc:: include/net/mac80211.h
147 :functions: ieee80211_tx_info
149 .. kernel-doc:: include/net/mac80211.h
150 :functions: ieee80211_tx_info_clear_status
152 .. kernel-doc:: include/net/mac80211.h
153 :functions: ieee80211_rx
155 .. kernel-doc:: include/net/mac80211.h
156 :functions: ieee80211_rx_ni
158 .. kernel-doc:: include/net/mac80211.h
159 :functions: ieee80211_rx_irqsafe
161 .. kernel-doc:: include/net/mac80211.h
162 :functions: ieee80211_tx_status
164 .. kernel-doc:: include/net/mac80211.h
165 :functions: ieee80211_tx_status_ni
167 .. kernel-doc:: include/net/mac80211.h
168 :functions: ieee80211_tx_status_irqsafe
170 .. kernel-doc:: include/net/mac80211.h
171 :functions: ieee80211_rts_get
173 .. kernel-doc:: include/net/mac80211.h
174 :functions: ieee80211_rts_duration
176 .. kernel-doc:: include/net/mac80211.h
177 :functions: ieee80211_ctstoself_get
179 .. kernel-doc:: include/net/mac80211.h
180 :functions: ieee80211_ctstoself_duration
182 .. kernel-doc:: include/net/mac80211.h
183 :functions: ieee80211_generic_frame_duration
185 .. kernel-doc:: include/net/mac80211.h
186 :functions: ieee80211_wake_queue
188 .. kernel-doc:: include/net/mac80211.h
189 :functions: ieee80211_stop_queue
191 .. kernel-doc:: include/net/mac80211.h
192 :functions: ieee80211_wake_queues
194 .. kernel-doc:: include/net/mac80211.h
195 :functions: ieee80211_stop_queues
197 .. kernel-doc:: include/net/mac80211.h
198 :functions: ieee80211_queue_stopped
203 .. kernel-doc:: include/net/mac80211.h
204 :doc: Frame filtering
206 .. kernel-doc:: include/net/mac80211.h
207 :functions: ieee80211_filter_flags
209 The mac80211 workqueue
210 ======================
212 .. kernel-doc:: include/net/mac80211.h
213 :doc: mac80211 workqueue
215 .. kernel-doc:: include/net/mac80211.h
216 :functions: ieee80211_queue_work
218 .. kernel-doc:: include/net/mac80211.h
219 :functions: ieee80211_queue_delayed_work