rx_mpdu_start.h 83 KB

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