rx_mpdu_end.h 22 KB

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