rx_mpdu_start.h 83 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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_START_H_
  17. #define _RX_MPDU_START_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "rx_mpdu_info.h"
  21. #define NUM_OF_DWORDS_RX_MPDU_START 30
  22. #define NUM_OF_QWORDS_RX_MPDU_START 15
  23. struct rx_mpdu_start {
  24. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  25. struct rx_mpdu_info rx_mpdu_info_details;
  26. #else
  27. struct rx_mpdu_info rx_mpdu_info_details;
  28. #endif
  29. };
  30. /* Description RX_MPDU_INFO_DETAILS
  31. Structure containing all the MPDU header details that might
  32. be needed for other modules further down the received path
  33. */
  34. /* Description RXPT_CLASSIFY_INFO_DETAILS
  35. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  36. this field will be set to 0
  37. RXOLE related classification info
  38. <legal all
  39. */
  40. /* Description REO_DESTINATION_INDICATION
  41. The ID of the REO exit ring where the MSDU frame shall push
  42. after (MPDU level) reordering has finished.
  43. <enum 0 reo_destination_sw0> Reo will push the frame into
  44. the REO2SW0 ring
  45. <enum 1 reo_destination_sw1> Reo will push the frame into
  46. the REO2SW1 ring
  47. <enum 2 reo_destination_sw2> Reo will push the frame into
  48. the REO2SW2 ring
  49. <enum 3 reo_destination_sw3> Reo will push the frame into
  50. the REO2SW3 ring
  51. <enum 4 reo_destination_sw4> Reo will push the frame into
  52. the REO2SW4 ring
  53. <enum 5 reo_destination_release> Reo will push the frame
  54. into the REO_release ring
  55. <enum 6 reo_destination_fw> Reo will push the frame into
  56. the REO2FW ring
  57. <enum 7 reo_destination_sw5> Reo will push the frame into
  58. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  59. ring)
  60. <enum 8 reo_destination_sw6> Reo will push the frame into
  61. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  62. ring)
  63. <enum 9 reo_destination_sw7> Reo will push the frame into
  64. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  65. ring)
  66. <enum 10 reo_destination_sw8> Reo will push the frame into
  67. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  68. ring)
  69. <enum 11 reo_destination_11> REO remaps this
  70. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  71. 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_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000000000000000
  93. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  94. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  95. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x000000000000001f
  96. /* Description LMAC_PEER_ID_MSB
  97. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
  98. is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
  99. hash[3:0]} using the chosen Toeplitz hash from Common Parser
  100. if flow search fails.
  101. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
  102. 's not 2'b00, Rx OLE uses a REO desination indication of
  103. {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz
  104. hash from Common Parser if flow search fails.
  105. <legal all>
  106. */
  107. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x0000000000000000
  108. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
  109. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MSB 6
  110. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x0000000000000060
  111. /* Description USE_FLOW_ID_TOEPLITZ_CLFY
  112. Indication to Rx OLE to enable REO destination routing based
  113. on the chosen Toeplitz hash from Common Parser, in case
  114. flow search fails
  115. <legal all>
  116. */
  117. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x0000000000000000
  118. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
  119. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MSB 7
  120. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x0000000000000080
  121. /* Description PKT_SELECTION_FP_UCAST_DATA
  122. Filter pass Unicast data frame (matching rxpcu_filter_pass
  123. and sw_frame_group_Unicast_data) routing selection
  124. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  125. 1'b0: source and destination rings are selected from the
  126. RxOLE register settings for the packet type
  127. 1'b1: source ring and destination ring is selected from
  128. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  129. fields in this STRUCT
  130. <legal all>
  131. */
  132. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x0000000000000000
  133. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
  134. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MSB 8
  135. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x0000000000000100
  136. /* Description PKT_SELECTION_FP_MCAST_DATA
  137. Filter pass Multicast data frame (matching rxpcu_filter_pass
  138. and sw_frame_group_Multicast_data) routing selection
  139. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  140. 1'b0: source and destination rings are selected from the
  141. RxOLE register settings for the packet type
  142. 1'b1: source ring and destination ring is selected from
  143. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  144. fields in this STRUCT
  145. <legal all>
  146. */
  147. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x0000000000000000
  148. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
  149. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MSB 9
  150. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x0000000000000200
  151. /* Description PKT_SELECTION_FP_1000
  152. Filter pass BAR frame (matching rxpcu_filter_pass and sw_frame_group_ctrl_1000)
  153. routing selection
  154. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  155. 1'b0: source and destination rings are selected from the
  156. RxOLE register settings for the packet type
  157. 1'b1: source ring and destination ring is selected from
  158. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  159. fields in this STRUCT
  160. <legal all>
  161. */
  162. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x0000000000000000
  163. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
  164. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MSB 10
  165. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x0000000000000400
  166. /* Description RXDMA0_SOURCE_RING_SELECTION
  167. Field only valid when for the received frame type the corresponding
  168. pkt_selection_fp_... bit is set
  169. <enum 0 sw2rxdma0_0_buf_source_ring> The data buffer for
  170. this frame shall be sourced by sw2rxdma0 buffer source
  171. ring.
  172. <enum 1 fw2rxdma0_pmac0_buf_source_ring> The data buffer
  173. for this frame shall be sourced by fw2rxdma buffer source
  174. ring for PMAC0.
  175. <enum 2 sw2rxdma0_1_buf_source_ring> The data buffer for
  176. this frame shall be sourced by sw2rxdma1 buffer source
  177. ring.
  178. <enum 3 no_buffer_rxdma0_ring> The frame shall not be written
  179. to any data buffer.
  180. <enum 4 sw2rxdma0_exception_buf_source_ring> The data buffer
  181. for this frame shall be sourced by sw2rxdma_exception buffer
  182. source ring.
  183. <enum 5 fw2rxdma0_pmac1_buf_source_ring> The data buffer
  184. for this frame shall be sourced by fw2rxdma buffer source
  185. ring for PMAC1.
  186. <legal 0-5>
  187. */
  188. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x0000000000000000
  189. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
  190. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MSB 13
  191. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x0000000000003800
  192. /* Description RXDMA0_DESTINATION_RING_SELECTION
  193. Field only valid when for the received frame type the corresponding
  194. pkt_selection_fp_... bit is set
  195. <enum 0 rxdma_release_ring> RXDMA0 shall push the frame
  196. to the Release ring. Effectively this means the frame needs
  197. to be dropped.
  198. <enum 1 rxdma2fw_pmac0_ring> RXDMA0 shall push the frame
  199. to the FW ring for PMAC0.
  200. <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to the
  201. SW ring.
  202. <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to
  203. the REO entrance ring.
  204. <enum 4 rxdma2fw_pmac1_ring> RXDMA0 shall push the frame
  205. to the FW ring for PMAC1.
  206. <enum 5 rxdma2reo_remote0_ring> RXDMA0 shall push the frame
  207. to the first MLO REO entrance ring.
  208. <enum 6 rxdma2reo_remote1_ring> RXDMA0 shall push the frame
  209. to the second MLO REO entrance ring.
  210. <legal 0-6>
  211. */
  212. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x0000000000000000
  213. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 14
  214. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MSB 16
  215. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x000000000001c000
  216. /* Description MCAST_ECHO_DROP_ENABLE
  217. If set, for multicast packets, multicast echo check (i.e.
  218. SA search with mcast_echo_check = 1) shall be performed
  219. by RXOLE, and any multicast echo packets should be indicated
  220. to RXDMA for release to WBM
  221. <legal all>
  222. */
  223. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_OFFSET 0x0000000000000000
  224. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_LSB 17
  225. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_MSB 17
  226. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_MASK 0x0000000000020000
  227. /* Description WDS_LEARNING_DETECT_EN
  228. If set, WDS learning detection based on SA search and notification
  229. to FW (using RXDMA0 status ring) is enabled and the "timestamp"
  230. field in address search failure cache-only entry should
  231. be used to avoid multiple WDS learning notifications.
  232. <legal all>
  233. */
  234. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_OFFSET 0x0000000000000000
  235. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_LSB 18
  236. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_MSB 18
  237. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_MASK 0x0000000000040000
  238. /* Description INTRABSS_CHECK_EN
  239. If set, intra-BSS routing detection is enabled
  240. <legal all>
  241. */
  242. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_OFFSET 0x0000000000000000
  243. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_LSB 19
  244. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_MSB 19
  245. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_MASK 0x0000000000080000
  246. /* Description USE_PPE
  247. Indicates to RXDMA to ignore the REO_destination_indication
  248. and use a programmed value corresponding to the REO2PPE
  249. ring
  250. This override to REO2PPE for packets requiring multiple
  251. buffers shall be disabled based on an RXDMA configuration,
  252. as PPE may not support such packets.
  253. <legal all>
  254. */
  255. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_OFFSET 0x0000000000000000
  256. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_LSB 20
  257. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_MSB 20
  258. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_MASK 0x0000000000100000
  259. /* Description PPE_ROUTING_ENABLE
  260. Global enable/disable bit for routing to PPE, used to disable
  261. PPE routing even if RXOLE CCE or flow search indicate 'Use_PPE'
  262. This is set by SW for peers which are being handled by a
  263. host SW/accelerator subsystem that also handles packet
  264. buffer management for WiFi-to-PPE routing.
  265. This is cleared by SW for peers which are being handled
  266. by a different subsystem, completely disabling WiFi-to-PPE
  267. routing for such peers.
  268. <legal all>
  269. */
  270. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_OFFSET 0x0000000000000000
  271. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_LSB 21
  272. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_MSB 21
  273. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_MASK 0x0000000000200000
  274. /* Description RESERVED_0B
  275. <legal 0>
  276. */
  277. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x0000000000000000
  278. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB 22
  279. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MSB 31
  280. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK 0x00000000ffc00000
  281. /* Description RX_REO_QUEUE_DESC_ADDR_31_0
  282. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  283. this field will be set to 0
  284. Address (lower 32 bits) of the REO queue descriptor.
  285. If no Peer entry lookup happened for this frame, the value
  286. wil be set to 0, and the frame shall never be pushed to
  287. REO entrance ring.
  288. <legal all>
  289. */
  290. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x0000000000000000
  291. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 32
  292. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_MSB 63
  293. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff00000000
  294. /* Description RX_REO_QUEUE_DESC_ADDR_39_32
  295. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  296. this field will be set to 0
  297. Address (upper 8 bits) of the REO queue descriptor.
  298. If no Peer entry lookup happened for this frame, the value
  299. wil be set to 0, and the frame shall never be pushed to
  300. REO entrance ring.
  301. <legal all>
  302. */
  303. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x0000000000000008
  304. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  305. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_MSB 7
  306. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x00000000000000ff
  307. /* Description RECEIVE_QUEUE_NUMBER
  308. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  309. this field will be set to 0
  310. Indicates the MPDU queue ID to which this MPDU link descriptor
  311. belongs
  312. Used for tracking and debugging
  313. <legal all>
  314. */
  315. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000000000000008
  316. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_LSB 8
  317. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_MSB 23
  318. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RECEIVE_QUEUE_NUMBER_MASK 0x0000000000ffff00
  319. /* Description PRE_DELIM_ERR_WARNING
  320. Indicates that a delimiter FCS error was found in between
  321. the Previous MPDU and this MPDU.
  322. Note that this is just a warning, and does not mean that
  323. this MPDU is corrupted in any way. If it is, there will
  324. be other errors indicated such as FCS or decrypt errors
  325. In case of ndp or phy_err, this field will indicate at least
  326. one of delimiters located after the last MPDU in the previous
  327. PPDU has been corrupted.
  328. */
  329. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_OFFSET 0x0000000000000008
  330. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_LSB 24
  331. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_MSB 24
  332. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_ERR_WARNING_MASK 0x0000000001000000
  333. /* Description FIRST_DELIM_ERR
  334. Indicates that the first delimiter had a FCS failure. Only
  335. valid when first_mpdu and first_msdu are set.
  336. In case of ndp or phy_err, this field will never be set.
  337. */
  338. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_OFFSET 0x0000000000000008
  339. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_LSB 25
  340. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_MSB 25
  341. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_DELIM_ERR_MASK 0x0000000002000000
  342. /* Description RESERVED_2A
  343. <legal 0>
  344. */
  345. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_2A_OFFSET 0x0000000000000008
  346. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_2A_LSB 26
  347. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_2A_MSB 31
  348. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_2A_MASK 0x00000000fc000000
  349. /* Description PN_31_0
  350. Field only valid when Frame_encryption_info_valid is set
  351. Bits [31:0] of the PN number extracted from the IV field
  352. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  353. is valid.
  354. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0, WEPSeed[1],
  355. pn1}. Only pn[47:0] is valid.
  356. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0, pn1,
  357. pn0}. Only pn[47:0] is valid.
  358. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12, pn11,
  359. pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1, pn0}.
  360. pn[127:0] are valid.
  361. In case of ndp or phy_err, this field will never be set.
  362. */
  363. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_31_0_OFFSET 0x0000000000000008
  364. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_31_0_LSB 32
  365. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_31_0_MSB 63
  366. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_31_0_MASK 0xffffffff00000000
  367. /* Description PN_63_32
  368. Field only valid when Frame_encryption_info_valid is set
  369. Bits [63:32] of the PN number. See description for pn_31_0.
  370. In case of ndp or phy_err, this field will never be set.
  371. */
  372. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_63_32_OFFSET 0x0000000000000010
  373. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_63_32_LSB 0
  374. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_63_32_MSB 31
  375. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_63_32_MASK 0x00000000ffffffff
  376. /* Description PN_95_64
  377. Field only valid when Frame_encryption_info_valid is set
  378. Bits [95:64] of the PN number. See description for pn_31_0.
  379. In case of ndp or phy_err, this field will never be set.
  380. */
  381. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_95_64_OFFSET 0x0000000000000010
  382. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_95_64_LSB 32
  383. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_95_64_MSB 63
  384. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_95_64_MASK 0xffffffff00000000
  385. /* Description PN_127_96
  386. Field only valid when Frame_encryption_info_valid is set
  387. Bits [127:96] of the PN number. See description for pn_31_0.
  388. In case of ndp or phy_err, this field will never be set.
  389. */
  390. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_127_96_OFFSET 0x0000000000000018
  391. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_127_96_LSB 0
  392. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_127_96_MSB 31
  393. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PN_127_96_MASK 0x00000000ffffffff
  394. /* Description EPD_EN
  395. Field only valid when AST_based_lookup_valid == 1.
  396. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  397. this field will be set to 0
  398. If set to one use EPD instead of LPD
  399. In case of ndp or phy_err, this field will never be set.
  400. <legal all>
  401. */
  402. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EPD_EN_OFFSET 0x0000000000000018
  403. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EPD_EN_LSB 32
  404. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EPD_EN_MSB 32
  405. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EPD_EN_MASK 0x0000000100000000
  406. /* Description ALL_FRAMES_SHALL_BE_ENCRYPTED
  407. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  408. this field will be set to 0
  409. When set, all frames (data only ?) shall be encrypted. If
  410. not, RX CRYPTO shall set an error flag.
  411. <legal all>
  412. */
  413. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET 0x0000000000000018
  414. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB 33
  415. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_MSB 33
  416. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK 0x0000000200000000
  417. /* Description ENCRYPT_TYPE
  418. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  419. this field will be set to 0
  420. Indicates type of decrypt cipher used (as defined in the
  421. peer entry)
  422. <enum 0 wep_40> WEP 40-bit
  423. <enum 1 wep_104> WEP 104-bit
  424. <enum 2 tkip_no_mic> TKIP without MIC
  425. <enum 3 wep_128> WEP 128-bit
  426. <enum 4 tkip_with_mic> TKIP with MIC
  427. <enum 5 wapi> WAPI
  428. <enum 6 aes_ccmp_128> AES CCMP 128
  429. <enum 7 no_cipher> No crypto
  430. <enum 8 aes_ccmp_256> AES CCMP 256
  431. <enum 9 aes_gcmp_128> AES CCMP 128
  432. <enum 10 aes_gcmp_256> AES CCMP 256
  433. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  434. <enum 12 wep_varied_width> WEP encryption. As for WEP per
  435. keyid the key bit width can vary, the key bit width for
  436. this MPDU will be indicated in field wep_key_width_for_variable
  437. key
  438. <legal 0-12>
  439. */
  440. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_OFFSET 0x0000000000000018
  441. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_LSB 34
  442. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_MSB 37
  443. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_TYPE_MASK 0x0000003c00000000
  444. /* Description WEP_KEY_WIDTH_FOR_VARIABLE_KEY
  445. Field only valid when key_type is set to wep_varied_width.
  446. This field indicates the size of the wep key for this MPDU.
  447. <enum 0 wep_varied_width_40> WEP 40-bit
  448. <enum 1 wep_varied_width_104> WEP 104-bit
  449. <enum 2 wep_varied_width_128> WEP 128-bit
  450. <legal 0-2>
  451. */
  452. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET 0x0000000000000018
  453. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB 38
  454. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MSB 39
  455. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK 0x000000c000000000
  456. /* Description MESH_STA
  457. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  458. this field will be set to 0
  459. When set, this is a Mesh (11s) STA.
  460. The interpretation of the A-MSDU 'Length' field in the MPDU
  461. (if any) is decided by the e-numerations below.
  462. <enum 0 MESH_DISABLE>
  463. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and includes
  464. the length of Mesh Control.
  465. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and excludes
  466. the length of Mesh Control.
  467. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian and
  468. excludes the length of Mesh Control. This is 802.11s-compliant.
  469. <legal all>
  470. */
  471. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MESH_STA_OFFSET 0x0000000000000018
  472. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MESH_STA_LSB 40
  473. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MESH_STA_MSB 41
  474. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MESH_STA_MASK 0x0000030000000000
  475. /* Description BSSID_HIT
  476. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  477. this field will be set to 0
  478. When set, the BSSID of the incoming frame matched one of
  479. the 8 BSSID register values
  480. <legal all>
  481. */
  482. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_HIT_OFFSET 0x0000000000000018
  483. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_HIT_LSB 42
  484. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_HIT_MSB 42
  485. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_HIT_MASK 0x0000040000000000
  486. /* Description BSSID_NUMBER
  487. Field only valid when bssid_hit is set.
  488. This number indicates which one out of the 8 BSSID register
  489. values matched the incoming frame
  490. <legal all>
  491. */
  492. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_OFFSET 0x0000000000000018
  493. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_LSB 43
  494. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_MSB 46
  495. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BSSID_NUMBER_MASK 0x0000780000000000
  496. /* Description TID
  497. Field only valid when mpdu_qos_control_valid is set
  498. The TID field in the QoS control field
  499. <legal all>
  500. */
  501. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TID_OFFSET 0x0000000000000018
  502. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TID_LSB 47
  503. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TID_MSB 50
  504. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TID_MASK 0x0007800000000000
  505. /* Description RESERVED_7A
  506. <legal 0>
  507. */
  508. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_7A_OFFSET 0x0000000000000018
  509. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_7A_LSB 51
  510. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_7A_MSB 63
  511. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_7A_MASK 0xfff8000000000000
  512. /* Description PEER_META_DATA
  513. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  514. this field will be set to 0
  515. Meta data that SW has programmed in the Peer table entry
  516. of the transmitting STA.
  517. <legal all>
  518. */
  519. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PEER_META_DATA_OFFSET 0x0000000000000020
  520. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PEER_META_DATA_LSB 0
  521. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PEER_META_DATA_MSB 31
  522. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PEER_META_DATA_MASK 0x00000000ffffffff
  523. /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
  524. Field indicates what the reason was that this MPDU frame
  525. was allowed to come into the receive path by RXPCU
  526. <enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
  527. filter programming of rxpcu
  528. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  529. regular frame filter and would have been dropped, were
  530. it not for the frame fitting into the 'monitor_client' category.
  531. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  532. regular frame filter and also did not pass the rxpcu_monitor_client
  533. filter. It would have been dropped accept that it did pass
  534. the 'monitor_other' category.
  535. <enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
  536. the normal frame filter programming of RXPCU but additionally
  537. fit into the 'monitor_override_client' category.
  538. Note: for ndp frame, if it was expected because the preceding
  539. NDPA was filter_pass, the setting rxpcu_filter_pass will
  540. be used. This setting will also be used for every ndp frame
  541. in case Promiscuous mode is enabled.
  542. In case promiscuous is not enabled, and an NDP is not preceded
  543. by a NPDA filter pass frame, the only other setting that
  544. could appear here for the NDP is rxpcu_monitor_other.
  545. (rxpcu has a configuration bit specifically for this scenario)
  546. Note: for
  547. <legal 0-3>
  548. */
  549. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x0000000000000020
  550. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 32
  551. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 33
  552. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x0000000300000000
  553. /* Description SW_FRAME_GROUP_ID
  554. SW processes frames based on certain classifications. This
  555. field indicates to what sw classification this MPDU is
  556. mapped.
  557. The classification is given in priority order
  558. <enum 0 sw_frame_group_NDP_frame> Note: The corresponding
  559. Rxpcu_Mpdu_filter_in_category can be rxpcu_filter_pass
  560. or rxpcu_monitor_other
  561. <enum 1 sw_frame_group_Multicast_data>
  562. <enum 2 sw_frame_group_Unicast_data>
  563. <enum 3 sw_frame_group_Null_data > This includes mpdus of
  564. type Data Null.
  565. <enum 38 sw_frame_group_QoS_Null_data> This includes QoS
  566. Null frames except in UL MU or TB PPDUs.
  567. <enum 39 sw_frame_group_QoS_Null_data_TB> This includes
  568. QoS Null frames in UL MU or TB PPDUs.
  569. <enum 4 sw_frame_group_mgmt_0000 >
  570. <enum 5 sw_frame_group_mgmt_0001 >
  571. <enum 6 sw_frame_group_mgmt_0010 >
  572. <enum 7 sw_frame_group_mgmt_0011 >
  573. <enum 8 sw_frame_group_mgmt_0100 >
  574. <enum 9 sw_frame_group_mgmt_0101 >
  575. <enum 10 sw_frame_group_mgmt_0110 >
  576. <enum 11 sw_frame_group_mgmt_0111 >
  577. <enum 12 sw_frame_group_mgmt_1000 >
  578. <enum 13 sw_frame_group_mgmt_1001 >
  579. <enum 14 sw_frame_group_mgmt_1010 >
  580. <enum 15 sw_frame_group_mgmt_1011 >
  581. <enum 16 sw_frame_group_mgmt_1100 >
  582. <enum 17 sw_frame_group_mgmt_1101 >
  583. <enum 18 sw_frame_group_mgmt_1110 >
  584. <enum 19 sw_frame_group_mgmt_1111 >
  585. <enum 20 sw_frame_group_ctrl_0000 >
  586. <enum 21 sw_frame_group_ctrl_0001 >
  587. <enum 22 sw_frame_group_ctrl_0010 >
  588. <enum 23 sw_frame_group_ctrl_0011 >
  589. <enum 24 sw_frame_group_ctrl_0100 >
  590. <enum 25 sw_frame_group_ctrl_0101 >
  591. <enum 26 sw_frame_group_ctrl_0110 >
  592. <enum 27 sw_frame_group_ctrl_0111 >
  593. <enum 28 sw_frame_group_ctrl_1000 >
  594. <enum 29 sw_frame_group_ctrl_1001 >
  595. <enum 30 sw_frame_group_ctrl_1010 >
  596. <enum 31 sw_frame_group_ctrl_1011 >
  597. <enum 32 sw_frame_group_ctrl_1100 >
  598. <enum 33 sw_frame_group_ctrl_1101 >
  599. <enum 34 sw_frame_group_ctrl_1110 >
  600. <enum 35 sw_frame_group_ctrl_1111 >
  601. <enum 36 sw_frame_group_unsupported> This covers type 3
  602. and protocol version != 0
  603. Note: The corresponding Rxpcu_Mpdu_filter_in_category can
  604. only be rxpcu_monitor_other
  605. <enum 37 sw_frame_group_phy_error> PHY reported an error
  606. Note: The corresponding Rxpcu_Mpdu_filter_in_category can
  607. be rxpcu_filter_pass
  608. <legal 0-39>
  609. */
  610. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_OFFSET 0x0000000000000020
  611. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_LSB 34
  612. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_MSB 40
  613. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_FRAME_GROUP_ID_MASK 0x000001fc00000000
  614. /* Description NDP_FRAME
  615. When set, the received frame was an NDP frame, and thus
  616. there will be no MPDU data.
  617. TODO: Should this be extended to 2-bit e-num?
  618. <legal all>
  619. */
  620. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NDP_FRAME_OFFSET 0x0000000000000020
  621. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NDP_FRAME_LSB 41
  622. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NDP_FRAME_MSB 41
  623. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NDP_FRAME_MASK 0x0000020000000000
  624. /* Description PHY_ERR
  625. When set, a PHY error was received before MAC received any
  626. data, and thus there will be no MPDU data.
  627. <legal all>
  628. */
  629. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_OFFSET 0x0000000000000020
  630. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_LSB 42
  631. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_MSB 42
  632. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_MASK 0x0000040000000000
  633. /* Description PHY_ERR_DURING_MPDU_HEADER
  634. When set, a PHY error was received before MAC received the
  635. complete MPDU header which was needed for proper decoding
  636. <legal all>
  637. */
  638. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_OFFSET 0x0000000000000020
  639. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_LSB 43
  640. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_MSB 43
  641. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_ERR_DURING_MPDU_HEADER_MASK 0x0000080000000000
  642. /* Description PROTOCOL_VERSION_ERR
  643. Set when RXPCU detected a version error in the Frame control
  644. field
  645. <legal all>
  646. */
  647. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_OFFSET 0x0000000000000020
  648. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_LSB 44
  649. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_MSB 44
  650. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PROTOCOL_VERSION_ERR_MASK 0x0000100000000000
  651. /* Description AST_BASED_LOOKUP_VALID
  652. When set, AST based lookup for this frame has found a valid
  653. result.
  654. Note that for NDP frame this will never be set
  655. <legal all>
  656. */
  657. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_OFFSET 0x0000000000000020
  658. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_LSB 45
  659. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_MSB 45
  660. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_BASED_LOOKUP_VALID_MASK 0x0000200000000000
  661. /* Description RANGING
  662. When set, a ranging NDPA or a ranging NDP was received.
  663. This field is only for FW visibility. HW is not expected
  664. to take any action on this.
  665. <legal all>
  666. */
  667. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RANGING_OFFSET 0x0000000000000020
  668. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RANGING_LSB 46
  669. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RANGING_MSB 46
  670. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RANGING_MASK 0x0000400000000000
  671. /* Description RESERVED_9A
  672. <legal 0>
  673. */
  674. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_9A_OFFSET 0x0000000000000020
  675. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_9A_LSB 47
  676. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_9A_MSB 47
  677. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_9A_MASK 0x0000800000000000
  678. /* Description PHY_PPDU_ID
  679. A ppdu counter value that PHY increments for every PPDU
  680. received. The counter value wraps around
  681. <legal all>
  682. */
  683. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_OFFSET 0x0000000000000020
  684. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_LSB 48
  685. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_MSB 63
  686. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PHY_PPDU_ID_MASK 0xffff000000000000
  687. /* Description AST_INDEX
  688. This field indicates the index of the AST entry corresponding
  689. to this MPDU. It is provided by the GSE module instantiated
  690. in RXPCU.
  691. A value of 0xFFFF indicates an invalid AST index, meaning
  692. that No AST entry was found or NO AST search was performed
  693. In case of ndp or phy_err, this field will be set to 0xFFFF
  694. <legal all>
  695. */
  696. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_OFFSET 0x0000000000000028
  697. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_LSB 0
  698. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_MSB 15
  699. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_MASK 0x000000000000ffff
  700. /* Description SW_PEER_ID
  701. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  702. this field will be set to 0
  703. This field indicates a unique peer identifier. It is set
  704. equal to field 'sw_peer_id' from the AST entry
  705. <legal all>
  706. */
  707. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_PEER_ID_OFFSET 0x0000000000000028
  708. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_PEER_ID_LSB 16
  709. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_PEER_ID_MSB 31
  710. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SW_PEER_ID_MASK 0x00000000ffff0000
  711. /* Description MPDU_FRAME_CONTROL_VALID
  712. When set, the field Mpdu_Frame_control_field has valid information
  713. In case of ndp or phy_err, this field will never be set.
  714. <legal all>
  715. */
  716. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_OFFSET 0x0000000000000028
  717. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_LSB 32
  718. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_MSB 32
  719. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_VALID_MASK 0x0000000100000000
  720. /* Description MPDU_DURATION_VALID
  721. When set, the field Mpdu_duration_field has valid information
  722. In case of ndp or phy_err, this field will never be set.
  723. <legal all>
  724. */
  725. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_OFFSET 0x0000000000000028
  726. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_LSB 33
  727. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_MSB 33
  728. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_VALID_MASK 0x0000000200000000
  729. /* Description MAC_ADDR_AD1_VALID
  730. When set, the fields mac_addr_ad1_..... have valid information
  731. In case of ndp or phy_err, this field will never be set.
  732. <legal all>
  733. */
  734. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_OFFSET 0x0000000000000028
  735. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_LSB 34
  736. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_MSB 34
  737. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_VALID_MASK 0x0000000400000000
  738. /* Description MAC_ADDR_AD2_VALID
  739. When set, the fields mac_addr_ad2_..... have valid information
  740. For MPDUs without Address 2, this field will not be set.
  741. In case of ndp or phy_err, this field will never be set.
  742. <legal all>
  743. */
  744. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_OFFSET 0x0000000000000028
  745. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_LSB 35
  746. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_MSB 35
  747. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_VALID_MASK 0x0000000800000000
  748. /* Description MAC_ADDR_AD3_VALID
  749. When set, the fields mac_addr_ad3_..... have valid information
  750. For MPDUs without Address 3, this field will not be set.
  751. In case of ndp or phy_err, this field will never be set.
  752. <legal all>
  753. */
  754. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_OFFSET 0x0000000000000028
  755. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_LSB 36
  756. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_MSB 36
  757. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_VALID_MASK 0x0000001000000000
  758. /* Description MAC_ADDR_AD4_VALID
  759. When set, the fields mac_addr_ad4_..... have valid information
  760. For MPDUs without Address 4, this field will not be set.
  761. In case of ndp or phy_err, this field will never be set.
  762. <legal all>
  763. */
  764. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_OFFSET 0x0000000000000028
  765. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_LSB 37
  766. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_MSB 37
  767. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_VALID_MASK 0x0000002000000000
  768. /* Description MPDU_SEQUENCE_CONTROL_VALID
  769. When set, the fields mpdu_sequence_control_field and mpdu_sequence_number
  770. have valid information as well as field
  771. For MPDUs without a sequence control field, this field will
  772. not be set.
  773. In case of ndp or phy_err, this field will never be set.
  774. <legal all>
  775. */
  776. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_OFFSET 0x0000000000000028
  777. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_LSB 38
  778. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_MSB 38
  779. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_VALID_MASK 0x0000004000000000
  780. /* Description MPDU_QOS_CONTROL_VALID
  781. When set, the field mpdu_qos_control_field has valid information
  782. For MPDUs without a QoS control field, this field will not
  783. be set.
  784. In case of ndp or phy_err, this field will never be set.
  785. <legal all>
  786. */
  787. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_OFFSET 0x0000000000000028
  788. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_LSB 39
  789. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_MSB 39
  790. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_VALID_MASK 0x0000008000000000
  791. /* Description MPDU_HT_CONTROL_VALID
  792. When set, the field mpdu_HT_control_field has valid information
  793. For MPDUs without a HT control field, this field will not
  794. be set.
  795. In case of ndp or phy_err, this field will never be set.
  796. <legal all>
  797. */
  798. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_OFFSET 0x0000000000000028
  799. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_LSB 40
  800. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_MSB 40
  801. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_VALID_MASK 0x0000010000000000
  802. /* Description FRAME_ENCRYPTION_INFO_VALID
  803. When set, the encryption related info fields, like IV and
  804. PN are valid
  805. For MPDUs that are not encrypted, this will not be set.
  806. In case of ndp or phy_err, this field will never be set.
  807. <legal all>
  808. */
  809. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_OFFSET 0x0000000000000028
  810. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_LSB 41
  811. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_MSB 41
  812. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAME_ENCRYPTION_INFO_VALID_MASK 0x0000020000000000
  813. /* Description MPDU_FRAGMENT_NUMBER
  814. Field only valid when Mpdu_sequence_control_valid is set
  815. AND Fragment_flag is set
  816. The fragment number from the 802.11 header
  817. <legal all>
  818. */
  819. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_OFFSET 0x0000000000000028
  820. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_LSB 42
  821. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_MSB 45
  822. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAGMENT_NUMBER_MASK 0x00003c0000000000
  823. /* Description MORE_FRAGMENT_FLAG
  824. The More Fragment bit setting from the MPDU header of the
  825. received frame
  826. <legal all>
  827. */
  828. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_OFFSET 0x0000000000000028
  829. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_LSB 46
  830. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_MSB 46
  831. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_FRAGMENT_FLAG_MASK 0x0000400000000000
  832. /* Description RESERVED_11A
  833. <legal 0>
  834. */
  835. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_11A_OFFSET 0x0000000000000028
  836. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_11A_LSB 47
  837. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_11A_MSB 47
  838. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_11A_MASK 0x0000800000000000
  839. /* Description FR_DS
  840. Field only valid when Mpdu_frame_control_valid is set
  841. Set if the from DS bit is set in the frame control.
  842. <legal all>
  843. */
  844. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FR_DS_OFFSET 0x0000000000000028
  845. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FR_DS_LSB 48
  846. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FR_DS_MSB 48
  847. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FR_DS_MASK 0x0001000000000000
  848. /* Description TO_DS
  849. Field only valid when Mpdu_frame_control_valid is set
  850. Set if the to DS bit is set in the frame control.
  851. <legal all>
  852. */
  853. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TO_DS_OFFSET 0x0000000000000028
  854. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TO_DS_LSB 49
  855. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TO_DS_MSB 49
  856. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_TO_DS_MASK 0x0002000000000000
  857. /* Description ENCRYPTED
  858. Field only valid when Mpdu_frame_control_valid is set.
  859. Protected bit from the frame control.
  860. <legal all>
  861. */
  862. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPTED_OFFSET 0x0000000000000028
  863. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPTED_LSB 50
  864. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPTED_MSB 50
  865. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPTED_MASK 0x0004000000000000
  866. /* Description MPDU_RETRY
  867. Field only valid when Mpdu_frame_control_valid is set.
  868. Retry bit from the frame control. Only valid when first_msdu
  869. is set.
  870. <legal all>
  871. */
  872. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_RETRY_OFFSET 0x0000000000000028
  873. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_RETRY_LSB 51
  874. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_RETRY_MSB 51
  875. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_RETRY_MASK 0x0008000000000000
  876. /* Description MPDU_SEQUENCE_NUMBER
  877. Field only valid when Mpdu_sequence_control_valid is set.
  878. The sequence number from the 802.11 header.
  879. <legal all>
  880. */
  881. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_OFFSET 0x0000000000000028
  882. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_LSB 52
  883. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MSB 63
  884. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MASK 0xfff0000000000000
  885. /* Description KEY_ID_OCTET
  886. Field only valid when Frame_encryption_info_valid is set
  887. The key ID octet from the IV.
  888. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  889. this field will be set to 0
  890. <legal all>
  891. */
  892. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_OFFSET 0x0000000000000030
  893. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_LSB 0
  894. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_MSB 7
  895. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_KEY_ID_OCTET_MASK 0x00000000000000ff
  896. /* Description NEW_PEER_ENTRY
  897. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  898. this field will be set to 0
  899. Set if new RX_PEER_ENTRY TLV follows. If clear, RX_PEER_ENTRY
  900. doesn't follow so RX DECRYPTION module either uses old
  901. peer entry or not decrypt.
  902. <legal all>
  903. */
  904. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_OFFSET 0x0000000000000030
  905. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_LSB 8
  906. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_MSB 8
  907. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NEW_PEER_ENTRY_MASK 0x0000000000000100
  908. /* Description DECRYPT_NEEDED
  909. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  910. this field will be set to 0
  911. Set if decryption is needed.
  912. Note:
  913. When RXPCU sets bit 'ast_index_not_found' and/or ast_index_timeout',
  914. RXPCU will also ensure that this bit is NOT set
  915. CRYPTO for that reason only needs to evaluate this bit and
  916. non of the other ones.
  917. <legal all>
  918. */
  919. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_OFFSET 0x0000000000000030
  920. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_LSB 9
  921. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_MSB 9
  922. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECRYPT_NEEDED_MASK 0x0000000000000200
  923. /* Description DECAP_TYPE
  924. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  925. this field will be set to 0
  926. Used by the OLE during decapsulation.
  927. Indicates the decapsulation that HW will perform:
  928. <enum 0 RAW> No encapsulation
  929. <enum 1 Native_WiFi>
  930. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  931. <enum 3 802_3> Indicate Ethernet
  932. <legal all>
  933. */
  934. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECAP_TYPE_OFFSET 0x0000000000000030
  935. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECAP_TYPE_LSB 10
  936. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECAP_TYPE_MSB 11
  937. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DECAP_TYPE_MASK 0x0000000000000c00
  938. /* Description RX_INSERT_VLAN_C_TAG_PADDING
  939. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  940. this field will be set to 0
  941. Insert 4 byte of all zeros as VLAN tag if the rx payload
  942. does not have VLAN. Used during decapsulation.
  943. <legal all>
  944. */
  945. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET 0x0000000000000030
  946. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_LSB 12
  947. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_MSB 12
  948. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_C_TAG_PADDING_MASK 0x0000000000001000
  949. /* Description RX_INSERT_VLAN_S_TAG_PADDING
  950. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  951. this field will be set to 0
  952. Insert 4 byte of all zeros as double VLAN tag if the rx
  953. payload does not have VLAN. Used during
  954. <legal all>
  955. */
  956. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET 0x0000000000000030
  957. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_LSB 13
  958. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_MSB 13
  959. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RX_INSERT_VLAN_S_TAG_PADDING_MASK 0x0000000000002000
  960. /* Description STRIP_VLAN_C_TAG_DECAP
  961. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  962. this field will be set to 0
  963. Strip the VLAN during decapsulation. Used by the OLE.
  964. <legal all>
  965. */
  966. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_OFFSET 0x0000000000000030
  967. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_LSB 14
  968. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_MSB 14
  969. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_C_TAG_DECAP_MASK 0x0000000000004000
  970. /* Description STRIP_VLAN_S_TAG_DECAP
  971. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  972. this field will be set to 0
  973. Strip the double VLAN during decapsulation. Used by the
  974. OLE.
  975. <legal all>
  976. */
  977. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_OFFSET 0x0000000000000030
  978. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_LSB 15
  979. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_MSB 15
  980. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_STRIP_VLAN_S_TAG_DECAP_MASK 0x0000000000008000
  981. /* Description PRE_DELIM_COUNT
  982. The number of delimiters before this MPDU.
  983. Note that this number is cleared at PPDU start.
  984. If this MPDU is the first received MPDU in the PPDU and
  985. this MPDU gets filtered-in, this field will indicate the
  986. number of delimiters located after the last MPDU in the
  987. previous PPDU.
  988. If this MPDU is located after the first received MPDU in
  989. an PPDU, this field will indicate the number of delimiters
  990. located between the previous MPDU and this MPDU.
  991. In case of ndp or phy_err, this field will indicate the
  992. number of delimiters located after the last MPDU in the
  993. previous PPDU.
  994. <legal all>
  995. */
  996. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_OFFSET 0x0000000000000030
  997. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_LSB 16
  998. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_MSB 27
  999. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRE_DELIM_COUNT_MASK 0x000000000fff0000
  1000. /* Description AMPDU_FLAG
  1001. When set, received frame was part of an A-MPDU.
  1002. In case of ndp or phy_err, this field will never be set.
  1003. <legal all>
  1004. */
  1005. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_OFFSET 0x0000000000000030
  1006. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_LSB 28
  1007. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_MSB 28
  1008. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMPDU_FLAG_MASK 0x0000000010000000
  1009. /* Description BAR_FRAME
  1010. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1011. this field will be set to 0
  1012. When set, received frame is a BAR frame
  1013. <legal all>
  1014. */
  1015. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BAR_FRAME_OFFSET 0x0000000000000030
  1016. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BAR_FRAME_LSB 29
  1017. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BAR_FRAME_MSB 29
  1018. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_BAR_FRAME_MASK 0x0000000020000000
  1019. /* Description RAW_MPDU
  1020. Consumer: SW
  1021. Producer: RXOLE
  1022. RXPCU sets this field to 0 and RXOLE overwrites it.
  1023. Set to 1 by RXOLE when it has not performed any 802.11 to
  1024. Ethernet/Natvie WiFi header conversion on this MPDU.
  1025. <legal all>
  1026. */
  1027. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RAW_MPDU_OFFSET 0x0000000000000030
  1028. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RAW_MPDU_LSB 30
  1029. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RAW_MPDU_MSB 30
  1030. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RAW_MPDU_MASK 0x0000000040000000
  1031. /* Description RESERVED_12
  1032. <legal 0>
  1033. */
  1034. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_12_OFFSET 0x0000000000000030
  1035. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_12_LSB 31
  1036. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_12_MSB 31
  1037. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_12_MASK 0x0000000080000000
  1038. /* Description MPDU_LENGTH
  1039. In case of ndp or phy_err this field will be set to 0
  1040. MPDU length before decapsulation.
  1041. <legal all>
  1042. */
  1043. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_OFFSET 0x0000000000000030
  1044. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_LSB 32
  1045. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_MSB 45
  1046. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_LENGTH_MASK 0x00003fff00000000
  1047. /* Description FIRST_MPDU
  1048. See definition in RX attention descriptor
  1049. In case of ndp or phy_err, this field will be set. Note
  1050. however that there will not actually be any data contents
  1051. in the MPDU.
  1052. <legal all>
  1053. */
  1054. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_MPDU_OFFSET 0x0000000000000030
  1055. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_MPDU_LSB 46
  1056. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_MPDU_MSB 46
  1057. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FIRST_MPDU_MASK 0x0000400000000000
  1058. /* Description MCAST_BCAST
  1059. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1060. this field will be set to 0
  1061. See definition in RX attention descriptor
  1062. <legal all>
  1063. */
  1064. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MCAST_BCAST_OFFSET 0x0000000000000030
  1065. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MCAST_BCAST_LSB 47
  1066. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MCAST_BCAST_MSB 47
  1067. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MCAST_BCAST_MASK 0x0000800000000000
  1068. /* Description AST_INDEX_NOT_FOUND
  1069. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1070. this field will be set to 0
  1071. See definition in RX attention descriptor
  1072. <legal all>
  1073. */
  1074. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_OFFSET 0x0000000000000030
  1075. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_LSB 48
  1076. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_MSB 48
  1077. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_NOT_FOUND_MASK 0x0001000000000000
  1078. /* Description AST_INDEX_TIMEOUT
  1079. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1080. this field will be set to 0
  1081. See definition in RX attention descriptor
  1082. <legal all>
  1083. */
  1084. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_OFFSET 0x0000000000000030
  1085. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_LSB 49
  1086. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_MSB 49
  1087. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AST_INDEX_TIMEOUT_MASK 0x0002000000000000
  1088. /* Description POWER_MGMT
  1089. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1090. this field will be set to 0
  1091. See definition in RX attention descriptor
  1092. <legal all>
  1093. */
  1094. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_POWER_MGMT_OFFSET 0x0000000000000030
  1095. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_POWER_MGMT_LSB 50
  1096. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_POWER_MGMT_MSB 50
  1097. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_POWER_MGMT_MASK 0x0004000000000000
  1098. /* Description NON_QOS
  1099. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1100. this field will be set to 1
  1101. See definition in RX attention descriptor
  1102. <legal all>
  1103. */
  1104. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NON_QOS_OFFSET 0x0000000000000030
  1105. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NON_QOS_LSB 51
  1106. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NON_QOS_MSB 51
  1107. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NON_QOS_MASK 0x0008000000000000
  1108. /* Description NULL_DATA
  1109. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1110. this field will be set to 0
  1111. See definition in RX attention descriptor
  1112. <legal all>
  1113. */
  1114. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NULL_DATA_OFFSET 0x0000000000000030
  1115. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NULL_DATA_LSB 52
  1116. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NULL_DATA_MSB 52
  1117. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_NULL_DATA_MASK 0x0010000000000000
  1118. /* Description MGMT_TYPE
  1119. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1120. this field will be set to 0
  1121. See definition in RX attention descriptor
  1122. <legal all>
  1123. */
  1124. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MGMT_TYPE_OFFSET 0x0000000000000030
  1125. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MGMT_TYPE_LSB 53
  1126. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MGMT_TYPE_MSB 53
  1127. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MGMT_TYPE_MASK 0x0020000000000000
  1128. /* Description CTRL_TYPE
  1129. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1130. this field will be set to 0
  1131. See definition in RX attention descriptor
  1132. <legal all>
  1133. */
  1134. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_CTRL_TYPE_OFFSET 0x0000000000000030
  1135. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_CTRL_TYPE_LSB 54
  1136. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_CTRL_TYPE_MSB 54
  1137. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_CTRL_TYPE_MASK 0x0040000000000000
  1138. /* Description MORE_DATA
  1139. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1140. this field will be set to 0
  1141. See definition in RX attention descriptor
  1142. <legal all>
  1143. */
  1144. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_DATA_OFFSET 0x0000000000000030
  1145. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_DATA_LSB 55
  1146. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_DATA_MSB 55
  1147. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MORE_DATA_MASK 0x0080000000000000
  1148. /* Description EOSP
  1149. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1150. this field will be set to 0
  1151. See definition in RX attention descriptor
  1152. <legal all>
  1153. */
  1154. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EOSP_OFFSET 0x0000000000000030
  1155. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EOSP_LSB 56
  1156. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EOSP_MSB 56
  1157. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_EOSP_MASK 0x0100000000000000
  1158. /* Description FRAGMENT_FLAG
  1159. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1160. this field will be set to 0
  1161. See definition in RX attention descriptor
  1162. <legal all>
  1163. */
  1164. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_OFFSET 0x0000000000000030
  1165. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_LSB 57
  1166. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_MSB 57
  1167. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_FRAGMENT_FLAG_MASK 0x0200000000000000
  1168. /* Description ORDER
  1169. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1170. this field will be set to 0
  1171. See definition in RX attention descriptor
  1172. <legal all>
  1173. */
  1174. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ORDER_OFFSET 0x0000000000000030
  1175. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ORDER_LSB 58
  1176. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ORDER_MSB 58
  1177. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ORDER_MASK 0x0400000000000000
  1178. /* Description U_APSD_TRIGGER
  1179. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1180. this field will be set to 0
  1181. See definition in RX attention descriptor
  1182. <legal all>
  1183. */
  1184. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_OFFSET 0x0000000000000030
  1185. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_LSB 59
  1186. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_MSB 59
  1187. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_U_APSD_TRIGGER_MASK 0x0800000000000000
  1188. /* Description ENCRYPT_REQUIRED
  1189. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1190. this field will be set to 0
  1191. See definition in RX attention descriptor
  1192. <legal all>
  1193. */
  1194. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_OFFSET 0x0000000000000030
  1195. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_LSB 60
  1196. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_MSB 60
  1197. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_ENCRYPT_REQUIRED_MASK 0x1000000000000000
  1198. /* Description DIRECTED
  1199. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1200. this field will be set to 0
  1201. See definition in RX attention descriptor
  1202. <legal all>
  1203. */
  1204. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DIRECTED_OFFSET 0x0000000000000030
  1205. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DIRECTED_LSB 61
  1206. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DIRECTED_MSB 61
  1207. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_DIRECTED_MASK 0x2000000000000000
  1208. /* Description AMSDU_PRESENT
  1209. Field only valid when Mpdu_qos_control_valid is set
  1210. The 'amsdu_present' bit within the QoS control field of
  1211. the MPDU
  1212. <legal all>
  1213. */
  1214. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_OFFSET 0x0000000000000030
  1215. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_LSB 62
  1216. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_MSB 62
  1217. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AMSDU_PRESENT_MASK 0x4000000000000000
  1218. /* Description RESERVED_13
  1219. Field only valid when Mpdu_qos_control_valid is set
  1220. This indicates whether the 'Ack policy' field within the
  1221. QoS control field of the MPDU indicates 'no-Ack.'
  1222. <legal all>
  1223. */
  1224. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_13_OFFSET 0x0000000000000030
  1225. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_13_LSB 63
  1226. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_13_MSB 63
  1227. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_13_MASK 0x8000000000000000
  1228. /* Description MPDU_FRAME_CONTROL_FIELD
  1229. Field only valid when Mpdu_frame_control_valid is set
  1230. The frame control field of this received MPDU.
  1231. Field only valid when Ndp_frame and phy_err are NOT set
  1232. Bytes 0 + 1 of the received MPDU
  1233. <legal all>
  1234. */
  1235. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_OFFSET 0x0000000000000038
  1236. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_LSB 0
  1237. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_MSB 15
  1238. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_FRAME_CONTROL_FIELD_MASK 0x000000000000ffff
  1239. /* Description MPDU_DURATION_FIELD
  1240. Field only valid when Mpdu_duration_valid is set
  1241. The duration field of this received MPDU.
  1242. <legal all>
  1243. */
  1244. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_OFFSET 0x0000000000000038
  1245. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_LSB 16
  1246. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_MSB 31
  1247. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_DURATION_FIELD_MASK 0x00000000ffff0000
  1248. /* Description MAC_ADDR_AD1_31_0
  1249. Field only valid when mac_addr_ad1_valid is set
  1250. The Least Significant 4 bytes of the Received Frames MAC
  1251. Address AD1
  1252. <legal all>
  1253. */
  1254. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_OFFSET 0x0000000000000038
  1255. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_LSB 32
  1256. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_MSB 63
  1257. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_31_0_MASK 0xffffffff00000000
  1258. /* Description MAC_ADDR_AD1_47_32
  1259. Field only valid when mac_addr_ad1_valid is set
  1260. The 2 most significant bytes of the Received Frames MAC
  1261. Address AD1
  1262. <legal all>
  1263. */
  1264. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_OFFSET 0x0000000000000040
  1265. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_LSB 0
  1266. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_MSB 15
  1267. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD1_47_32_MASK 0x000000000000ffff
  1268. /* Description MAC_ADDR_AD2_15_0
  1269. Field only valid when mac_addr_ad2_valid is set
  1270. The Least Significant 2 bytes of the Received Frames MAC
  1271. Address AD2
  1272. <legal all>
  1273. */
  1274. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_OFFSET 0x0000000000000040
  1275. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_LSB 16
  1276. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_MSB 31
  1277. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_15_0_MASK 0x00000000ffff0000
  1278. /* Description MAC_ADDR_AD2_47_16
  1279. Field only valid when mac_addr_ad2_valid is set
  1280. The 4 most significant bytes of the Received Frames MAC
  1281. Address AD2
  1282. <legal all>
  1283. */
  1284. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_OFFSET 0x0000000000000040
  1285. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_LSB 32
  1286. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_MSB 63
  1287. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD2_47_16_MASK 0xffffffff00000000
  1288. /* Description MAC_ADDR_AD3_31_0
  1289. Field only valid when mac_addr_ad3_valid is set
  1290. The Least Significant 4 bytes of the Received Frames MAC
  1291. Address AD3
  1292. <legal all>
  1293. */
  1294. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_OFFSET 0x0000000000000048
  1295. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_LSB 0
  1296. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_MSB 31
  1297. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_31_0_MASK 0x00000000ffffffff
  1298. /* Description MAC_ADDR_AD3_47_32
  1299. Field only valid when mac_addr_ad3_valid is set
  1300. The 2 most significant bytes of the Received Frames MAC
  1301. Address AD3
  1302. <legal all>
  1303. */
  1304. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_OFFSET 0x0000000000000048
  1305. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_LSB 32
  1306. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_MSB 47
  1307. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD3_47_32_MASK 0x0000ffff00000000
  1308. /* Description MPDU_SEQUENCE_CONTROL_FIELD
  1309. Field only valid when mpdu_sequence_control_valid is set
  1310. The sequence control field of the MPDU
  1311. <legal all>
  1312. */
  1313. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET 0x0000000000000048
  1314. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_LSB 48
  1315. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_MSB 63
  1316. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_SEQUENCE_CONTROL_FIELD_MASK 0xffff000000000000
  1317. /* Description MAC_ADDR_AD4_31_0
  1318. Field only valid when mac_addr_ad4_valid is set
  1319. The Least Significant 4 bytes of the Received Frames MAC
  1320. Address AD4
  1321. <legal all>
  1322. */
  1323. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_OFFSET 0x0000000000000050
  1324. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_LSB 0
  1325. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_MSB 31
  1326. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_31_0_MASK 0x00000000ffffffff
  1327. /* Description MAC_ADDR_AD4_47_32
  1328. Field only valid when mac_addr_ad4_valid is set
  1329. The 2 most significant bytes of the Received Frames MAC
  1330. Address AD4
  1331. <legal all>
  1332. */
  1333. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_OFFSET 0x0000000000000050
  1334. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_LSB 32
  1335. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_MSB 47
  1336. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MAC_ADDR_AD4_47_32_MASK 0x0000ffff00000000
  1337. /* Description MPDU_QOS_CONTROL_FIELD
  1338. Field only valid when mpdu_qos_control_valid is set
  1339. The sequence control field of the MPDU
  1340. <legal all>
  1341. */
  1342. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_OFFSET 0x0000000000000050
  1343. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_LSB 48
  1344. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_MSB 63
  1345. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_QOS_CONTROL_FIELD_MASK 0xffff000000000000
  1346. /* Description MPDU_HT_CONTROL_FIELD
  1347. Field only valid when mpdu_qos_control_valid is set
  1348. The HT control field of the MPDU
  1349. <legal all>
  1350. */
  1351. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_OFFSET 0x0000000000000058
  1352. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_LSB 0
  1353. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_MSB 31
  1354. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MPDU_HT_CONTROL_FIELD_MASK 0x00000000ffffffff
  1355. /* Description VDEV_ID
  1356. Consumer: RXOLE
  1357. Producer: FW
  1358. Virtual device associated with this peer
  1359. RXOLE uses this to determine intra-BSS routing.
  1360. <legal all>
  1361. */
  1362. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_VDEV_ID_OFFSET 0x0000000000000058
  1363. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_VDEV_ID_LSB 32
  1364. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_VDEV_ID_MSB 39
  1365. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_VDEV_ID_MASK 0x000000ff00000000
  1366. /* Description SERVICE_CODE
  1367. Opaque service code between PPE and Wi-Fi
  1368. This field gets passed on by REO to PPE in the EDMA descriptor
  1369. ('REO_TO_PPE_RING').
  1370. <legal all>
  1371. */
  1372. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000000000000058
  1373. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SERVICE_CODE_LSB 40
  1374. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SERVICE_CODE_MSB 48
  1375. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SERVICE_CODE_MASK 0x0001ff0000000000
  1376. /* Description PRIORITY_VALID
  1377. This field gets passed on by REO to PPE in the EDMA descriptor
  1378. ('REO_TO_PPE_RING').
  1379. <legal all>
  1380. */
  1381. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000000000000058
  1382. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRIORITY_VALID_LSB 49
  1383. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRIORITY_VALID_MSB 49
  1384. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_PRIORITY_VALID_MASK 0x0002000000000000
  1385. /* Description SRC_INFO
  1386. Source (virtual) device/interface info. associated with
  1387. this peer
  1388. This field gets passed on by REO to PPE in the EDMA descriptor
  1389. ('REO_TO_PPE_RING').
  1390. <legal all>
  1391. */
  1392. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SRC_INFO_OFFSET 0x0000000000000058
  1393. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SRC_INFO_LSB 50
  1394. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SRC_INFO_MSB 61
  1395. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_SRC_INFO_MASK 0x3ffc000000000000
  1396. /* Description RESERVED_23A
  1397. <legal 0>
  1398. */
  1399. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_23A_OFFSET 0x0000000000000058
  1400. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_23A_LSB 62
  1401. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_23A_MSB 62
  1402. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_23A_MASK 0x4000000000000000
  1403. /* Description MULTI_LINK_ADDR_AD1_AD2_VALID
  1404. If set, Rx OLE shall convert Address1 and Address2 of received
  1405. data frames to multi-link addresses during decapsulation
  1406. to Ethernet or Native WiFi
  1407. <legal all>
  1408. */
  1409. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_AD2_VALID_OFFSET 0x0000000000000058
  1410. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_AD2_VALID_LSB 63
  1411. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_AD2_VALID_MSB 63
  1412. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_AD2_VALID_MASK 0x8000000000000000
  1413. /* Description MULTI_LINK_ADDR_AD1_31_0
  1414. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1415. Multi-link receiver address (address1), bits [31:0]
  1416. */
  1417. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_31_0_OFFSET 0x0000000000000060
  1418. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_31_0_LSB 0
  1419. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_31_0_MSB 31
  1420. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_31_0_MASK 0x00000000ffffffff
  1421. /* Description MULTI_LINK_ADDR_AD1_47_32
  1422. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1423. Multi-link receiver address (address1), bits [47:32]
  1424. */
  1425. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_47_32_OFFSET 0x0000000000000060
  1426. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_47_32_LSB 32
  1427. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_47_32_MSB 47
  1428. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD1_47_32_MASK 0x0000ffff00000000
  1429. /* Description MULTI_LINK_ADDR_AD2_15_0
  1430. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1431. Multi-link transmitter address (address2), bits [15:0]
  1432. */
  1433. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_15_0_OFFSET 0x0000000000000060
  1434. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_15_0_LSB 48
  1435. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_15_0_MSB 63
  1436. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_15_0_MASK 0xffff000000000000
  1437. /* Description MULTI_LINK_ADDR_AD2_47_16
  1438. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1439. Multi-link transmitter address (address2), bits [47:16]
  1440. */
  1441. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_47_16_OFFSET 0x0000000000000068
  1442. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_47_16_LSB 0
  1443. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_47_16_MSB 31
  1444. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_MULTI_LINK_ADDR_AD2_47_16_MASK 0x00000000ffffffff
  1445. /* Description AUTHORIZED_TO_SEND_WDS
  1446. If not set, RXDMA shall perform error-routing for WDS packets
  1447. as the sender is not authorized and might misuse WDS frame
  1448. format to inject packets with arbitrary DA/SA.
  1449. <legal all>
  1450. */
  1451. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AUTHORIZED_TO_SEND_WDS_OFFSET 0x0000000000000068
  1452. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AUTHORIZED_TO_SEND_WDS_LSB 32
  1453. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AUTHORIZED_TO_SEND_WDS_MSB 32
  1454. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_AUTHORIZED_TO_SEND_WDS_MASK 0x0000000100000000
  1455. /* Description RESERVED_27A
  1456. Bit 1: disallow_mcbc_da_in_unicast_mpdu:
  1457. If set, RX OLE shall disallow multicast/broadcast DA in
  1458. A-MSDU subframes in case of ToDS=0 MPDUs. This may be enabled
  1459. for TDLS peers.
  1460. <legal 0-1>
  1461. */
  1462. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_27A_OFFSET 0x0000000000000068
  1463. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_27A_LSB 33
  1464. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_27A_MSB 63
  1465. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_27A_MASK 0xfffffffe00000000
  1466. /* Description RESERVED_28A
  1467. <legal 0>
  1468. */
  1469. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_28A_OFFSET 0x0000000000000070
  1470. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_28A_LSB 0
  1471. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_28A_MSB 31
  1472. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_28A_MASK 0x00000000ffffffff
  1473. /* Description RESERVED_29A
  1474. <legal 0>
  1475. */
  1476. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_29A_OFFSET 0x0000000000000070
  1477. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_29A_LSB 32
  1478. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_29A_MSB 63
  1479. #define RX_MPDU_START_RX_MPDU_INFO_DETAILS_RESERVED_29A_MASK 0xffffffff00000000
  1480. #endif // RX_MPDU_START