Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / net80211_err.h
1 #ifndef _IPXE_NET80211_ERR_H
2 #define _IPXE_NET80211_ERR_H
3
4 #include <errno.h>
5 #include <ipxe/ieee80211.h>
6
7 /*
8  * The iPXE 802.11 MAC layer.
9  *
10  * Copyright (c) 2009 Joshua Oreman <oremanj@rwcr.net>.
11  */
12
13 FILE_LICENCE ( GPL2_OR_LATER );
14
15 /** @file
16  *
17  * The iPXE 802.11 MAC layer errors.
18  */
19
20 /* Disambiguate the EINVAL's a bit */
21 #define EINVAL_PKT_TOO_SHORT __einfo_error ( EINFO_EINVAL_PKT_TOO_SHORT )
22 #define EINFO_EINVAL_PKT_TOO_SHORT __einfo_uniqify \
23         ( EINFO_EINVAL, 0x01, "Packet too short" )
24 #define EINVAL_PKT_VERSION __einfo_error ( EINFO_EINVAL_PKT_VERSION )
25 #define EINFO_EINVAL_PKT_VERSION __einfo_uniqify \
26         ( EINFO_EINVAL, 0x02, "Packet 802.11 version not supported" )
27 #define EINVAL_PKT_NOT_DATA __einfo_error ( EINFO_EINVAL_PKT_NOT_DATA )
28 #define EINFO_EINVAL_PKT_NOT_DATA __einfo_uniqify \
29         ( EINFO_EINVAL, 0x03, "Packet not a data packet" )
30 #define EINVAL_PKT_NOT_FROMDS __einfo_error ( EINFO_EINVAL_PKT_NOT_FROMDS )
31 #define EINFO_EINVAL_PKT_NOT_FROMDS __einfo_uniqify \
32         ( EINFO_EINVAL, 0x04, "Packet not from an Access Point" )
33 #define EINVAL_PKT_LLC_HEADER __einfo_error ( EINFO_EINVAL_PKT_LLC_HEADER )
34 #define EINFO_EINVAL_PKT_LLC_HEADER __einfo_uniqify \
35         ( EINFO_EINVAL, 0x05, "Packet has invalid LLC header" )
36 #define EINVAL_CRYPTO_REQUEST __einfo_error ( EINFO_EINVAL_CRYPTO_REQUEST )
37 #define EINFO_EINVAL_CRYPTO_REQUEST __einfo_uniqify \
38         ( EINFO_EINVAL, 0x06, "Packet decryption error" )
39 #define EINVAL_ACTIVE_SCAN __einfo_error ( EINFO_EINVAL_ACTIVE_SCAN )
40 #define EINFO_EINVAL_ACTIVE_SCAN __einfo_uniqify \
41         ( EINFO_EINVAL, 0x07, "Invalid active scan requested" )
42
43 /*
44  * 802.11 error codes: The AP can give us a status code explaining why
45  * authentication failed, or a reason code explaining why we were
46  * deauthenticated/disassociated. These codes range from 0-63 (the
47  * field is 16 bits wide, but only up to 45 or so are defined yet; we
48  * allow up to 63 for extensibility). This is encoded into an error
49  * code as such:
50  *
51  *                                      status & 0x1f goes here --vv--
52  *   Status code 0-31:  ECONNREFUSED | EUNIQ_(status & 0x1f) (0e1a6038)
53  *   Status code 32-63: EHOSTUNREACH | EUNIQ_(status & 0x1f) (171a6011)
54  *   Reason code 0-31:  ECONNRESET | EUNIQ_(reason & 0x1f)   (0f1a6039)
55  *   Reason code 32-63: ENETRESET | EUNIQ_(reason & 0x1f)    (271a6001)
56  *
57  * The POSIX error codes more or less convey the appropriate message
58  * (status codes occur when we can't associate at all, reason codes
59  * when we lose association unexpectedly) and let us extract the
60  * complete 802.11 error code from the rc value.
61  *
62  * The error messages follow the 802.11 standard as much as is
63  * feasible, but most have been abbreviated to fit the 50-character
64  * limit imposed by strerror().
65  */
66
67 /* 802.11 status codes (IEEE Std 802.11-2007, Table 7-23) */
68
69 #define ECONNREFUSED_FAILURE __einfo_error                              \
70         ( EINFO_ECONNREFUSED_FAILURE )
71 #define EINFO_ECONNREFUSED_FAILURE __einfo_uniqify                      \
72         ( EINFO_ECONNREFUSED,                                           \
73           ( IEEE80211_STATUS_FAILURE & 0x1f ),                          \
74           "Unspecified failure" )
75
76 #define ECONNREFUSED_CAPAB_UNSUPP __einfo_error                         \
77         ( EINFO_ECONNREFUSED_CAPAB_UNSUPP )
78 #define EINFO_ECONNREFUSED_CAPAB_UNSUPP __einfo_uniqify                 \
79         ( EINFO_ECONNREFUSED,                                           \
80           ( IEEE80211_STATUS_CAPAB_UNSUPP & 0x1f ),                     \
81           "Cannot support all requested capabilities" )
82
83 #define ECONNREFUSED_REASSOC_INVALID __einfo_error                      \
84         ( EINFO_ECONNREFUSED_REASSOC_INVALID )
85 #define EINFO_ECONNREFUSED_REASSOC_INVALID __einfo_uniqify              \
86         ( EINFO_ECONNREFUSED,                                           \
87           ( IEEE80211_STATUS_REASSOC_INVALID & 0x1f ),                  \
88           "Reassociation denied due to lack of association" )
89
90 #define ECONNREFUSED_ASSOC_DENIED __einfo_error                         \
91         ( EINFO_ECONNREFUSED_ASSOC_DENIED )
92 #define EINFO_ECONNREFUSED_ASSOC_DENIED __einfo_uniqify                 \
93         ( EINFO_ECONNREFUSED,                                           \
94           ( IEEE80211_STATUS_ASSOC_DENIED & 0x1f ),                     \
95           "Association denied for another reason" )
96
97 #define ECONNREFUSED_AUTH_ALGO_UNSUPP __einfo_error                     \
98         ( EINFO_ECONNREFUSED_AUTH_ALGO_UNSUPP )
99 #define EINFO_ECONNREFUSED_AUTH_ALGO_UNSUPP __einfo_uniqify             \
100         ( EINFO_ECONNREFUSED,                                           \
101           ( IEEE80211_STATUS_AUTH_ALGO_UNSUPP & 0x1f ),                 \
102           "Authentication algorithm unsupported" )
103
104 #define ECONNREFUSED_AUTH_SEQ_INVALID __einfo_error                     \
105         ( EINFO_ECONNREFUSED_AUTH_SEQ_INVALID )
106 #define EINFO_ECONNREFUSED_AUTH_SEQ_INVALID __einfo_uniqify             \
107         ( EINFO_ECONNREFUSED,                                           \
108           ( IEEE80211_STATUS_AUTH_SEQ_INVALID & 0x1f ),                 \
109           "Authentication sequence number unexpected" )
110
111 #define ECONNREFUSED_AUTH_CHALL_INVALID __einfo_error                   \
112         ( EINFO_ECONNREFUSED_AUTH_CHALL_INVALID )
113 #define EINFO_ECONNREFUSED_AUTH_CHALL_INVALID __einfo_uniqify           \
114         ( EINFO_ECONNREFUSED,                                   \
115           ( IEEE80211_STATUS_AUTH_CHALL_INVALID & 0x1f ),               \
116           "Authentication rejected due to challenge failure" )
117
118 #define ECONNREFUSED_AUTH_TIMEOUT __einfo_error                         \
119         ( EINFO_ECONNREFUSED_AUTH_TIMEOUT )
120 #define EINFO_ECONNREFUSED_AUTH_TIMEOUT __einfo_uniqify                 \
121         ( EINFO_ECONNREFUSED,                                           \
122           ( IEEE80211_STATUS_AUTH_TIMEOUT & 0x1f ),                     \
123           "Authentication rejected due to timeout" )
124
125 #define ECONNREFUSED_ASSOC_NO_ROOM __einfo_error                        \
126         ( EINFO_ECONNREFUSED_ASSOC_NO_ROOM )
127 #define EINFO_ECONNREFUSED_ASSOC_NO_ROOM __einfo_uniqify                \
128         ( EINFO_ECONNREFUSED,                                           \
129           ( IEEE80211_STATUS_ASSOC_NO_ROOM & 0x1f ),                    \
130           "Association denied because AP is out of resources" )
131
132 #define ECONNREFUSED_ASSOC_NEED_RATE __einfo_error                      \
133         ( EINFO_ECONNREFUSED_ASSOC_NEED_RATE )
134 #define EINFO_ECONNREFUSED_ASSOC_NEED_RATE __einfo_uniqify              \
135         ( EINFO_ECONNREFUSED,                                           \
136           ( IEEE80211_STATUS_ASSOC_NEED_RATE & 0x1f ),                  \
137           "Association denied; basic rate support required" )
138
139 #define ECONNREFUSED_ASSOC_NEED_SHORT_PMBL __einfo_error                \
140         ( EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_PMBL )
141 #define EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_PMBL __einfo_uniqify        \
142         ( EINFO_ECONNREFUSED,                                           \
143           ( IEEE80211_STATUS_ASSOC_NEED_SHORT_PMBL & 0x1f ),            \
144           "Association denied; short preamble support req'd" )
145
146 #define ECONNREFUSED_ASSOC_NEED_PBCC __einfo_error                      \
147         ( EINFO_ECONNREFUSED_ASSOC_NEED_PBCC )
148 #define EINFO_ECONNREFUSED_ASSOC_NEED_PBCC __einfo_uniqify              \
149         ( EINFO_ECONNREFUSED,                                           \
150           ( IEEE80211_STATUS_ASSOC_NEED_PBCC & 0x1f ),                  \
151           "Association denied; PBCC modulation support req'd" )
152
153 #define ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY __einfo_error              \
154         ( EINFO_ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY )
155 #define EINFO_ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY __einfo_uniqify      \
156         ( EINFO_ECONNREFUSED,                                           \
157           ( IEEE80211_STATUS_ASSOC_NEED_CHAN_AGILITY & 0x1f ),          \
158           "Association denied; Channel Agility support req'd" )
159
160 #define ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT __einfo_error             \
161         ( EINFO_ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT )
162 #define EINFO_ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT __einfo_uniqify     \
163         ( EINFO_ECONNREFUSED,                                           \
164           ( IEEE80211_STATUS_ASSOC_NEED_SPECTRUM_MGMT & 0x1f ),         \
165           "Association denied; Spectrum Management required" )
166
167 #define ECONNREFUSED_ASSOC_BAD_POWER __einfo_error                      \
168         ( EINFO_ECONNREFUSED_ASSOC_BAD_POWER )
169 #define EINFO_ECONNREFUSED_ASSOC_BAD_POWER __einfo_uniqify              \
170         ( EINFO_ECONNREFUSED,                                           \
171           ( IEEE80211_STATUS_ASSOC_BAD_POWER & 0x1f ),                  \
172           "Association denied; Power Capability unacceptable" )
173
174 #define ECONNREFUSED_ASSOC_BAD_CHANNELS __einfo_error                   \
175         ( EINFO_ECONNREFUSED_ASSOC_BAD_CHANNELS )
176 #define EINFO_ECONNREFUSED_ASSOC_BAD_CHANNELS __einfo_uniqify           \
177         ( EINFO_ECONNREFUSED,                                           \
178           ( IEEE80211_STATUS_ASSOC_BAD_CHANNELS & 0x1f ),               \
179           "Association denied; Supported Channels unacceptable" )
180
181 #define ECONNREFUSED_ASSOC_NEED_SHORT_SLOT __einfo_error                \
182         ( EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_SLOT )
183 #define EINFO_ECONNREFUSED_ASSOC_NEED_SHORT_SLOT __einfo_uniqify        \
184         ( EINFO_ECONNREFUSED,                                           \
185           ( IEEE80211_STATUS_ASSOC_NEED_SHORT_SLOT & 0x1f ),            \
186           "Association denied; Short Slot Tume support req'd" )
187
188 #define ECONNREFUSED_ASSOC_NEED_DSSS_OFDM __einfo_error                 \
189         ( EINFO_ECONNREFUSED_ASSOC_NEED_DSSS_OFDM )
190 #define EINFO_ECONNREFUSED_ASSOC_NEED_DSSS_OFDM __einfo_uniqify         \
191         ( EINFO_ECONNREFUSED,                                           \
192           ( IEEE80211_STATUS_ASSOC_NEED_DSSS_OFDM & 0x1f ),             \
193           "Association denied; DSSS-OFDM support required" )
194
195 #define EHOSTUNREACH_QOS_FAILURE __einfo_error                          \
196         ( EINFO_EHOSTUNREACH_QOS_FAILURE )
197 #define EINFO_EHOSTUNREACH_QOS_FAILURE __einfo_uniqify                  \
198         ( EINFO_EHOSTUNREACH,                                           \
199           ( IEEE80211_STATUS_QOS_FAILURE & 0x1f ),                      \
200           "Unspecified, QoS-related failure" )
201
202 #define EHOSTUNREACH_QOS_NO_ROOM __einfo_error                          \
203         ( EINFO_EHOSTUNREACH_QOS_NO_ROOM )
204 #define EINFO_EHOSTUNREACH_QOS_NO_ROOM __einfo_uniqify                  \
205         ( EINFO_EHOSTUNREACH,                                           \
206           ( IEEE80211_STATUS_QOS_NO_ROOM & 0x1f ),                      \
207           "Association denied; QoS AP out of QoS resources" )
208
209 #define EHOSTUNREACH_LINK_IS_HORRIBLE __einfo_error                     \
210         ( EINFO_EHOSTUNREACH_LINK_IS_HORRIBLE )
211 #define EINFO_EHOSTUNREACH_LINK_IS_HORRIBLE __einfo_uniqify             \
212         ( EINFO_EHOSTUNREACH,                                           \
213           ( IEEE80211_STATUS_LINK_IS_HORRIBLE & 0x1f ),                 \
214           "Association denied due to excessively poor link" )
215
216 #define EHOSTUNREACH_ASSOC_NEED_QOS __einfo_error                       \
217         ( EINFO_EHOSTUNREACH_ASSOC_NEED_QOS )
218 #define EINFO_EHOSTUNREACH_ASSOC_NEED_QOS __einfo_uniqify               \
219         ( EINFO_EHOSTUNREACH,                                           \
220           ( IEEE80211_STATUS_ASSOC_NEED_QOS & 0x1f ),                   \
221           "Association denied; QoS support required" )
222
223 #define EHOSTUNREACH_REQUEST_DECLINED __einfo_error                     \
224         ( EINFO_EHOSTUNREACH_REQUEST_DECLINED )
225 #define EINFO_EHOSTUNREACH_REQUEST_DECLINED __einfo_uniqify             \
226         ( EINFO_EHOSTUNREACH,                                           \
227           ( IEEE80211_STATUS_REQUEST_DECLINED & 0x1f ),                 \
228           "The request has been declined" )
229
230 #define EHOSTUNREACH_REQUEST_INVALID __einfo_error                      \
231         ( EINFO_EHOSTUNREACH_REQUEST_INVALID )
232 #define EINFO_EHOSTUNREACH_REQUEST_INVALID __einfo_uniqify              \
233         ( EINFO_EHOSTUNREACH,                                           \
234           ( IEEE80211_STATUS_REQUEST_INVALID & 0x1f ),                  \
235           "Request unsuccessful due to invalid parameters" )
236
237 #define EHOSTUNREACH_TS_NOT_CREATED_AGAIN __einfo_error                 \
238         ( EINFO_EHOSTUNREACH_TS_NOT_CREATED_AGAIN )
239 #define EINFO_EHOSTUNREACH_TS_NOT_CREATED_AGAIN __einfo_uniqify         \
240         ( EINFO_EHOSTUNREACH,                                           \
241           ( IEEE80211_STATUS_TS_NOT_CREATED_AGAIN & 0x1f ),             \
242           "TS not created due to bad specification" )
243
244 #define EHOSTUNREACH_INVALID_IE __einfo_error                           \
245         ( EINFO_EHOSTUNREACH_INVALID_IE )
246 #define EINFO_EHOSTUNREACH_INVALID_IE __einfo_uniqify                   \
247         ( EINFO_EHOSTUNREACH,                                           \
248           ( IEEE80211_STATUS_INVALID_IE & 0x1f ),                       \
249           "Invalid information element" )
250
251 #define EHOSTUNREACH_GROUP_CIPHER_INVALID __einfo_error                 \
252         ( EINFO_EHOSTUNREACH_GROUP_CIPHER_INVALID )
253 #define EINFO_EHOSTUNREACH_GROUP_CIPHER_INVALID __einfo_uniqify         \
254         ( EINFO_EHOSTUNREACH,                                           \
255           ( IEEE80211_STATUS_GROUP_CIPHER_INVALID & 0x1f ),             \
256           "Invalid group cipher" )
257
258 #define EHOSTUNREACH_PAIR_CIPHER_INVALID __einfo_error                  \
259         ( EINFO_EHOSTUNREACH_PAIR_CIPHER_INVALID )
260 #define EINFO_EHOSTUNREACH_PAIR_CIPHER_INVALID __einfo_uniqify          \
261         ( EINFO_EHOSTUNREACH,                                           \
262           ( IEEE80211_STATUS_PAIR_CIPHER_INVALID & 0x1f ),              \
263           "Invalid pairwise cipher" )
264
265 #define EHOSTUNREACH_AKMP_INVALID __einfo_error                         \
266         ( EINFO_EHOSTUNREACH_AKMP_INVALID )
267 #define EINFO_EHOSTUNREACH_AKMP_INVALID __einfo_uniqify                 \
268         ( EINFO_EHOSTUNREACH,                                           \
269           ( IEEE80211_STATUS_AKMP_INVALID & 0x1f ),                     \
270           "Invalid AKMP" )
271
272 #define EHOSTUNREACH_RSN_VERSION_UNSUPP __einfo_error                   \
273         ( EINFO_EHOSTUNREACH_RSN_VERSION_UNSUPP )
274 #define EINFO_EHOSTUNREACH_RSN_VERSION_UNSUPP __einfo_uniqify           \
275         ( EINFO_EHOSTUNREACH,                                           \
276           ( IEEE80211_STATUS_RSN_VERSION_UNSUPP & 0x1f ),               \
277           "Unsupported RSN information element version" )
278
279 #define EHOSTUNREACH_RSN_CAPAB_INVALID __einfo_error                    \
280         ( EINFO_EHOSTUNREACH_RSN_CAPAB_INVALID )
281 #define EINFO_EHOSTUNREACH_RSN_CAPAB_INVALID __einfo_uniqify            \
282         ( EINFO_EHOSTUNREACH,                                           \
283           ( IEEE80211_STATUS_RSN_CAPAB_INVALID & 0x1f ),                \
284           "Invalid RSN information element capabilities" )
285
286 #define EHOSTUNREACH_CIPHER_REJECTED __einfo_error                      \
287         ( EINFO_EHOSTUNREACH_CIPHER_REJECTED )
288 #define EINFO_EHOSTUNREACH_CIPHER_REJECTED __einfo_uniqify              \
289         ( EINFO_EHOSTUNREACH,                                           \
290           ( IEEE80211_STATUS_CIPHER_REJECTED & 0x1f ),                  \
291           "Cipher suite rejected because of security policy" )
292
293 #define EHOSTUNREACH_TS_NOT_CREATED_WAIT __einfo_error                  \
294         ( EINFO_EHOSTUNREACH_TS_NOT_CREATED_WAIT )
295 #define EINFO_EHOSTUNREACH_TS_NOT_CREATED_WAIT __einfo_uniqify          \
296         ( EINFO_EHOSTUNREACH,                                           \
297           ( IEEE80211_STATUS_TS_NOT_CREATED_WAIT & 0x1f ),              \
298           "TS not created due to insufficient delay" )
299
300 #define EHOSTUNREACH_DIRECT_LINK_FORBIDDEN __einfo_error                \
301         ( EINFO_EHOSTUNREACH_DIRECT_LINK_FORBIDDEN )
302 #define EINFO_EHOSTUNREACH_DIRECT_LINK_FORBIDDEN __einfo_uniqify        \
303         ( EINFO_EHOSTUNREACH,                                           \
304           ( IEEE80211_STATUS_DIRECT_LINK_FORBIDDEN & 0x1f ),            \
305           "Direct link is not allowed in the BSS by policy" )
306
307 #define EHOSTUNREACH_DEST_NOT_PRESENT __einfo_error                     \
308         ( EINFO_EHOSTUNREACH_DEST_NOT_PRESENT )
309 #define EINFO_EHOSTUNREACH_DEST_NOT_PRESENT __einfo_uniqify             \
310         ( EINFO_EHOSTUNREACH,                                           \
311           ( IEEE80211_STATUS_DEST_NOT_PRESENT & 0x1f ),                 \
312           "The Destination STA is not present within the BSS" )
313
314 #define EHOSTUNREACH_DEST_NOT_QOS __einfo_error                         \
315         ( EINFO_EHOSTUNREACH_DEST_NOT_QOS )
316 #define EINFO_EHOSTUNREACH_DEST_NOT_QOS __einfo_uniqify                 \
317         ( EINFO_EHOSTUNREACH,                                           \
318           ( IEEE80211_STATUS_DEST_NOT_QOS & 0x1f ),                     \
319           "The Destination STA is not a QoS STA" )
320
321 #define EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH __einfo_error                \
322         ( EINFO_EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH )
323 #define EINFO_EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH __einfo_uniqify        \
324         ( EINFO_EHOSTUNREACH,                                           \
325           ( IEEE80211_STATUS_ASSOC_LISTEN_TOO_HIGH & 0x1f ),            \
326           "Association denied; Listen Interval is too large" )
327
328 /* 802.11 reason codes (IEEE Std 802.11-2007, Table 7-22) */
329
330 #define ECONNRESET_UNSPECIFIED __einfo_error                            \
331         ( EINFO_ECONNRESET_UNSPECIFIED )
332 #define EINFO_ECONNRESET_UNSPECIFIED __einfo_uniqify                    \
333         ( EINFO_ECONNRESET,                                             \
334           ( IEEE80211_REASON_UNSPECIFIED & 0x1f ),                      \
335           "Unspecified reason" )
336
337 #define ECONNRESET_AUTH_NO_LONGER_VALID __einfo_error                   \
338         ( EINFO_ECONNRESET_AUTH_NO_LONGER_VALID )
339 #define EINFO_ECONNRESET_AUTH_NO_LONGER_VALID __einfo_uniqify           \
340         ( EINFO_ECONNRESET,                                             \
341           ( IEEE80211_REASON_AUTH_NO_LONGER_VALID & 0x1f ),             \
342           "Previous authentication no longer valid" )
343
344 #define ECONNRESET_LEAVING __einfo_error                                \
345         ( EINFO_ECONNRESET_LEAVING )
346 #define EINFO_ECONNRESET_LEAVING __einfo_uniqify                        \
347         ( EINFO_ECONNRESET,                                             \
348           ( IEEE80211_REASON_LEAVING & 0x1f ),                          \
349           "Deauthenticated due to leaving network" )
350
351 #define ECONNRESET_INACTIVITY __einfo_error                             \
352         ( EINFO_ECONNRESET_INACTIVITY )
353 #define EINFO_ECONNRESET_INACTIVITY __einfo_uniqify                     \
354         ( EINFO_ECONNRESET,                                             \
355           ( IEEE80211_REASON_INACTIVITY & 0x1f ),                       \
356           "Disassociated due to inactivity" )
357
358 #define ECONNRESET_OUT_OF_RESOURCES __einfo_error                       \
359         ( EINFO_ECONNRESET_OUT_OF_RESOURCES )
360 #define EINFO_ECONNRESET_OUT_OF_RESOURCES __einfo_uniqify               \
361         ( EINFO_ECONNRESET,                                             \
362           ( IEEE80211_REASON_OUT_OF_RESOURCES & 0x1f ),                 \
363           "Disassociated because AP is out of resources" )
364
365 #define ECONNRESET_NEED_AUTH __einfo_error                              \
366         ( EINFO_ECONNRESET_NEED_AUTH )
367 #define EINFO_ECONNRESET_NEED_AUTH __einfo_uniqify                      \
368         ( EINFO_ECONNRESET,                                             \
369           ( IEEE80211_REASON_NEED_AUTH & 0x1f ),                        \
370           "Class 2 frame received from nonauthenticated STA" )
371
372 #define ECONNRESET_NEED_ASSOC __einfo_error                             \
373         ( EINFO_ECONNRESET_NEED_ASSOC )
374 #define EINFO_ECONNRESET_NEED_ASSOC __einfo_uniqify                     \
375         ( EINFO_ECONNRESET,                                             \
376           ( IEEE80211_REASON_NEED_ASSOC & 0x1f ),                       \
377           "Class 3 frame received from nonassociated STA" )
378
379 #define ECONNRESET_LEAVING_TO_ROAM __einfo_error                        \
380         ( EINFO_ECONNRESET_LEAVING_TO_ROAM )
381 #define EINFO_ECONNRESET_LEAVING_TO_ROAM __einfo_uniqify                \
382         ( EINFO_ECONNRESET,                                             \
383           ( IEEE80211_REASON_LEAVING_TO_ROAM & 0x1f ),                  \
384           "Disassociated due to roaming" )
385
386 #define ECONNRESET_REASSOC_INVALID __einfo_error                        \
387         ( EINFO_ECONNRESET_REASSOC_INVALID )
388 #define EINFO_ECONNRESET_REASSOC_INVALID __einfo_uniqify                \
389         ( EINFO_ECONNRESET,                                             \
390           ( IEEE80211_REASON_REASSOC_INVALID & 0x1f ),                  \
391           "STA requesting (re)association not authenticated" )
392
393 #define ECONNRESET_BAD_POWER __einfo_error                              \
394         ( EINFO_ECONNRESET_BAD_POWER )
395 #define EINFO_ECONNRESET_BAD_POWER __einfo_uniqify                      \
396         ( EINFO_ECONNRESET,                                             \
397           ( IEEE80211_REASON_BAD_POWER & 0x1f ),                        \
398           "Disassociated; Power Capability unacceptable" )
399
400 #define ECONNRESET_BAD_CHANNELS __einfo_error                           \
401         ( EINFO_ECONNRESET_BAD_CHANNELS )
402 #define EINFO_ECONNRESET_BAD_CHANNELS __einfo_uniqify                   \
403         ( EINFO_ECONNRESET,                                             \
404           ( IEEE80211_REASON_BAD_CHANNELS & 0x1f ),                     \
405           "Disassociated; Supported Channels unacceptable" )
406
407 #define ECONNRESET_INVALID_IE __einfo_error                             \
408         ( EINFO_ECONNRESET_INVALID_IE )
409 #define EINFO_ECONNRESET_INVALID_IE __einfo_uniqify                     \
410         ( EINFO_ECONNRESET,                                             \
411           ( IEEE80211_REASON_INVALID_IE & 0x1f ),                       \
412           "Invalid information element" )
413
414 #define ECONNRESET_MIC_FAILURE __einfo_error                            \
415         ( EINFO_ECONNRESET_MIC_FAILURE )
416 #define EINFO_ECONNRESET_MIC_FAILURE __einfo_uniqify                    \
417         ( EINFO_ECONNRESET,                                             \
418           ( IEEE80211_REASON_MIC_FAILURE & 0x1f ),                      \
419           "Message integrity code (MIC) failure" )
420
421 #define ECONNRESET_4WAY_TIMEOUT __einfo_error                           \
422         ( EINFO_ECONNRESET_4WAY_TIMEOUT )
423 #define EINFO_ECONNRESET_4WAY_TIMEOUT __einfo_uniqify                   \
424         ( EINFO_ECONNRESET,                                             \
425           ( IEEE80211_REASON_4WAY_TIMEOUT & 0x1f ),                     \
426           "4-Way Handshake timeout" )
427
428 #define ECONNRESET_GROUPKEY_TIMEOUT __einfo_error                       \
429         ( EINFO_ECONNRESET_GROUPKEY_TIMEOUT )
430 #define EINFO_ECONNRESET_GROUPKEY_TIMEOUT __einfo_uniqify               \
431         ( EINFO_ECONNRESET,                                             \
432           ( IEEE80211_REASON_GROUPKEY_TIMEOUT & 0x1f ),                 \
433           "Group Key Handshake timeout" )
434
435 #define ECONNRESET_4WAY_INVALID __einfo_error                           \
436         ( EINFO_ECONNRESET_4WAY_INVALID )
437 #define EINFO_ECONNRESET_4WAY_INVALID __einfo_uniqify                   \
438         ( EINFO_ECONNRESET,                                             \
439           ( IEEE80211_REASON_4WAY_INVALID & 0x1f ),                     \
440           "4-Way Handshake information element changed unduly" )
441
442 #define ECONNRESET_GROUP_CIPHER_INVALID __einfo_error                   \
443         ( EINFO_ECONNRESET_GROUP_CIPHER_INVALID )
444 #define EINFO_ECONNRESET_GROUP_CIPHER_INVALID __einfo_uniqify           \
445         ( EINFO_ECONNRESET,                                             \
446           ( IEEE80211_REASON_GROUP_CIPHER_INVALID & 0x1f ),             \
447           "Invalid group cipher" )
448
449 #define ECONNRESET_PAIR_CIPHER_INVALID __einfo_error                    \
450         ( EINFO_ECONNRESET_PAIR_CIPHER_INVALID )
451 #define EINFO_ECONNRESET_PAIR_CIPHER_INVALID __einfo_uniqify            \
452         ( EINFO_ECONNRESET,                                             \
453           ( IEEE80211_REASON_PAIR_CIPHER_INVALID & 0x1f ),              \
454           "Invalid pairwise cipher" )
455
456 #define ECONNRESET_AKMP_INVALID __einfo_error                           \
457         ( EINFO_ECONNRESET_AKMP_INVALID )
458 #define EINFO_ECONNRESET_AKMP_INVALID __einfo_uniqify                   \
459         ( EINFO_ECONNRESET,                                             \
460           ( IEEE80211_REASON_AKMP_INVALID & 0x1f ),                     \
461           "Invalid AKMP" )
462
463 #define ECONNRESET_RSN_VERSION_INVALID __einfo_error                    \
464         ( EINFO_ECONNRESET_RSN_VERSION_INVALID )
465 #define EINFO_ECONNRESET_RSN_VERSION_INVALID __einfo_uniqify            \
466         ( EINFO_ECONNRESET,                                             \
467           ( IEEE80211_REASON_RSN_VERSION_INVALID & 0x1f ),              \
468           "Unsupported RSN information element version" )
469
470 #define ECONNRESET_RSN_CAPAB_INVALID __einfo_error                      \
471         ( EINFO_ECONNRESET_RSN_CAPAB_INVALID )
472 #define EINFO_ECONNRESET_RSN_CAPAB_INVALID __einfo_uniqify              \
473         ( EINFO_ECONNRESET,                                             \
474           ( IEEE80211_REASON_RSN_CAPAB_INVALID & 0x1f ),                \
475           "Invalid RSN information element capabilities" )
476
477 #define ECONNRESET_8021X_FAILURE __einfo_error                          \
478         ( EINFO_ECONNRESET_8021X_FAILURE )
479 #define EINFO_ECONNRESET_8021X_FAILURE __einfo_uniqify                  \
480         ( EINFO_ECONNRESET,                                             \
481           ( IEEE80211_REASON_8021X_FAILURE & 0x1f ),                    \
482           "IEEE 802.1X authentication failed" )
483
484 #define ECONNRESET_CIPHER_REJECTED __einfo_error                        \
485         ( EINFO_ECONNRESET_CIPHER_REJECTED )
486 #define EINFO_ECONNRESET_CIPHER_REJECTED __einfo_uniqify                \
487         ( EINFO_ECONNRESET,                                             \
488           ( IEEE80211_REASON_CIPHER_REJECTED & 0x1f ),                  \
489           "Cipher suite rejected because of security policy" )
490
491 #define ENETRESET_QOS_UNSPECIFIED __einfo_error                         \
492         ( EINFO_ENETRESET_QOS_UNSPECIFIED )
493 #define EINFO_ENETRESET_QOS_UNSPECIFIED __einfo_uniqify                 \
494         ( EINFO_ENETRESET,                                              \
495           ( IEEE80211_REASON_QOS_UNSPECIFIED & 0x1f ),                  \
496           "Disassociated for unspecified, QoS-related reason" )
497
498 #define ENETRESET_QOS_OUT_OF_RESOURCES __einfo_error                    \
499         ( EINFO_ENETRESET_QOS_OUT_OF_RESOURCES )
500 #define EINFO_ENETRESET_QOS_OUT_OF_RESOURCES __einfo_uniqify            \
501         ( EINFO_ENETRESET,                                              \
502           ( IEEE80211_REASON_QOS_OUT_OF_RESOURCES & 0x1f ),             \
503           "Disassociated; QoS AP is out of QoS resources" )
504
505 #define ENETRESET_LINK_IS_HORRIBLE __einfo_error                        \
506         ( EINFO_ENETRESET_LINK_IS_HORRIBLE )
507 #define EINFO_ENETRESET_LINK_IS_HORRIBLE __einfo_uniqify                \
508         ( EINFO_ENETRESET,                                              \
509           ( IEEE80211_REASON_LINK_IS_HORRIBLE & 0x1f ),                 \
510           "Disassociated due to excessively poor link" )
511
512 #define ENETRESET_INVALID_TXOP __einfo_error                            \
513         ( EINFO_ENETRESET_INVALID_TXOP )
514 #define EINFO_ENETRESET_INVALID_TXOP __einfo_uniqify                    \
515         ( EINFO_ENETRESET,                                              \
516           ( IEEE80211_REASON_INVALID_TXOP & 0x1f ),                     \
517           "Disassociated due to TXOP limit violation" )
518
519 #define ENETRESET_REQUESTED_LEAVING __einfo_error                       \
520         ( EINFO_ENETRESET_REQUESTED_LEAVING )
521 #define EINFO_ENETRESET_REQUESTED_LEAVING __einfo_uniqify               \
522         ( EINFO_ENETRESET,                                              \
523           ( IEEE80211_REASON_REQUESTED_LEAVING & 0x1f ),                \
524           "Requested; STA is leaving the BSS (or resetting)" )
525
526 #define ENETRESET_REQUESTED_NO_USE __einfo_error                        \
527         ( EINFO_ENETRESET_REQUESTED_NO_USE )
528 #define EINFO_ENETRESET_REQUESTED_NO_USE __einfo_uniqify                \
529         ( EINFO_ENETRESET,                                              \
530           ( IEEE80211_REASON_REQUESTED_NO_USE & 0x1f ),                 \
531           "Requested; does not want to use the mechanism" )
532
533 #define ENETRESET_REQUESTED_NEED_SETUP __einfo_error                    \
534         ( EINFO_ENETRESET_REQUESTED_NEED_SETUP )
535 #define EINFO_ENETRESET_REQUESTED_NEED_SETUP __einfo_uniqify            \
536         ( EINFO_ENETRESET,                                              \
537           ( IEEE80211_REASON_REQUESTED_NEED_SETUP & 0x1f ),             \
538           "Requested; setup is required" )
539
540 #define ENETRESET_REQUESTED_TIMEOUT __einfo_error                       \
541         ( EINFO_ENETRESET_REQUESTED_TIMEOUT )
542 #define EINFO_ENETRESET_REQUESTED_TIMEOUT __einfo_uniqify               \
543         ( EINFO_ENETRESET,                                              \
544           ( IEEE80211_REASON_REQUESTED_TIMEOUT & 0x1f ),                \
545           "Requested from peer STA due to timeout" )
546
547 #define ENETRESET_CIPHER_UNSUPPORTED __einfo_error                      \
548         ( EINFO_ENETRESET_CIPHER_UNSUPPORTED )
549 #define EINFO_ENETRESET_CIPHER_UNSUPPORTED __einfo_uniqify              \
550         ( EINFO_ENETRESET,                                              \
551           ( IEEE80211_REASON_CIPHER_UNSUPPORTED & 0x1f ),               \
552           "Peer STA does not support requested cipher suite" )
553
554 /** Make return status code from 802.11 status code */
555 #define E80211_STATUS( stat )                                           \
556         ( ( (stat) & 0x20 ) ?                                           \
557           EUNIQ ( EINFO_EHOSTUNREACH, ( (stat) & 0x1f ),                \
558                   EHOSTUNREACH_QOS_FAILURE,                             \
559                   EHOSTUNREACH_QOS_NO_ROOM,                             \
560                   EHOSTUNREACH_LINK_IS_HORRIBLE,                        \
561                   EHOSTUNREACH_ASSOC_NEED_QOS,                          \
562                   EHOSTUNREACH_REQUEST_DECLINED,                        \
563                   EHOSTUNREACH_REQUEST_INVALID,                         \
564                   EHOSTUNREACH_TS_NOT_CREATED_AGAIN,                    \
565                   EHOSTUNREACH_INVALID_IE,                              \
566                   EHOSTUNREACH_GROUP_CIPHER_INVALID,                    \
567                   EHOSTUNREACH_PAIR_CIPHER_INVALID,                     \
568                   EHOSTUNREACH_AKMP_INVALID,                            \
569                   EHOSTUNREACH_RSN_VERSION_UNSUPP,                      \
570                   EHOSTUNREACH_RSN_CAPAB_INVALID,                       \
571                   EHOSTUNREACH_CIPHER_REJECTED,                         \
572                   EHOSTUNREACH_TS_NOT_CREATED_WAIT,                     \
573                   EHOSTUNREACH_DIRECT_LINK_FORBIDDEN,                   \
574                   EHOSTUNREACH_DEST_NOT_PRESENT,                        \
575                   EHOSTUNREACH_DEST_NOT_QOS,                            \
576                   EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH ) :                \
577           EUNIQ ( EINFO_ECONNREFUSED, ( (stat) & 0x1f ),                \
578                   ECONNREFUSED_FAILURE,                                 \
579                   ECONNREFUSED_CAPAB_UNSUPP,                            \
580                   ECONNREFUSED_REASSOC_INVALID,                         \
581                   ECONNREFUSED_ASSOC_DENIED,                            \
582                   ECONNREFUSED_AUTH_ALGO_UNSUPP,                        \
583                   ECONNREFUSED_AUTH_SEQ_INVALID,                        \
584                   ECONNREFUSED_AUTH_CHALL_INVALID,                      \
585                   ECONNREFUSED_AUTH_TIMEOUT,                            \
586                   ECONNREFUSED_ASSOC_NO_ROOM,                           \
587                   ECONNREFUSED_ASSOC_NEED_RATE,                         \
588                   ECONNREFUSED_ASSOC_NEED_SHORT_PMBL,                   \
589                   ECONNREFUSED_ASSOC_NEED_PBCC,                         \
590                   ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY,                 \
591                   ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT,                \
592                   ECONNREFUSED_ASSOC_BAD_POWER,                         \
593                   ECONNREFUSED_ASSOC_BAD_CHANNELS,                      \
594                   ECONNREFUSED_ASSOC_NEED_SHORT_SLOT,                   \
595                   ECONNREFUSED_ASSOC_NEED_DSSS_OFDM ) )
596
597 /** Make return status code from 802.11 reason code */
598 #define E80211_REASON( reas )                                           \
599         ( ( (reas) & 0x20 ) ?                                           \
600           EUNIQ ( EINFO_ENETRESET, ( (reas) & 0x1f ),                   \
601                   ENETRESET_QOS_UNSPECIFIED,                            \
602                   ENETRESET_QOS_OUT_OF_RESOURCES,                       \
603                   ENETRESET_LINK_IS_HORRIBLE,                           \
604                   ENETRESET_INVALID_TXOP,                               \
605                   ENETRESET_REQUESTED_LEAVING,                          \
606                   ENETRESET_REQUESTED_NO_USE,                           \
607                   ENETRESET_REQUESTED_NEED_SETUP,                       \
608                   ENETRESET_REQUESTED_TIMEOUT,                          \
609                   ENETRESET_CIPHER_UNSUPPORTED ) :                      \
610           EUNIQ ( EINFO_ECONNRESET, ( (reas) & 0x1f ),                  \
611                   ECONNRESET_UNSPECIFIED,                               \
612                   ECONNRESET_AUTH_NO_LONGER_VALID,                      \
613                   ECONNRESET_LEAVING,                                   \
614                   ECONNRESET_INACTIVITY,                                \
615                   ECONNRESET_OUT_OF_RESOURCES,                          \
616                   ECONNRESET_NEED_AUTH,                                 \
617                   ECONNRESET_NEED_ASSOC,                                \
618                   ECONNRESET_LEAVING_TO_ROAM,                           \
619                   ECONNRESET_REASSOC_INVALID,                           \
620                   ECONNRESET_BAD_POWER,                                 \
621                   ECONNRESET_BAD_CHANNELS,                              \
622                   ECONNRESET_INVALID_IE,                                \
623                   ECONNRESET_MIC_FAILURE,                               \
624                   ECONNRESET_4WAY_TIMEOUT,                              \
625                   ECONNRESET_GROUPKEY_TIMEOUT,                          \
626                   ECONNRESET_4WAY_INVALID,                              \
627                   ECONNRESET_GROUP_CIPHER_INVALID,                      \
628                   ECONNRESET_PAIR_CIPHER_INVALID,                       \
629                   ECONNRESET_AKMP_INVALID,                              \
630                   ECONNRESET_RSN_VERSION_INVALID,                       \
631                   ECONNRESET_RSN_CAPAB_INVALID,                         \
632                   ECONNRESET_8021X_FAILURE,                             \
633                   ECONNRESET_CIPHER_REJECTED ) )
634
635 #endif /* _IPXE_NET80211_ERR_H */