You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

net80211_err.h 25KB

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