1 #ifndef _IPXE_NET80211_ERR_H
2 #define _IPXE_NET80211_ERR_H
5 #include <ipxe/ieee80211.h>
8 * The iPXE 802.11 MAC layer.
10 * Copyright (c) 2009 Joshua Oreman <oremanj@rwcr.net>.
13 FILE_LICENCE ( GPL2_OR_LATER );
17 * The iPXE 802.11 MAC layer errors.
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" )
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
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)
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.
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().
67 /* 802.11 status codes (IEEE Std 802.11-2007, Table 7-23) */
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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 ), \
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
328 /* 802.11 reason codes (IEEE Std 802.11-2007, Table 7-22) */
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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" )
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 ), \
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" )
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" )
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" )
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" )
491 #define ENETRESET_QOS_UNSPECIFIED __einfo_error \
492 ( EINFO_ENETRESET_QOS_UNSPECIFIED )
493 #define EINFO_ENETRESET_QOS_UNSPECIFIED __einfo_uniqify \
495 ( IEEE80211_REASON_QOS_UNSPECIFIED & 0x1f ), \
496 "Disassociated for unspecified, QoS-related reason" )
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 \
502 ( IEEE80211_REASON_QOS_OUT_OF_RESOURCES & 0x1f ), \
503 "Disassociated; QoS AP is out of QoS resources" )
505 #define ENETRESET_LINK_IS_HORRIBLE __einfo_error \
506 ( EINFO_ENETRESET_LINK_IS_HORRIBLE )
507 #define EINFO_ENETRESET_LINK_IS_HORRIBLE __einfo_uniqify \
509 ( IEEE80211_REASON_LINK_IS_HORRIBLE & 0x1f ), \
510 "Disassociated due to excessively poor link" )
512 #define ENETRESET_INVALID_TXOP __einfo_error \
513 ( EINFO_ENETRESET_INVALID_TXOP )
514 #define EINFO_ENETRESET_INVALID_TXOP __einfo_uniqify \
516 ( IEEE80211_REASON_INVALID_TXOP & 0x1f ), \
517 "Disassociated due to TXOP limit violation" )
519 #define ENETRESET_REQUESTED_LEAVING __einfo_error \
520 ( EINFO_ENETRESET_REQUESTED_LEAVING )
521 #define EINFO_ENETRESET_REQUESTED_LEAVING __einfo_uniqify \
523 ( IEEE80211_REASON_REQUESTED_LEAVING & 0x1f ), \
524 "Requested; STA is leaving the BSS (or resetting)" )
526 #define ENETRESET_REQUESTED_NO_USE __einfo_error \
527 ( EINFO_ENETRESET_REQUESTED_NO_USE )
528 #define EINFO_ENETRESET_REQUESTED_NO_USE __einfo_uniqify \
530 ( IEEE80211_REASON_REQUESTED_NO_USE & 0x1f ), \
531 "Requested; does not want to use the mechanism" )
533 #define ENETRESET_REQUESTED_NEED_SETUP __einfo_error \
534 ( EINFO_ENETRESET_REQUESTED_NEED_SETUP )
535 #define EINFO_ENETRESET_REQUESTED_NEED_SETUP __einfo_uniqify \
537 ( IEEE80211_REASON_REQUESTED_NEED_SETUP & 0x1f ), \
538 "Requested; setup is required" )
540 #define ENETRESET_REQUESTED_TIMEOUT __einfo_error \
541 ( EINFO_ENETRESET_REQUESTED_TIMEOUT )
542 #define EINFO_ENETRESET_REQUESTED_TIMEOUT __einfo_uniqify \
544 ( IEEE80211_REASON_REQUESTED_TIMEOUT & 0x1f ), \
545 "Requested from peer STA due to timeout" )
547 #define ENETRESET_CIPHER_UNSUPPORTED __einfo_error \
548 ( EINFO_ENETRESET_CIPHER_UNSUPPORTED )
549 #define EINFO_ENETRESET_CIPHER_UNSUPPORTED __einfo_uniqify \
551 ( IEEE80211_REASON_CIPHER_UNSUPPORTED & 0x1f ), \
552 "Peer STA does not support requested cipher suite" )
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 ) )
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 ) )
635 #endif /* _IPXE_NET80211_ERR_H */