rx_mpdu_end.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. /*
  2. * Copyright (c) 2018 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #ifndef _RX_MPDU_END_H_
  19. #define _RX_MPDU_END_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. // ################ START SUMMARY #################
  23. //
  24. // Dword Fields
  25. // 0 rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], reserved_0[15:9], phy_ppdu_id[31:16]
  26. // 1 reserved_1a[10:0], unsup_ktype_short_frame[11], rx_in_tx_decrypt_byp[12], overflow_err[13], mpdu_length_err[14], tkip_mic_err[15], decrypt_err[16], unencrypted_frame_err[17], pn_fields_contain_valid_info[18], fcs_err[19], msdu_length_err[20], rxdma0_destination_ring[22:21], rxdma1_destination_ring[24:23], decrypt_status_code[27:25], rx_bitmap_not_updated[28], reserved_1b[31:29]
  27. //
  28. // ################ END SUMMARY #################
  29. #define NUM_OF_DWORDS_RX_MPDU_END 2
  30. struct rx_mpdu_end {
  31. uint32_t rxpcu_mpdu_filter_in_category : 2, //[1:0]
  32. sw_frame_group_id : 7, //[8:2]
  33. reserved_0 : 7, //[15:9]
  34. phy_ppdu_id : 16; //[31:16]
  35. uint32_t reserved_1a : 11, //[10:0]
  36. unsup_ktype_short_frame : 1, //[11]
  37. rx_in_tx_decrypt_byp : 1, //[12]
  38. overflow_err : 1, //[13]
  39. mpdu_length_err : 1, //[14]
  40. tkip_mic_err : 1, //[15]
  41. decrypt_err : 1, //[16]
  42. unencrypted_frame_err : 1, //[17]
  43. pn_fields_contain_valid_info : 1, //[18]
  44. fcs_err : 1, //[19]
  45. msdu_length_err : 1, //[20]
  46. rxdma0_destination_ring : 2, //[22:21]
  47. rxdma1_destination_ring : 2, //[24:23]
  48. decrypt_status_code : 3, //[27:25]
  49. rx_bitmap_not_updated : 1, //[28]
  50. reserved_1b : 3; //[31:29]
  51. };
  52. /*
  53. rxpcu_mpdu_filter_in_category
  54. Field indicates what the reason was that this MPDU frame
  55. was allowed to come into the receive path by RXPCU
  56. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  57. frame filter programming of rxpcu
  58. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  59. regular frame filter and would have been dropped, were it
  60. not for the frame fitting into the 'monitor_client'
  61. category.
  62. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  63. regular frame filter and also did not pass the
  64. rxpcu_monitor_client filter. It would have been dropped
  65. accept that it did pass the 'monitor_other' category.
  66. <legal 0-2>
  67. sw_frame_group_id
  68. SW processes frames based on certain classifications.
  69. This field indicates to what sw classification this MPDU is
  70. mapped.
  71. The classification is given in priority order
  72. <enum 0 sw_frame_group_NDP_frame>
  73. <enum 1 sw_frame_group_Multicast_data>
  74. <enum 2 sw_frame_group_Unicast_data>
  75. <enum 3 sw_frame_group_Null_data > This includes mpdus
  76. of type Data Null as well as QoS Data Null
  77. <enum 4 sw_frame_group_mgmt_0000 >
  78. <enum 5 sw_frame_group_mgmt_0001 >
  79. <enum 6 sw_frame_group_mgmt_0010 >
  80. <enum 7 sw_frame_group_mgmt_0011 >
  81. <enum 8 sw_frame_group_mgmt_0100 >
  82. <enum 9 sw_frame_group_mgmt_0101 >
  83. <enum 10 sw_frame_group_mgmt_0110 >
  84. <enum 11 sw_frame_group_mgmt_0111 >
  85. <enum 12 sw_frame_group_mgmt_1000 >
  86. <enum 13 sw_frame_group_mgmt_1001 >
  87. <enum 14 sw_frame_group_mgmt_1010 >
  88. <enum 15 sw_frame_group_mgmt_1011 >
  89. <enum 16 sw_frame_group_mgmt_1100 >
  90. <enum 17 sw_frame_group_mgmt_1101 >
  91. <enum 18 sw_frame_group_mgmt_1110 >
  92. <enum 19 sw_frame_group_mgmt_1111 >
  93. <enum 20 sw_frame_group_ctrl_0000 >
  94. <enum 21 sw_frame_group_ctrl_0001 >
  95. <enum 22 sw_frame_group_ctrl_0010 >
  96. <enum 23 sw_frame_group_ctrl_0011 >
  97. <enum 24 sw_frame_group_ctrl_0100 >
  98. <enum 25 sw_frame_group_ctrl_0101 >
  99. <enum 26 sw_frame_group_ctrl_0110 >
  100. <enum 27 sw_frame_group_ctrl_0111 >
  101. <enum 28 sw_frame_group_ctrl_1000 >
  102. <enum 29 sw_frame_group_ctrl_1001 >
  103. <enum 30 sw_frame_group_ctrl_1010 >
  104. <enum 31 sw_frame_group_ctrl_1011 >
  105. <enum 32 sw_frame_group_ctrl_1100 >
  106. <enum 33 sw_frame_group_ctrl_1101 >
  107. <enum 34 sw_frame_group_ctrl_1110 >
  108. <enum 35 sw_frame_group_ctrl_1111 >
  109. <enum 36 sw_frame_group_unsupported> This covers type 3
  110. and protocol version != 0
  111. <legal 0-37>
  112. reserved_0
  113. <legal 0>
  114. phy_ppdu_id
  115. A ppdu counter value that PHY increments for every PPDU
  116. received. The counter value wraps around
  117. <legal all>
  118. reserved_1a
  119. <legal 0>
  120. unsup_ktype_short_frame
  121. This bit will be '1' when WEP or TKIP or WAPI key type
  122. is received for 11ah short frame. Crypto will bypass the
  123. received packet without decryption to RxOLE after setting
  124. this bit.
  125. rx_in_tx_decrypt_byp
  126. Indicates that RX packet is not decrypted as Crypto is
  127. busy with TX packet processing.
  128. overflow_err
  129. RXPCU Receive FIFO ran out of space to receive the full
  130. MPDU. Therefor this MPDU is terminated early and is thus
  131. corrupted.
  132. This MPDU will not be ACKed.
  133. RXPCU might still be able to correctly receive the
  134. following MPDUs in the PPDU if enough fifo space became
  135. available in time
  136. mpdu_length_err
  137. Set by RXPCU if the expected MPDU length does not
  138. correspond with the actually received number of bytes in the
  139. MPDU.
  140. tkip_mic_err
  141. Set by RX CRYPTO when CRYPTO detected a TKIP MIC error
  142. for this MPDU
  143. decrypt_err
  144. Set by RX CRYPTO when CRYPTO detected a decrypt error
  145. for this MPDU or CRYPTO received an encrypted frame, but did
  146. not get a valid corresponding key id in the peer entry.
  147. unencrypted_frame_err
  148. Set by RX CRYPTO when CRYPTO detected an unencrypted
  149. frame while in the peer entry field
  150. 'All_frames_shall_be_encrypted' is set.
  151. pn_fields_contain_valid_info
  152. Set by RX CRYPTO to indicate that there is a valid PN
  153. field present in this MPDU
  154. fcs_err
  155. Set by RXPCU when there is an FCS error detected for
  156. this MPDU
  157. NOTE that when this field is set, all other (error)
  158. field settings should be ignored as modules could have made
  159. wrong decisions based on the corrupted data.
  160. msdu_length_err
  161. Set by RXOLE when there is an msdu length error detected
  162. in at least 1 of the MSDUs embedded within the MPDU
  163. rxdma0_destination_ring
  164. The ring to which RXDMA0 shall push the frame, assuming
  165. no MPDU level errors are detected. In case of MPDU level
  166. errors, RXDMA0 might change the RXDMA0 destination
  167. <enum 0 rxdma_release_ring > RXDMA0 shall push the
  168. frame to the Release ring. Effectively this means the frame
  169. needs to be dropped.
  170. <enum 1 rxdma2fw_ring > RXDMA0 shall push the frame to
  171. the FW ring
  172. <enum 2 rxdma2sw_ring > RXDMA0 shall push the frame to
  173. the SW ring
  174. <enum 3 rxdma2reo_ring > RXDMA0 shall push the frame
  175. to the REO entrance ring
  176. <legal all>
  177. rxdma1_destination_ring
  178. The ring to which RXDMA1 shall push the frame, assuming
  179. no MPDU level errors are detected. In case of MPDU level
  180. errors, RXDMA1 might change the RXDMA destination
  181. <enum 0 rxdma_release_ring > RXDMA1 shall push the
  182. frame to the Release ring. Effectively this means the frame
  183. needs to be dropped.
  184. <enum 1 rxdma2fw_ring > RXDMA1 shall push the frame to
  185. the FW ring
  186. <enum 2 rxdma2sw_ring > RXDMA1 shall push the frame to
  187. the SW ring
  188. <enum 3 rxdma2reo_ring > RXDMA1 shall push the frame
  189. to the REO entrance ring
  190. <legal all>
  191. decrypt_status_code
  192. Field provides insight into the decryption performed
  193. <enum 0 decrypt_ok> Frame had protection enabled and
  194. decrypted properly
  195. <enum 1 decrypt_unprotected_frame > Frame is unprotected
  196. and hence bypassed
  197. <enum 2 decrypt_data_err > Frame has protection enabled
  198. and could not be properly decrypted due to MIC/ICV mismatch
  199. etc.
  200. <enum 3 decrypt_key_invalid > Frame has protection
  201. enabled but the key that was required to decrypt this frame
  202. was not valid
  203. <enum 4 decrypt_peer_entry_invalid > Frame has
  204. protection enabled but the key that was required to decrypt
  205. this frame was not valid
  206. <enum 5 decrypt_other > Reserved for other indications
  207. <legal 0 - 5>
  208. rx_bitmap_not_updated
  209. Frame is received, but RXPCU could not update the
  210. receive bitmap due to (temporary) fifo contraints.
  211. <legal all>
  212. reserved_1b
  213. <legal 0>
  214. */
  215. /* Description RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY
  216. Field indicates what the reason was that this MPDU frame
  217. was allowed to come into the receive path by RXPCU
  218. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  219. frame filter programming of rxpcu
  220. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  221. regular frame filter and would have been dropped, were it
  222. not for the frame fitting into the 'monitor_client'
  223. category.
  224. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  225. regular frame filter and also did not pass the
  226. rxpcu_monitor_client filter. It would have been dropped
  227. accept that it did pass the 'monitor_other' category.
  228. <legal 0-2>
  229. */
  230. #define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000000
  231. #define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  232. #define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  233. /* Description RX_MPDU_END_0_SW_FRAME_GROUP_ID
  234. SW processes frames based on certain classifications.
  235. This field indicates to what sw classification this MPDU is
  236. mapped.
  237. The classification is given in priority order
  238. <enum 0 sw_frame_group_NDP_frame>
  239. <enum 1 sw_frame_group_Multicast_data>
  240. <enum 2 sw_frame_group_Unicast_data>
  241. <enum 3 sw_frame_group_Null_data > This includes mpdus
  242. of type Data Null as well as QoS Data Null
  243. <enum 4 sw_frame_group_mgmt_0000 >
  244. <enum 5 sw_frame_group_mgmt_0001 >
  245. <enum 6 sw_frame_group_mgmt_0010 >
  246. <enum 7 sw_frame_group_mgmt_0011 >
  247. <enum 8 sw_frame_group_mgmt_0100 >
  248. <enum 9 sw_frame_group_mgmt_0101 >
  249. <enum 10 sw_frame_group_mgmt_0110 >
  250. <enum 11 sw_frame_group_mgmt_0111 >
  251. <enum 12 sw_frame_group_mgmt_1000 >
  252. <enum 13 sw_frame_group_mgmt_1001 >
  253. <enum 14 sw_frame_group_mgmt_1010 >
  254. <enum 15 sw_frame_group_mgmt_1011 >
  255. <enum 16 sw_frame_group_mgmt_1100 >
  256. <enum 17 sw_frame_group_mgmt_1101 >
  257. <enum 18 sw_frame_group_mgmt_1110 >
  258. <enum 19 sw_frame_group_mgmt_1111 >
  259. <enum 20 sw_frame_group_ctrl_0000 >
  260. <enum 21 sw_frame_group_ctrl_0001 >
  261. <enum 22 sw_frame_group_ctrl_0010 >
  262. <enum 23 sw_frame_group_ctrl_0011 >
  263. <enum 24 sw_frame_group_ctrl_0100 >
  264. <enum 25 sw_frame_group_ctrl_0101 >
  265. <enum 26 sw_frame_group_ctrl_0110 >
  266. <enum 27 sw_frame_group_ctrl_0111 >
  267. <enum 28 sw_frame_group_ctrl_1000 >
  268. <enum 29 sw_frame_group_ctrl_1001 >
  269. <enum 30 sw_frame_group_ctrl_1010 >
  270. <enum 31 sw_frame_group_ctrl_1011 >
  271. <enum 32 sw_frame_group_ctrl_1100 >
  272. <enum 33 sw_frame_group_ctrl_1101 >
  273. <enum 34 sw_frame_group_ctrl_1110 >
  274. <enum 35 sw_frame_group_ctrl_1111 >
  275. <enum 36 sw_frame_group_unsupported> This covers type 3
  276. and protocol version != 0
  277. <legal 0-37>
  278. */
  279. #define RX_MPDU_END_0_SW_FRAME_GROUP_ID_OFFSET 0x00000000
  280. #define RX_MPDU_END_0_SW_FRAME_GROUP_ID_LSB 2
  281. #define RX_MPDU_END_0_SW_FRAME_GROUP_ID_MASK 0x000001fc
  282. /* Description RX_MPDU_END_0_RESERVED_0
  283. <legal 0>
  284. */
  285. #define RX_MPDU_END_0_RESERVED_0_OFFSET 0x00000000
  286. #define RX_MPDU_END_0_RESERVED_0_LSB 9
  287. #define RX_MPDU_END_0_RESERVED_0_MASK 0x0000fe00
  288. /* Description RX_MPDU_END_0_PHY_PPDU_ID
  289. A ppdu counter value that PHY increments for every PPDU
  290. received. The counter value wraps around
  291. <legal all>
  292. */
  293. #define RX_MPDU_END_0_PHY_PPDU_ID_OFFSET 0x00000000
  294. #define RX_MPDU_END_0_PHY_PPDU_ID_LSB 16
  295. #define RX_MPDU_END_0_PHY_PPDU_ID_MASK 0xffff0000
  296. /* Description RX_MPDU_END_1_RESERVED_1A
  297. <legal 0>
  298. */
  299. #define RX_MPDU_END_1_RESERVED_1A_OFFSET 0x00000004
  300. #define RX_MPDU_END_1_RESERVED_1A_LSB 0
  301. #define RX_MPDU_END_1_RESERVED_1A_MASK 0x000007ff
  302. /* Description RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME
  303. This bit will be '1' when WEP or TKIP or WAPI key type
  304. is received for 11ah short frame. Crypto will bypass the
  305. received packet without decryption to RxOLE after setting
  306. this bit.
  307. */
  308. #define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_OFFSET 0x00000004
  309. #define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_LSB 11
  310. #define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_MASK 0x00000800
  311. /* Description RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP
  312. Indicates that RX packet is not decrypted as Crypto is
  313. busy with TX packet processing.
  314. */
  315. #define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_OFFSET 0x00000004
  316. #define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_LSB 12
  317. #define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_MASK 0x00001000
  318. /* Description RX_MPDU_END_1_OVERFLOW_ERR
  319. RXPCU Receive FIFO ran out of space to receive the full
  320. MPDU. Therefor this MPDU is terminated early and is thus
  321. corrupted.
  322. This MPDU will not be ACKed.
  323. RXPCU might still be able to correctly receive the
  324. following MPDUs in the PPDU if enough fifo space became
  325. available in time
  326. */
  327. #define RX_MPDU_END_1_OVERFLOW_ERR_OFFSET 0x00000004
  328. #define RX_MPDU_END_1_OVERFLOW_ERR_LSB 13
  329. #define RX_MPDU_END_1_OVERFLOW_ERR_MASK 0x00002000
  330. /* Description RX_MPDU_END_1_MPDU_LENGTH_ERR
  331. Set by RXPCU if the expected MPDU length does not
  332. correspond with the actually received number of bytes in the
  333. MPDU.
  334. */
  335. #define RX_MPDU_END_1_MPDU_LENGTH_ERR_OFFSET 0x00000004
  336. #define RX_MPDU_END_1_MPDU_LENGTH_ERR_LSB 14
  337. #define RX_MPDU_END_1_MPDU_LENGTH_ERR_MASK 0x00004000
  338. /* Description RX_MPDU_END_1_TKIP_MIC_ERR
  339. Set by RX CRYPTO when CRYPTO detected a TKIP MIC error
  340. for this MPDU
  341. */
  342. #define RX_MPDU_END_1_TKIP_MIC_ERR_OFFSET 0x00000004
  343. #define RX_MPDU_END_1_TKIP_MIC_ERR_LSB 15
  344. #define RX_MPDU_END_1_TKIP_MIC_ERR_MASK 0x00008000
  345. /* Description RX_MPDU_END_1_DECRYPT_ERR
  346. Set by RX CRYPTO when CRYPTO detected a decrypt error
  347. for this MPDU or CRYPTO received an encrypted frame, but did
  348. not get a valid corresponding key id in the peer entry.
  349. */
  350. #define RX_MPDU_END_1_DECRYPT_ERR_OFFSET 0x00000004
  351. #define RX_MPDU_END_1_DECRYPT_ERR_LSB 16
  352. #define RX_MPDU_END_1_DECRYPT_ERR_MASK 0x00010000
  353. /* Description RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR
  354. Set by RX CRYPTO when CRYPTO detected an unencrypted
  355. frame while in the peer entry field
  356. 'All_frames_shall_be_encrypted' is set.
  357. */
  358. #define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_OFFSET 0x00000004
  359. #define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_LSB 17
  360. #define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_MASK 0x00020000
  361. /* Description RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO
  362. Set by RX CRYPTO to indicate that there is a valid PN
  363. field present in this MPDU
  364. */
  365. #define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET 0x00000004
  366. #define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_LSB 18
  367. #define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_MASK 0x00040000
  368. /* Description RX_MPDU_END_1_FCS_ERR
  369. Set by RXPCU when there is an FCS error detected for
  370. this MPDU
  371. NOTE that when this field is set, all other (error)
  372. field settings should be ignored as modules could have made
  373. wrong decisions based on the corrupted data.
  374. */
  375. #define RX_MPDU_END_1_FCS_ERR_OFFSET 0x00000004
  376. #define RX_MPDU_END_1_FCS_ERR_LSB 19
  377. #define RX_MPDU_END_1_FCS_ERR_MASK 0x00080000
  378. /* Description RX_MPDU_END_1_MSDU_LENGTH_ERR
  379. Set by RXOLE when there is an msdu length error detected
  380. in at least 1 of the MSDUs embedded within the MPDU
  381. */
  382. #define RX_MPDU_END_1_MSDU_LENGTH_ERR_OFFSET 0x00000004
  383. #define RX_MPDU_END_1_MSDU_LENGTH_ERR_LSB 20
  384. #define RX_MPDU_END_1_MSDU_LENGTH_ERR_MASK 0x00100000
  385. /* Description RX_MPDU_END_1_RXDMA0_DESTINATION_RING
  386. The ring to which RXDMA0 shall push the frame, assuming
  387. no MPDU level errors are detected. In case of MPDU level
  388. errors, RXDMA0 might change the RXDMA0 destination
  389. <enum 0 rxdma_release_ring > RXDMA0 shall push the
  390. frame to the Release ring. Effectively this means the frame
  391. needs to be dropped.
  392. <enum 1 rxdma2fw_ring > RXDMA0 shall push the frame to
  393. the FW ring
  394. <enum 2 rxdma2sw_ring > RXDMA0 shall push the frame to
  395. the SW ring
  396. <enum 3 rxdma2reo_ring > RXDMA0 shall push the frame
  397. to the REO entrance ring
  398. <legal all>
  399. */
  400. #define RX_MPDU_END_1_RXDMA0_DESTINATION_RING_OFFSET 0x00000004
  401. #define RX_MPDU_END_1_RXDMA0_DESTINATION_RING_LSB 21
  402. #define RX_MPDU_END_1_RXDMA0_DESTINATION_RING_MASK 0x00600000
  403. /* Description RX_MPDU_END_1_RXDMA1_DESTINATION_RING
  404. The ring to which RXDMA1 shall push the frame, assuming
  405. no MPDU level errors are detected. In case of MPDU level
  406. errors, RXDMA1 might change the RXDMA destination
  407. <enum 0 rxdma_release_ring > RXDMA1 shall push the
  408. frame to the Release ring. Effectively this means the frame
  409. needs to be dropped.
  410. <enum 1 rxdma2fw_ring > RXDMA1 shall push the frame to
  411. the FW ring
  412. <enum 2 rxdma2sw_ring > RXDMA1 shall push the frame to
  413. the SW ring
  414. <enum 3 rxdma2reo_ring > RXDMA1 shall push the frame
  415. to the REO entrance ring
  416. <legal all>
  417. */
  418. #define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_OFFSET 0x00000004
  419. #define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_LSB 23
  420. #define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_MASK 0x01800000
  421. /* Description RX_MPDU_END_1_DECRYPT_STATUS_CODE
  422. Field provides insight into the decryption performed
  423. <enum 0 decrypt_ok> Frame had protection enabled and
  424. decrypted properly
  425. <enum 1 decrypt_unprotected_frame > Frame is unprotected
  426. and hence bypassed
  427. <enum 2 decrypt_data_err > Frame has protection enabled
  428. and could not be properly decrypted due to MIC/ICV mismatch
  429. etc.
  430. <enum 3 decrypt_key_invalid > Frame has protection
  431. enabled but the key that was required to decrypt this frame
  432. was not valid
  433. <enum 4 decrypt_peer_entry_invalid > Frame has
  434. protection enabled but the key that was required to decrypt
  435. this frame was not valid
  436. <enum 5 decrypt_other > Reserved for other indications
  437. <legal 0 - 5>
  438. */
  439. #define RX_MPDU_END_1_DECRYPT_STATUS_CODE_OFFSET 0x00000004
  440. #define RX_MPDU_END_1_DECRYPT_STATUS_CODE_LSB 25
  441. #define RX_MPDU_END_1_DECRYPT_STATUS_CODE_MASK 0x0e000000
  442. /* Description RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED
  443. Frame is received, but RXPCU could not update the
  444. receive bitmap due to (temporary) fifo contraints.
  445. <legal all>
  446. */
  447. #define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_OFFSET 0x00000004
  448. #define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_LSB 28
  449. #define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_MASK 0x10000000
  450. /* Description RX_MPDU_END_1_RESERVED_1B
  451. <legal 0>
  452. */
  453. #define RX_MPDU_END_1_RESERVED_1B_OFFSET 0x00000004
  454. #define RX_MPDU_END_1_RESERVED_1B_LSB 29
  455. #define RX_MPDU_END_1_RESERVED_1B_MASK 0xe0000000
  456. #endif // _RX_MPDU_END_H_