Merge remote-tracking branch 'asoc/fix/rcar' into asoc-linus
[sfrench/cifs-2.6.git] / Documentation / driver-api / 80211 / mac80211.rst
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