rx_mpdu_start.h 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981
  1. /*
  2. * Copyright (c) 2020 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. //
  19. // DO NOT EDIT! This file is automatically generated
  20. // These definitions are tied to a particular hardware layout
  21. #ifndef _RX_MPDU_START_H_
  22. #define _RX_MPDU_START_H_
  23. #if !defined(__ASSEMBLER__)
  24. #endif
  25. #include "rx_mpdu_info.h"
  26. // ################ START SUMMARY #################
  27. //
  28. // Dword Fields
  29. // 0-22 struct rx_mpdu_info rx_mpdu_info_details;
  30. //
  31. // ################ END SUMMARY #################
  32. #define NUM_OF_DWORDS_RX_MPDU_START 23
  33. struct rx_mpdu_start {
  34. struct rx_mpdu_info rx_mpdu_info_details;
  35. };
  36. /*
  37. struct rx_mpdu_info rx_mpdu_info_details
  38. Structure containing all the MPDU header details that
  39. might be needed for other modules further down the received
  40. path
  41. */
  42. /* EXTERNAL REFERENCE : struct rx_mpdu_info rx_mpdu_info_details */
  43. /* EXTERNAL REFERENCE : struct rxpt_classify_info rxpt_classify_info_details */
  44. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION
  45. The ID of the REO exit ring where the MSDU frame shall
  46. push after (MPDU level) reordering has finished.
  47. <enum 0 reo_destination_tcl> Reo will push the frame
  48. into the REO2TCL ring
  49. <enum 1 reo_destination_sw1> Reo will push the frame
  50. into the REO2SW1 ring
  51. <enum 2 reo_destination_sw2> Reo will push the frame
  52. into the REO2SW2 ring
  53. <enum 3 reo_destination_sw3> Reo will push the frame
  54. into the REO2SW3 ring
  55. <enum 4 reo_destination_sw4> Reo will push the frame
  56. into the REO2SW4 ring
  57. <enum 5 reo_destination_release> Reo will push the frame
  58. into the REO_release ring
  59. <enum 6 reo_destination_fw> Reo will push the frame into
  60. the REO2FW ring
  61. <enum 7 reo_destination_sw5> Reo will push the frame
  62. into the REO2SW5 ring (REO remaps this in chips without
  63. REO2SW5 ring, e.g. Pine)
  64. <enum 8 reo_destination_sw6> Reo will push the frame
  65. into the REO2SW6 ring (REO remaps this in chips without
  66. REO2SW6 ring, e.g. Pine)
  67. <enum 9 reo_destination_9> REO remaps this <enum 10
  68. reo_destination_10> REO remaps this
  69. <enum 11 reo_destination_11> REO remaps this
  70. <enum 12 reo_destination_12> REO remaps this <enum 13
  71. reo_destination_13> REO remaps this
  72. <enum 14 reo_destination_14> REO remaps this
  73. <enum 15 reo_destination_15> REO remaps this
  74. <enum 16 reo_destination_16> REO remaps this
  75. <enum 17 reo_destination_17> REO remaps this
  76. <enum 18 reo_destination_18> REO remaps this
  77. <enum 19 reo_destination_19> REO remaps this
  78. <enum 20 reo_destination_20> REO remaps this
  79. <enum 21 reo_destination_21> REO remaps this
  80. <enum 22 reo_destination_22> REO remaps this
  81. <enum 23 reo_destination_23> REO remaps this
  82. <enum 24 reo_destination_24> REO remaps this
  83. <enum 25 reo_destination_25> REO remaps this
  84. <enum 26 reo_destination_26> REO remaps this
  85. <enum 27 reo_destination_27> REO remaps this
  86. <enum 28 reo_destination_28> REO remaps this
  87. <enum 29 reo_destination_29> REO remaps this
  88. <enum 30 reo_destination_30> REO remaps this
  89. <enum 31 reo_destination_31> REO remaps this
  90. <legal all>
  91. */
  92. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000000
  93. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  94. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  95. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB
  96. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
  97. is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
  98. hash[3:0]} using the chosen Toeplitz hash from Common Parser
  99. if flow search fails.
  100. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
  101. 's not 2'b00, Rx OLE uses a REO desination indication of
  102. {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
  103. from Common Parser if flow search fails.
  104. This LMAC/peer-based routing is not supported in
  105. Hastings80 and HastingsPrime.
  106. <legal all>
  107. */
  108. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x00000000
  109. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
  110. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x00000060
  111. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY
  112. Indication to Rx OLE to enable REO destination routing
  113. based on the chosen Toeplitz hash from Common Parser, in
  114. case flow search fails
  115. <legal all>
  116. */
  117. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000
  118. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
  119. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080
  120. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA
  121. Filter pass Unicast data frame (matching
  122. rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
  123. selection
  124. 1'b0: source and destination rings are selected from the
  125. RxOLE register settings for the packet type
  126. 1'b1: source ring and destination ring is selected from
  127. the rxdma0_source_ring_selection and
  128. rxdma0_destination_ring_selection fields in this STRUCT
  129. <legal all>
  130. */
  131. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000
  132. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
  133. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100
  134. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA
  135. Filter pass Multicast data frame (matching
  136. rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
  137. selection
  138. 1'b0: source and destination rings are selected from the
  139. RxOLE register settings for the packet type
  140. 1'b1: source ring and destination ring is selected from
  141. the rxdma0_source_ring_selection and
  142. rxdma0_destination_ring_selection fields in this STRUCT
  143. <legal all>
  144. */
  145. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000
  146. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
  147. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200
  148. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000
  149. Filter pass BAR frame (matching rxpcu_filter_pass and
  150. sw_frame_group_ctrl_1000) routing selection
  151. 1'b0: source and destination rings are selected from the
  152. RxOLE register settings for the packet type
  153. 1'b1: source ring and destination ring is selected from
  154. the rxdma0_source_ring_selection and
  155. rxdma0_destination_ring_selection fields in this STRUCT
  156. <legal all>
  157. */
  158. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x00000000
  159. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
  160. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x00000400
  161. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION
  162. Field only valid when for the received frame type the
  163. corresponding pkt_selection_fp_... bit is set
  164. <enum 0 wbm2rxdma_buf_source_ring> The data buffer for
  165. <enum 1 fw2rxdma_buf_source_ring> The data buffer for
  166. this frame shall be sourced by fw2rxdma buffer source ring.
  167. <enum 2 sw2rxdma_buf_source_ring> The data buffer for
  168. this frame shall be sourced by sw2rxdma buffer source ring.
  169. <enum 3 no_buffer_ring> The frame shall not be written
  170. to any data buffer.
  171. <legal all>
  172. */
  173. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000
  174. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
  175. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800
  176. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION
  177. Field only valid when for the received frame type the
  178. corresponding pkt_selection_fp_... bit is set
  179. <enum 0 rxdma_release_ring> RXDMA0 shall push the frame
  180. to the Release ring. Effectively this means the frame needs
  181. to be dropped.
  182. <enum 1 rxdma2fw_ring> RXDMA0 shall push the frame to
  183. the FW ring.
  184. <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to
  185. the SW ring.
  186. <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to
  187. the REO entrance ring.
  188. <legal all>
  189. */
  190. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
  191. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 13
  192. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000
  193. /* Description RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B
  194. <legal 0>
  195. */
  196. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000
  197. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB 15
  198. #define RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK 0xffff8000
  199. /* Description RX_MPDU_START_1_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0
  200. In case of ndp or phy_err or AST_based_lookup_valid ==
  201. 0, this field will be set to 0
  202. Address (lower 32 bits) of the REO queue descriptor.
  203. If no Peer entry lookup happened for this frame, the
  204. value wil be set to 0, and the frame shall never be pushed
  205. to REO entrance ring.
  206. <legal all>
  207. */
  208. #define RX_MPDU_START_1_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000004
  209. #define RX_MPDU_START_1_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  210. #define RX_MPDU_START_1_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  211. /* Description RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32
  212. In case of ndp or phy_err or AST_based_lookup_valid ==
  213. 0, this field will be set to 0
  214. Address (upper 8 bits) of the REO queue descriptor.
  215. If no Peer entry lookup happened for this frame, the
  216. value wil be set to 0, and the frame shall never be pushed
  217. to REO entrance ring.
  218. <legal all>
  219. */
  220. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000008
  221. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  222. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  223. /* Description RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER
  224. In case of ndp or phy_err or AST_based_lookup_valid ==
  225. 0, this field will be set to 0
  226. Indicates the MPDU queue ID to which this MPDU link
  227. descriptor belongs
  228. Used for tracking and debugging
  229. <legal all>
  230. */
  231. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_OFFSET 0x00000008
  232. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_LSB 8
  233. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_MASK 0x00ffff00
  234. /* Description RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING
  235. Indicates that a delimiter FCS error was found in
  236. between the Previous MPDU and this MPDU.
  237. Note that this is just a warning, and does not mean that
  238. this MPDU is corrupted in any way. If it is, there will be
  239. other errors indicated such as FCS or decrypt errors
  240. In case of ndp or phy_err, this field will indicate at
  241. least one of delimiters located after the last MPDU in the
  242. previous PPDU has been corrupted.
  243. */
  244. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_OFFSET 0x00000008
  245. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_LSB 24
  246. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_MASK 0x01000000
  247. /* Description RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR
  248. Indicates that the first delimiter had a FCS failure.
  249. Only valid when first_mpdu and first_msdu are set.
  250. */
  251. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_OFFSET 0x00000008
  252. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_LSB 25
  253. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_MASK 0x02000000
  254. /* Description RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RESERVED_2A
  255. <legal 0>
  256. */
  257. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RESERVED_2A_OFFSET 0x00000008
  258. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RESERVED_2A_LSB 26
  259. #define RX_MPDU_START_2_RX_MPDU_INFO_DETAILS_RESERVED_2A_MASK 0xfc000000
  260. /* Description RX_MPDU_START_3_RX_MPDU_INFO_DETAILS_PN_31_0
  261. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  262. is valid.
  263. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
  264. WEPSeed[1], pn1}. Only pn[47:0] is valid.
  265. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
  266. pn1, pn0}. Only pn[47:0] is valid.
  267. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
  268. pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
  269. pn0}. pn[127:0] are valid.
  270. */
  271. #define RX_MPDU_START_3_RX_MPDU_INFO_DETAILS_PN_31_0_OFFSET 0x0000000c
  272. #define RX_MPDU_START_3_RX_MPDU_INFO_DETAILS_PN_31_0_LSB 0
  273. #define RX_MPDU_START_3_RX_MPDU_INFO_DETAILS_PN_31_0_MASK 0xffffffff
  274. /* Description RX_MPDU_START_4_RX_MPDU_INFO_DETAILS_PN_63_32
  275. Bits [63:32] of the PN number. See description for
  276. pn_31_0.
  277. */
  278. #define RX_MPDU_START_4_RX_MPDU_INFO_DETAILS_PN_63_32_OFFSET 0x00000010
  279. #define RX_MPDU_START_4_RX_MPDU_INFO_DETAILS_PN_63_32_LSB 0
  280. #define RX_MPDU_START_4_RX_MPDU_INFO_DETAILS_PN_63_32_MASK 0xffffffff
  281. /* Description RX_MPDU_START_5_RX_MPDU_INFO_DETAILS_PN_95_64
  282. Bits [95:64] of the PN number. See description for
  283. pn_31_0.
  284. */
  285. #define RX_MPDU_START_5_RX_MPDU_INFO_DETAILS_PN_95_64_OFFSET 0x00000014
  286. #define RX_MPDU_START_5_RX_MPDU_INFO_DETAILS_PN_95_64_LSB 0
  287. #define RX_MPDU_START_5_RX_MPDU_INFO_DETAILS_PN_95_64_MASK 0xffffffff
  288. /* Description RX_MPDU_START_6_RX_MPDU_INFO_DETAILS_PN_127_96
  289. Bits [127:96] of the PN number. See description for
  290. pn_31_0.
  291. */
  292. #define RX_MPDU_START_6_RX_MPDU_INFO_DETAILS_PN_127_96_OFFSET 0x00000018
  293. #define RX_MPDU_START_6_RX_MPDU_INFO_DETAILS_PN_127_96_LSB 0
  294. #define RX_MPDU_START_6_RX_MPDU_INFO_DETAILS_PN_127_96_MASK 0xffffffff
  295. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_EPD_EN
  296. Field only valid when AST_based_lookup_valid == 1.
  297. In case of ndp or phy_err or AST_based_lookup_valid ==
  298. 0, this field will be set to 0
  299. If set to one use EPD instead of LPD
  300. <legal all>
  301. */
  302. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_EPD_EN_OFFSET 0x0000001c
  303. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_EPD_EN_LSB 0
  304. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_EPD_EN_MASK 0x00000001
  305. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED
  306. In case of ndp or phy_err or AST_based_lookup_valid ==
  307. 0, this field will be set to 0
  308. When set, all frames (data only ?) shall be encrypted.
  309. If not, RX CRYPTO shall set an error flag.
  310. <legal all>
  311. */
  312. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET 0x0000001c
  313. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB 1
  314. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK 0x00000002
  315. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE
  316. In case of ndp or phy_err or AST_based_lookup_valid ==
  317. 0, this field will be set to 0
  318. Indicates type of decrypt cipher used (as defined in the
  319. peer entry)
  320. <enum 0 wep_40> WEP 40-bit
  321. <enum 1 wep_104> WEP 104-bit
  322. <enum 2 tkip_no_mic> TKIP without MIC
  323. <enum 3 wep_128> WEP 128-bit
  324. <enum 4 tkip_with_mic> TKIP with MIC
  325. <enum 5 wapi> WAPI
  326. <enum 6 aes_ccmp_128> AES CCMP 128
  327. <enum 7 no_cipher> No crypto
  328. <enum 8 aes_ccmp_256> AES CCMP 256
  329. <enum 9 aes_gcmp_128> AES CCMP 128
  330. <enum 10 aes_gcmp_256> AES CCMP 256
  331. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  332. <enum 12 wep_varied_width> WEP encryption. As for WEP
  333. per keyid the key bit width can vary, the key bit width for
  334. this MPDU will be indicated in field
  335. wep_key_width_for_variable key
  336. <legal 0-12>
  337. */
  338. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_OFFSET 0x0000001c
  339. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_LSB 2
  340. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_MASK 0x0000003c
  341. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY
  342. Field only valid when key_type is set to
  343. wep_varied_width.
  344. This field indicates the size of the wep key for this
  345. MPDU.
  346. <enum 0 wep_varied_width_40> WEP 40-bit
  347. <enum 1 wep_varied_width_104> WEP 104-bit
  348. <enum 2 wep_varied_width_128> WEP 128-bit
  349. <legal 0-2>
  350. */
  351. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET 0x0000001c
  352. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB 6
  353. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK 0x000000c0
  354. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_MESH_STA
  355. In case of ndp or phy_err or AST_based_lookup_valid ==
  356. 0, this field will be set to 0
  357. When set, this is a Mesh (11s) STA.
  358. The interpretation of the A-MSDU 'Length' field in the
  359. MPDU (if any) is decided by the e-numerations below.
  360. <enum 0 MESH_DISABLE>
  361. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
  362. includes the length of Mesh Control.
  363. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
  364. excludes the length of Mesh Control.
  365. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
  366. and excludes the length of Mesh Control. This is
  367. 802.11s-compliant.
  368. <legal all>
  369. */
  370. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_MESH_STA_OFFSET 0x0000001c
  371. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_MESH_STA_LSB 8
  372. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_MESH_STA_MASK 0x00000300
  373. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_HIT
  374. In case of ndp or phy_err or AST_based_lookup_valid ==
  375. 0, this field will be set to 0
  376. When set, the BSSID of the incoming frame matched one of
  377. the 8 BSSID register values
  378. <legal all>
  379. */
  380. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_HIT_OFFSET 0x0000001c
  381. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_HIT_LSB 10
  382. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_HIT_MASK 0x00000400
  383. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_NUMBER
  384. Field only valid when bssid_hit is set.
  385. This number indicates which one out of the 8 BSSID
  386. register values matched the incoming frame
  387. <legal all>
  388. */
  389. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_OFFSET 0x0000001c
  390. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_LSB 11
  391. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_MASK 0x00007800
  392. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_TID
  393. Field only valid when mpdu_qos_control_valid is set
  394. The TID field in the QoS control field
  395. <legal all>
  396. */
  397. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_TID_OFFSET 0x0000001c
  398. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_TID_LSB 15
  399. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_TID_MASK 0x00078000
  400. /* Description RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_RESERVED_7A
  401. <legal 0>
  402. */
  403. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_RESERVED_7A_OFFSET 0x0000001c
  404. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_RESERVED_7A_LSB 19
  405. #define RX_MPDU_START_7_RX_MPDU_INFO_DETAILS_RESERVED_7A_MASK 0xfff80000
  406. /* Description RX_MPDU_START_8_RX_MPDU_INFO_DETAILS_PEER_META_DATA
  407. In case of ndp or phy_err or AST_based_lookup_valid ==
  408. 0, this field will be set to 0
  409. Meta data that SW has programmed in the Peer table entry
  410. of the transmitting STA.
  411. <legal all>
  412. */
  413. #define RX_MPDU_START_8_RX_MPDU_INFO_DETAILS_PEER_META_DATA_OFFSET 0x00000020
  414. #define RX_MPDU_START_8_RX_MPDU_INFO_DETAILS_PEER_META_DATA_LSB 0
  415. #define RX_MPDU_START_8_RX_MPDU_INFO_DETAILS_PEER_META_DATA_MASK 0xffffffff
  416. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY
  417. Field indicates what the reason was that this MPDU frame
  418. was allowed to come into the receive path by RXPCU
  419. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  420. frame filter programming of rxpcu
  421. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  422. regular frame filter and would have been dropped, were it
  423. not for the frame fitting into the 'monitor_client'
  424. category.
  425. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  426. regular frame filter and also did not pass the
  427. rxpcu_monitor_client filter. It would have been dropped
  428. accept that it did pass the 'monitor_other' category.
  429. Note: for ndp frame, if it was expected because the
  430. preceding NDPA was filter_pass, the setting
  431. rxpcu_filter_pass will be used. This setting will also be
  432. used for every ndp frame in case Promiscuous mode is
  433. enabled.
  434. In case promiscuous is not enabled, and an NDP is not
  435. preceded by a NPDA filter pass frame, the only other setting
  436. that could appear here for the NDP is rxpcu_monitor_other.
  437. (rxpcu has a configuration bit specifically for this
  438. scenario)
  439. Note: for
  440. <legal 0-2>
  441. */
  442. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000024
  443. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  444. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  445. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID
  446. SW processes frames based on certain classifications.
  447. This field indicates to what sw classification this MPDU is
  448. mapped.
  449. The classification is given in priority order
  450. <enum 0 sw_frame_group_NDP_frame> Note: The
  451. corresponding Rxpcu_Mpdu_filter_in_category can be
  452. rxpcu_filter_pass or rxpcu_monitor_other
  453. <enum 1 sw_frame_group_Multicast_data>
  454. <enum 2 sw_frame_group_Unicast_data>
  455. <enum 3 sw_frame_group_Null_data > This includes mpdus
  456. of type Data Null as well as QoS Data Null
  457. <enum 4 sw_frame_group_mgmt_0000 >
  458. <enum 5 sw_frame_group_mgmt_0001 >
  459. <enum 6 sw_frame_group_mgmt_0010 >
  460. <enum 7 sw_frame_group_mgmt_0011 >
  461. <enum 8 sw_frame_group_mgmt_0100 >
  462. <enum 9 sw_frame_group_mgmt_0101 >
  463. <enum 10 sw_frame_group_mgmt_0110 >
  464. <enum 11 sw_frame_group_mgmt_0111 >
  465. <enum 12 sw_frame_group_mgmt_1000 >
  466. <enum 13 sw_frame_group_mgmt_1001 >
  467. <enum 14 sw_frame_group_mgmt_1010 >
  468. <enum 15 sw_frame_group_mgmt_1011 >
  469. <enum 16 sw_frame_group_mgmt_1100 >
  470. <enum 17 sw_frame_group_mgmt_1101 >
  471. <enum 18 sw_frame_group_mgmt_1110 >
  472. <enum 19 sw_frame_group_mgmt_1111 >
  473. <enum 20 sw_frame_group_ctrl_0000 >
  474. <enum 21 sw_frame_group_ctrl_0001 >
  475. <enum 22 sw_frame_group_ctrl_0010 >
  476. <enum 23 sw_frame_group_ctrl_0011 >
  477. <enum 24 sw_frame_group_ctrl_0100 >
  478. <enum 25 sw_frame_group_ctrl_0101 >
  479. <enum 26 sw_frame_group_ctrl_0110 >
  480. <enum 27 sw_frame_group_ctrl_0111 >
  481. <enum 28 sw_frame_group_ctrl_1000 >
  482. <enum 29 sw_frame_group_ctrl_1001 >
  483. <enum 30 sw_frame_group_ctrl_1010 >
  484. <enum 31 sw_frame_group_ctrl_1011 >
  485. <enum 32 sw_frame_group_ctrl_1100 >
  486. <enum 33 sw_frame_group_ctrl_1101 >
  487. <enum 34 sw_frame_group_ctrl_1110 >
  488. <enum 35 sw_frame_group_ctrl_1111 >
  489. <enum 36 sw_frame_group_unsupported> This covers type 3
  490. and protocol version != 0
  491. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  492. can only be rxpcu_monitor_other
  493. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  494. can be rxpcu_filter_pass
  495. <legal 0-37>
  496. */
  497. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_OFFSET 0x00000024
  498. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_LSB 2
  499. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_MASK 0x000001fc
  500. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_NDP_FRAME
  501. When set, the received frame was an NDP frame, and thus
  502. there will be no MPDU data.
  503. <legal all>
  504. */
  505. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_NDP_FRAME_OFFSET 0x00000024
  506. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_NDP_FRAME_LSB 9
  507. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_NDP_FRAME_MASK 0x00000200
  508. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR
  509. When set, a PHY error was received before MAC received
  510. any data, and thus there will be no MPDU data.
  511. <legal all>
  512. */
  513. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_OFFSET 0x00000024
  514. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_LSB 10
  515. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_MASK 0x00000400
  516. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER
  517. When set, a PHY error was received before MAC received
  518. the complete MPDU header which was needed for proper
  519. decoding
  520. <legal all>
  521. */
  522. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_OFFSET 0x00000024
  523. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_LSB 11
  524. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_MASK 0x00000800
  525. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR
  526. Set when RXPCU detected a version error in the Frame
  527. control field
  528. <legal all>
  529. */
  530. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_OFFSET 0x00000024
  531. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_LSB 12
  532. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_MASK 0x00001000
  533. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID
  534. When set, AST based lookup for this frame has found a
  535. valid result.
  536. Note that for NDP frame this will never be set
  537. <legal all>
  538. */
  539. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_OFFSET 0x00000024
  540. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_LSB 13
  541. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_MASK 0x00002000
  542. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RESERVED_9A
  543. <legal 0>
  544. */
  545. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RESERVED_9A_OFFSET 0x00000024
  546. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RESERVED_9A_LSB 14
  547. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_RESERVED_9A_MASK 0x0000c000
  548. /* Description RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID
  549. A ppdu counter value that PHY increments for every PPDU
  550. received. The counter value wraps around
  551. <legal all>
  552. */
  553. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_OFFSET 0x00000024
  554. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_LSB 16
  555. #define RX_MPDU_START_9_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_MASK 0xffff0000
  556. /* Description RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_AST_INDEX
  557. This field indicates the index of the AST entry
  558. corresponding to this MPDU. It is provided by the GSE module
  559. instantiated in RXPCU.
  560. A value of 0xFFFF indicates an invalid AST index,
  561. meaning that No AST entry was found or NO AST search was
  562. performed
  563. In case of ndp or phy_err, this field will be set to
  564. 0xFFFF
  565. <legal all>
  566. */
  567. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_AST_INDEX_OFFSET 0x00000028
  568. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_AST_INDEX_LSB 0
  569. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_AST_INDEX_MASK 0x0000ffff
  570. /* Description RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_SW_PEER_ID
  571. In case of ndp or phy_err or AST_based_lookup_valid ==
  572. 0, this field will be set to 0
  573. This field indicates a unique peer identifier. It is set
  574. equal to field 'sw_peer_id' from the AST entry
  575. <legal all>
  576. */
  577. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_SW_PEER_ID_OFFSET 0x00000028
  578. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_SW_PEER_ID_LSB 16
  579. #define RX_MPDU_START_10_RX_MPDU_INFO_DETAILS_SW_PEER_ID_MASK 0xffff0000
  580. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID
  581. When set, the field Mpdu_Frame_control_field has valid
  582. information
  583. <legal all>
  584. */
  585. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_OFFSET 0x0000002c
  586. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_LSB 0
  587. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_MASK 0x00000001
  588. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID
  589. When set, the field Mpdu_duration_field has valid
  590. information
  591. <legal all>
  592. */
  593. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_OFFSET 0x0000002c
  594. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_LSB 1
  595. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_MASK 0x00000002
  596. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID
  597. When set, the fields mac_addr_ad1_..... have valid
  598. information
  599. <legal all>
  600. */
  601. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_OFFSET 0x0000002c
  602. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_LSB 2
  603. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_MASK 0x00000004
  604. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID
  605. When set, the fields mac_addr_ad2_..... have valid
  606. information
  607. <legal all>
  608. */
  609. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_OFFSET 0x0000002c
  610. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_LSB 3
  611. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_MASK 0x00000008
  612. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID
  613. When set, the fields mac_addr_ad3_..... have valid
  614. information
  615. <legal all>
  616. */
  617. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_OFFSET 0x0000002c
  618. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_LSB 4
  619. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_MASK 0x00000010
  620. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID
  621. When set, the fields mac_addr_ad4_..... have valid
  622. information
  623. <legal all>
  624. */
  625. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_OFFSET 0x0000002c
  626. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_LSB 5
  627. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_MASK 0x00000020
  628. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID
  629. When set, the fields mpdu_sequence_control_field and
  630. mpdu_sequence_number have valid information as well as field
  631. For MPDUs without a sequence control field, this field
  632. will not be set.
  633. <legal all>
  634. */
  635. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_OFFSET 0x0000002c
  636. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_LSB 6
  637. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_MASK 0x00000040
  638. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID
  639. When set, the field mpdu_qos_control_field has valid
  640. information
  641. For MPDUs without a QoS control field, this field will
  642. not be set.
  643. <legal all>
  644. */
  645. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_OFFSET 0x0000002c
  646. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_LSB 7
  647. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_MASK 0x00000080
  648. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID
  649. When set, the field mpdu_HT_control_field has valid
  650. information
  651. For MPDUs without a HT control field, this field will
  652. not be set.
  653. <legal all>
  654. */
  655. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_OFFSET 0x0000002c
  656. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_LSB 8
  657. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_MASK 0x00000100
  658. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID
  659. When set, the encryption related info fields, like IV
  660. and PN are valid
  661. For MPDUs that are not encrypted, this will not be set.
  662. <legal all>
  663. */
  664. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_OFFSET 0x0000002c
  665. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_LSB 9
  666. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_MASK 0x00000200
  667. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER
  668. Field only valid when Mpdu_sequence_control_valid is set
  669. AND Fragment_flag is set
  670. The fragment number from the 802.11 header
  671. <legal all>
  672. */
  673. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_OFFSET 0x0000002c
  674. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_LSB 10
  675. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_MASK 0x00003c00
  676. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG
  677. The More Fragment bit setting from the MPDU header of
  678. the received frame
  679. <legal all>
  680. */
  681. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_OFFSET 0x0000002c
  682. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_LSB 14
  683. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_MASK 0x00004000
  684. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_RESERVED_11A
  685. <legal 0>
  686. */
  687. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_RESERVED_11A_OFFSET 0x0000002c
  688. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_RESERVED_11A_LSB 15
  689. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_RESERVED_11A_MASK 0x00008000
  690. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FR_DS
  691. Field only valid when Mpdu_frame_control_valid is set
  692. Set if the from DS bit is set in the frame control.
  693. <legal all>
  694. */
  695. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FR_DS_OFFSET 0x0000002c
  696. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FR_DS_LSB 16
  697. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_FR_DS_MASK 0x00010000
  698. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_TO_DS
  699. Field only valid when Mpdu_frame_control_valid is set
  700. Set if the to DS bit is set in the frame control.
  701. <legal all>
  702. */
  703. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_TO_DS_OFFSET 0x0000002c
  704. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_TO_DS_LSB 17
  705. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_TO_DS_MASK 0x00020000
  706. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_ENCRYPTED
  707. Field only valid when Mpdu_frame_control_valid is set.
  708. Protected bit from the frame control.
  709. <legal all>
  710. */
  711. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_ENCRYPTED_OFFSET 0x0000002c
  712. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_ENCRYPTED_LSB 18
  713. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_ENCRYPTED_MASK 0x00040000
  714. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_RETRY
  715. Field only valid when Mpdu_frame_control_valid is set.
  716. Retry bit from the frame control. Only valid when
  717. first_msdu is set.
  718. <legal all>
  719. */
  720. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_RETRY_OFFSET 0x0000002c
  721. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_RETRY_LSB 19
  722. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_RETRY_MASK 0x00080000
  723. /* Description RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER
  724. Field only valid when Mpdu_sequence_control_valid is
  725. set.
  726. The sequence number from the 802.11 header.
  727. <legal all>
  728. */
  729. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_OFFSET 0x0000002c
  730. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_LSB 20
  731. #define RX_MPDU_START_11_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MASK 0xfff00000
  732. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET
  733. The key ID octet from the IV.
  734. In case of ndp or phy_err or AST_based_lookup_valid ==
  735. 0, this field will be set to 0
  736. <legal all>
  737. */
  738. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_OFFSET 0x00000030
  739. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_LSB 0
  740. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_MASK 0x000000ff
  741. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY
  742. In case of ndp or phy_err or AST_based_lookup_valid ==
  743. 0, this field will be set to 0
  744. Set if new RX_PEER_ENTRY TLV follows. If clear,
  745. RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
  746. uses old peer entry or not decrypt.
  747. <legal all>
  748. */
  749. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_OFFSET 0x00000030
  750. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_LSB 8
  751. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_MASK 0x00000100
  752. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED
  753. In case of ndp or phy_err or AST_based_lookup_valid ==
  754. 0, this field will be set to 0
  755. Set if decryption is needed.
  756. Note:
  757. When RXPCU sets bit 'ast_index_not_found' and/or
  758. ast_index_timeout', RXPCU will also ensure that this bit is
  759. NOT set
  760. CRYPTO for that reason only needs to evaluate this bit
  761. and non of the other ones.
  762. <legal all>
  763. */
  764. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_OFFSET 0x00000030
  765. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_LSB 9
  766. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_MASK 0x00000200
  767. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECAP_TYPE
  768. In case of ndp or phy_err or AST_based_lookup_valid ==
  769. 0, this field will be set to 0
  770. Used by the OLE during decapsulation.
  771. Indicates the decapsulation that HW will perform:
  772. <enum 0 RAW> No encapsulation
  773. <enum 1 Native_WiFi>
  774. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses
  775. SNAP/LLC)
  776. <enum 3 802_3> Indicate Ethernet
  777. <legal all>
  778. */
  779. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECAP_TYPE_OFFSET 0x00000030
  780. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECAP_TYPE_LSB 10
  781. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_DECAP_TYPE_MASK 0x00000c00
  782. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING
  783. In case of ndp or phy_err or AST_based_lookup_valid ==
  784. 0, this field will be set to 0
  785. Insert 4 byte of all zeros as VLAN tag if the rx payload
  786. does not have VLAN. Used during decapsulation.
  787. <legal all>
  788. */
  789. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET 0x00000030
  790. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_LSB 12
  791. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_MASK 0x00001000
  792. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING
  793. In case of ndp or phy_err or AST_based_lookup_valid ==
  794. 0, this field will be set to 0
  795. Insert 4 byte of all zeros as double VLAN tag if the rx
  796. payload does not have VLAN. Used during
  797. <legal all>
  798. */
  799. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET 0x00000030
  800. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_LSB 13
  801. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_MASK 0x00002000
  802. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP
  803. In case of ndp or phy_err or AST_based_lookup_valid ==
  804. 0, this field will be set to 0
  805. Strip the VLAN during decapsulation.  Used by the OLE.
  806. <legal all>
  807. */
  808. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_OFFSET 0x00000030
  809. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_LSB 14
  810. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_MASK 0x00004000
  811. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP
  812. In case of ndp or phy_err or AST_based_lookup_valid ==
  813. 0, this field will be set to 0
  814. Strip the double VLAN during decapsulation.  Used by
  815. the OLE.
  816. <legal all>
  817. */
  818. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_OFFSET 0x00000030
  819. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_LSB 15
  820. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_MASK 0x00008000
  821. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT
  822. The number of delimiters before this MPDU.
  823. Note that this number is cleared at PPDU start.
  824. If this MPDU is the first received MPDU in the PPDU and
  825. this MPDU gets filtered-in, this field will indicate the
  826. number of delimiters located after the last MPDU in the
  827. previous PPDU.
  828. If this MPDU is located after the first received MPDU in
  829. an PPDU, this field will indicate the number of delimiters
  830. located between the previous MPDU and this MPDU.
  831. In case of ndp or phy_err, this field will indicate the
  832. number of delimiters located after the last MPDU in the
  833. previous PPDU.
  834. <legal all>
  835. */
  836. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_OFFSET 0x00000030
  837. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_LSB 16
  838. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_MASK 0x0fff0000
  839. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_AMPDU_FLAG
  840. When set, received frame was part of an A-MPDU.
  841. <legal all>
  842. */
  843. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_OFFSET 0x00000030
  844. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_LSB 28
  845. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_MASK 0x10000000
  846. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_BAR_FRAME
  847. In case of ndp or phy_err or AST_based_lookup_valid ==
  848. 0, this field will be set to 0
  849. When set, received frame is a BAR frame
  850. <legal all>
  851. */
  852. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_BAR_FRAME_OFFSET 0x00000030
  853. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_BAR_FRAME_LSB 29
  854. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_BAR_FRAME_MASK 0x20000000
  855. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RAW_MPDU
  856. Consumer: SW
  857. Producer: RXOLE
  858. RXPCU sets this field to 0 and RXOLE overwrites it.
  859. Set to 1 by RXOLE when it has not performed any 802.11
  860. to Ethernet/Natvie WiFi header conversion on this MPDU.
  861. <legal all>
  862. */
  863. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000030
  864. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RAW_MPDU_LSB 30
  865. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RAW_MPDU_MASK 0x40000000
  866. /* Description RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RESERVED_12
  867. <legal 0>
  868. */
  869. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RESERVED_12_OFFSET 0x00000030
  870. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RESERVED_12_LSB 31
  871. #define RX_MPDU_START_12_RX_MPDU_INFO_DETAILS_RESERVED_12_MASK 0x80000000
  872. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MPDU_LENGTH
  873. In case of ndp or phy_err this field will be set to 0
  874. MPDU length before decapsulation.
  875. <legal all>
  876. */
  877. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_OFFSET 0x00000034
  878. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_LSB 0
  879. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_MASK 0x00003fff
  880. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FIRST_MPDU
  881. See definition in RX attention descriptor
  882. In case of ndp or phy_err, this field will be set. Note
  883. however that there will not actually be any data contents in
  884. the MPDU.
  885. <legal all>
  886. */
  887. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FIRST_MPDU_OFFSET 0x00000034
  888. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FIRST_MPDU_LSB 14
  889. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FIRST_MPDU_MASK 0x00004000
  890. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MCAST_BCAST
  891. In case of ndp or phy_err or Phy_err_during_mpdu_header
  892. this field will be set to 0
  893. See definition in RX attention descriptor
  894. <legal all>
  895. */
  896. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MCAST_BCAST_OFFSET 0x00000034
  897. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MCAST_BCAST_LSB 15
  898. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MCAST_BCAST_MASK 0x00008000
  899. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND
  900. In case of ndp or phy_err or Phy_err_during_mpdu_header
  901. this field will be set to 0
  902. See definition in RX attention descriptor
  903. <legal all>
  904. */
  905. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_OFFSET 0x00000034
  906. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_LSB 16
  907. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_MASK 0x00010000
  908. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT
  909. In case of ndp or phy_err or Phy_err_during_mpdu_header
  910. this field will be set to 0
  911. See definition in RX attention descriptor
  912. <legal all>
  913. */
  914. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_OFFSET 0x00000034
  915. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_LSB 17
  916. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_MASK 0x00020000
  917. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_POWER_MGMT
  918. In case of ndp or phy_err or Phy_err_during_mpdu_header
  919. this field will be set to 0
  920. See definition in RX attention descriptor
  921. <legal all>
  922. */
  923. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_POWER_MGMT_OFFSET 0x00000034
  924. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_POWER_MGMT_LSB 18
  925. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_POWER_MGMT_MASK 0x00040000
  926. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NON_QOS
  927. In case of ndp or phy_err or Phy_err_during_mpdu_header
  928. this field will be set to 1
  929. See definition in RX attention descriptor
  930. <legal all>
  931. */
  932. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NON_QOS_OFFSET 0x00000034
  933. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NON_QOS_LSB 19
  934. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NON_QOS_MASK 0x00080000
  935. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NULL_DATA
  936. In case of ndp or phy_err or Phy_err_during_mpdu_header
  937. this field will be set to 0
  938. See definition in RX attention descriptor
  939. <legal all>
  940. */
  941. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NULL_DATA_OFFSET 0x00000034
  942. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NULL_DATA_LSB 20
  943. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_NULL_DATA_MASK 0x00100000
  944. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MGMT_TYPE
  945. In case of ndp or phy_err or Phy_err_during_mpdu_header
  946. this field will be set to 0
  947. See definition in RX attention descriptor
  948. <legal all>
  949. */
  950. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MGMT_TYPE_OFFSET 0x00000034
  951. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MGMT_TYPE_LSB 21
  952. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MGMT_TYPE_MASK 0x00200000
  953. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_CTRL_TYPE
  954. In case of ndp or phy_err or Phy_err_during_mpdu_header
  955. this field will be set to 0
  956. See definition in RX attention descriptor
  957. <legal all>
  958. */
  959. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_CTRL_TYPE_OFFSET 0x00000034
  960. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_CTRL_TYPE_LSB 22
  961. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_CTRL_TYPE_MASK 0x00400000
  962. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MORE_DATA
  963. In case of ndp or phy_err or Phy_err_during_mpdu_header
  964. this field will be set to 0
  965. See definition in RX attention descriptor
  966. <legal all>
  967. */
  968. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MORE_DATA_OFFSET 0x00000034
  969. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MORE_DATA_LSB 23
  970. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_MORE_DATA_MASK 0x00800000
  971. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_EOSP
  972. In case of ndp or phy_err or Phy_err_during_mpdu_header
  973. this field will be set to 0
  974. See definition in RX attention descriptor
  975. <legal all>
  976. */
  977. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_EOSP_OFFSET 0x00000034
  978. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_EOSP_LSB 24
  979. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_EOSP_MASK 0x01000000
  980. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG
  981. In case of ndp or phy_err or Phy_err_during_mpdu_header
  982. this field will be set to 0
  983. See definition in RX attention descriptor
  984. <legal all>
  985. */
  986. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_OFFSET 0x00000034
  987. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_LSB 25
  988. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_MASK 0x02000000
  989. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ORDER
  990. In case of ndp or phy_err or Phy_err_during_mpdu_header
  991. this field will be set to 0
  992. See definition in RX attention descriptor
  993. <legal all>
  994. */
  995. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ORDER_OFFSET 0x00000034
  996. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ORDER_LSB 26
  997. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ORDER_MASK 0x04000000
  998. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER
  999. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1000. this field will be set to 0
  1001. See definition in RX attention descriptor
  1002. <legal all>
  1003. */
  1004. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_OFFSET 0x00000034
  1005. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_LSB 27
  1006. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_MASK 0x08000000
  1007. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED
  1008. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1009. this field will be set to 0
  1010. See definition in RX attention descriptor
  1011. <legal all>
  1012. */
  1013. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_OFFSET 0x00000034
  1014. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_LSB 28
  1015. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_MASK 0x10000000
  1016. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_DIRECTED
  1017. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1018. this field will be set to 0
  1019. See definition in RX attention descriptor
  1020. <legal all>
  1021. */
  1022. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_DIRECTED_OFFSET 0x00000034
  1023. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_DIRECTED_LSB 29
  1024. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_DIRECTED_MASK 0x20000000
  1025. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT
  1026. Field only valid when Mpdu_qos_control_valid is set
  1027. The 'amsdu_present' bit within the QoS control field of
  1028. the MPDU
  1029. <legal all>
  1030. */
  1031. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_OFFSET 0x00000034
  1032. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_LSB 30
  1033. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_MASK 0x40000000
  1034. /* Description RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_RESERVED_13
  1035. <legal 0>
  1036. */
  1037. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_RESERVED_13_OFFSET 0x00000034
  1038. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_RESERVED_13_LSB 31
  1039. #define RX_MPDU_START_13_RX_MPDU_INFO_DETAILS_RESERVED_13_MASK 0x80000000
  1040. /* Description RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD
  1041. Field only valid when Mpdu_frame_control_valid is set
  1042. The frame control field of this received MPDU.
  1043. Field only valid when Ndp_frame and phy_err are NOT set
  1044. Bytes 0 + 1 of the received MPDU
  1045. <legal all>
  1046. */
  1047. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_OFFSET 0x00000038
  1048. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_LSB 0
  1049. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_MASK 0x0000ffff
  1050. /* Description RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD
  1051. Field only valid when Mpdu_duration_valid is set
  1052. The duration field of this received MPDU.
  1053. <legal all>
  1054. */
  1055. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_OFFSET 0x00000038
  1056. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_LSB 16
  1057. #define RX_MPDU_START_14_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_MASK 0xffff0000
  1058. /* Description RX_MPDU_START_15_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0
  1059. Field only valid when mac_addr_ad1_valid is set
  1060. The Least Significant 4 bytes of the Received Frames MAC
  1061. Address AD1
  1062. <legal all>
  1063. */
  1064. #define RX_MPDU_START_15_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_OFFSET 0x0000003c
  1065. #define RX_MPDU_START_15_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_LSB 0
  1066. #define RX_MPDU_START_15_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_MASK 0xffffffff
  1067. /* Description RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32
  1068. Field only valid when mac_addr_ad1_valid is set
  1069. The 2 most significant bytes of the Received Frames MAC
  1070. Address AD1
  1071. <legal all>
  1072. */
  1073. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_OFFSET 0x00000040
  1074. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_LSB 0
  1075. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_MASK 0x0000ffff
  1076. /* Description RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0
  1077. Field only valid when mac_addr_ad2_valid is set
  1078. The Least Significant 2 bytes of the Received Frames MAC
  1079. Address AD2
  1080. <legal all>
  1081. */
  1082. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_OFFSET 0x00000040
  1083. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_LSB 16
  1084. #define RX_MPDU_START_16_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_MASK 0xffff0000
  1085. /* Description RX_MPDU_START_17_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16
  1086. Field only valid when mac_addr_ad2_valid is set
  1087. The 4 most significant bytes of the Received Frames MAC
  1088. Address AD2
  1089. <legal all>
  1090. */
  1091. #define RX_MPDU_START_17_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_OFFSET 0x00000044
  1092. #define RX_MPDU_START_17_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_LSB 0
  1093. #define RX_MPDU_START_17_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_MASK 0xffffffff
  1094. /* Description RX_MPDU_START_18_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0
  1095. Field only valid when mac_addr_ad3_valid is set
  1096. The Least Significant 4 bytes of the Received Frames MAC
  1097. Address AD3
  1098. <legal all>
  1099. */
  1100. #define RX_MPDU_START_18_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_OFFSET 0x00000048
  1101. #define RX_MPDU_START_18_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_LSB 0
  1102. #define RX_MPDU_START_18_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_MASK 0xffffffff
  1103. /* Description RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32
  1104. Field only valid when mac_addr_ad3_valid is set
  1105. The 2 most significant bytes of the Received Frames MAC
  1106. Address AD3
  1107. <legal all>
  1108. */
  1109. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_OFFSET 0x0000004c
  1110. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_LSB 0
  1111. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_MASK 0x0000ffff
  1112. /* Description RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD
  1113. The sequence control field of the MPDU
  1114. <legal all>
  1115. */
  1116. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET 0x0000004c
  1117. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_LSB 16
  1118. #define RX_MPDU_START_19_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_MASK 0xffff0000
  1119. /* Description RX_MPDU_START_20_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0
  1120. Field only valid when mac_addr_ad4_valid is set
  1121. The Least Significant 4 bytes of the Received Frames MAC
  1122. Address AD4
  1123. <legal all>
  1124. */
  1125. #define RX_MPDU_START_20_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_OFFSET 0x00000050
  1126. #define RX_MPDU_START_20_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_LSB 0
  1127. #define RX_MPDU_START_20_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_MASK 0xffffffff
  1128. /* Description RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32
  1129. Field only valid when mac_addr_ad4_valid is set
  1130. The 2 most significant bytes of the Received Frames MAC
  1131. Address AD4
  1132. <legal all>
  1133. */
  1134. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_OFFSET 0x00000054
  1135. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_LSB 0
  1136. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_MASK 0x0000ffff
  1137. /* Description RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD
  1138. Field only valid when mpdu_qos_control_valid is set
  1139. The sequence control field of the MPDU
  1140. <legal all>
  1141. */
  1142. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_OFFSET 0x00000054
  1143. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_LSB 16
  1144. #define RX_MPDU_START_21_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_MASK 0xffff0000
  1145. /* Description RX_MPDU_START_22_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD
  1146. Field only valid when mpdu_qos_control_valid is set
  1147. The HT control field of the MPDU
  1148. <legal all>
  1149. */
  1150. #define RX_MPDU_START_22_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_OFFSET 0x00000058
  1151. #define RX_MPDU_START_22_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_LSB 0
  1152. #define RX_MPDU_START_22_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_MASK 0xffffffff
  1153. #endif // _RX_MPDU_START_H_