rx_msdu_end.h 123 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675
  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_MSDU_END_H_
  16. #define _RX_MSDU_END_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_RX_MSDU_END 32
  20. #define NUM_OF_QWORDS_RX_MSDU_END 16
  21. struct rx_msdu_end {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
  24. sw_frame_group_id : 7, // [8:2]
  25. reserved_0 : 7, // [15:9]
  26. phy_ppdu_id : 16; // [31:16]
  27. uint32_t ip_hdr_chksum : 16, // [15:0]
  28. reported_mpdu_length : 14, // [29:16]
  29. reserved_1a : 2; // [31:30]
  30. uint32_t reserved_2a : 8, // [7:0]
  31. cce_super_rule : 6, // [13:8]
  32. cce_classify_not_done_truncate : 1, // [14:14]
  33. cce_classify_not_done_cce_dis : 1, // [15:15]
  34. cumulative_l3_checksum : 16; // [31:16]
  35. uint32_t rule_indication_31_0 : 32; // [31:0]
  36. uint32_t ipv6_options_crc : 32; // [31:0]
  37. uint32_t da_offset : 6, // [5:0]
  38. sa_offset : 6, // [11:6]
  39. da_offset_valid : 1, // [12:12]
  40. sa_offset_valid : 1, // [13:13]
  41. reserved_5a : 2, // [15:14]
  42. l3_type : 16; // [31:16]
  43. uint32_t rule_indication_63_32 : 32; // [31:0]
  44. uint32_t tcp_seq_number : 32; // [31:0]
  45. uint32_t tcp_ack_number : 32; // [31:0]
  46. uint32_t tcp_flag : 9, // [8:0]
  47. lro_eligible : 1, // [9:9]
  48. reserved_9a : 6, // [15:10]
  49. window_size : 16; // [31:16]
  50. uint32_t sa_sw_peer_id : 16, // [15:0]
  51. sa_idx_timeout : 1, // [16:16]
  52. da_idx_timeout : 1, // [17:17]
  53. to_ds : 1, // [18:18]
  54. tid : 4, // [22:19]
  55. sa_is_valid : 1, // [23:23]
  56. da_is_valid : 1, // [24:24]
  57. da_is_mcbc : 1, // [25:25]
  58. l3_header_padding : 2, // [27:26]
  59. first_msdu : 1, // [28:28]
  60. last_msdu : 1, // [29:29]
  61. fr_ds : 1, // [30:30]
  62. ip_chksum_fail_copy : 1; // [31:31]
  63. uint32_t sa_idx : 16, // [15:0]
  64. da_idx_or_sw_peer_id : 16; // [31:16]
  65. uint32_t msdu_drop : 1, // [0:0]
  66. reo_destination_indication : 5, // [5:1]
  67. flow_idx : 20, // [25:6]
  68. use_ppe : 1, // [26:26]
  69. mesh_sta : 2, // [28:27]
  70. vlan_ctag_stripped : 1, // [29:29]
  71. vlan_stag_stripped : 1, // [30:30]
  72. fragment_flag : 1; // [31:31]
  73. uint32_t fse_metadata : 32; // [31:0]
  74. uint32_t cce_metadata : 16, // [15:0]
  75. tcp_udp_chksum : 16; // [31:16]
  76. uint32_t aggregation_count : 8, // [7:0]
  77. flow_aggregation_continuation : 1, // [8:8]
  78. fisa_timeout : 1, // [9:9]
  79. tcp_udp_chksum_fail_copy : 1, // [10:10]
  80. msdu_limit_error : 1, // [11:11]
  81. flow_idx_timeout : 1, // [12:12]
  82. flow_idx_invalid : 1, // [13:13]
  83. cce_match : 1, // [14:14]
  84. amsdu_parser_error : 1, // [15:15]
  85. cumulative_ip_length : 16; // [31:16]
  86. uint32_t key_id_octet : 8, // [7:0]
  87. reserved_16a : 24; // [31:8]
  88. uint32_t reserved_17a : 6, // [5:0]
  89. service_code : 9, // [14:6]
  90. priority_valid : 1, // [15:15]
  91. intra_bss : 1, // [16:16]
  92. dest_chip_id : 2, // [18:17]
  93. multicast_echo : 1, // [19:19]
  94. wds_learning_event : 1, // [20:20]
  95. wds_roaming_event : 1, // [21:21]
  96. wds_keep_alive_event : 1, // [22:22]
  97. dest_chip_pmac_id : 1, // [23:23]
  98. reserved_17b : 8; // [31:24]
  99. uint32_t msdu_length : 14, // [13:0]
  100. stbc : 1, // [14:14]
  101. ipsec_esp : 1, // [15:15]
  102. l3_offset : 7, // [22:16]
  103. ipsec_ah : 1, // [23:23]
  104. l4_offset : 8; // [31:24]
  105. uint32_t msdu_number : 8, // [7:0]
  106. decap_format : 2, // [9:8]
  107. ipv4_proto : 1, // [10:10]
  108. ipv6_proto : 1, // [11:11]
  109. tcp_proto : 1, // [12:12]
  110. udp_proto : 1, // [13:13]
  111. ip_frag : 1, // [14:14]
  112. tcp_only_ack : 1, // [15:15]
  113. da_is_bcast_mcast : 1, // [16:16]
  114. toeplitz_hash_sel : 2, // [18:17]
  115. ip_fixed_header_valid : 1, // [19:19]
  116. ip_extn_header_valid : 1, // [20:20]
  117. tcp_udp_header_valid : 1, // [21:21]
  118. mesh_control_present : 1, // [22:22]
  119. ldpc : 1, // [23:23]
  120. ip4_protocol_ip6_next_header : 8; // [31:24]
  121. uint32_t vlan_ctag_ci : 16, // [15:0]
  122. vlan_stag_ci : 16; // [31:16]
  123. uint32_t peer_meta_data : 32; // [31:0]
  124. uint32_t user_rssi : 8, // [7:0]
  125. pkt_type : 4, // [11:8]
  126. sgi : 2, // [13:12]
  127. rate_mcs : 4, // [17:14]
  128. receive_bandwidth : 3, // [20:18]
  129. reception_type : 3, // [23:21]
  130. mimo_ss_bitmap : 7, // [30:24]
  131. msdu_done_copy : 1; // [31:31]
  132. uint32_t flow_id_toeplitz : 32; // [31:0]
  133. uint32_t ppdu_start_timestamp_63_32 : 32; // [31:0]
  134. uint32_t sw_phy_meta_data : 32; // [31:0]
  135. uint32_t ppdu_start_timestamp_31_0 : 32; // [31:0]
  136. uint32_t toeplitz_hash_2_or_4 : 32; // [31:0]
  137. uint32_t reserved_28a : 16, // [15:0]
  138. sa_15_0 : 16; // [31:16]
  139. uint32_t sa_47_16 : 32; // [31:0]
  140. uint32_t first_mpdu : 1, // [0:0]
  141. reserved_30a : 1, // [1:1]
  142. mcast_bcast : 1, // [2:2]
  143. ast_index_not_found : 1, // [3:3]
  144. ast_index_timeout : 1, // [4:4]
  145. power_mgmt : 1, // [5:5]
  146. non_qos : 1, // [6:6]
  147. null_data : 1, // [7:7]
  148. mgmt_type : 1, // [8:8]
  149. ctrl_type : 1, // [9:9]
  150. more_data : 1, // [10:10]
  151. eosp : 1, // [11:11]
  152. a_msdu_error : 1, // [12:12]
  153. reserved_30b : 1, // [13:13]
  154. order : 1, // [14:14]
  155. wifi_parser_error : 1, // [15:15]
  156. overflow_err : 1, // [16:16]
  157. msdu_length_err : 1, // [17:17]
  158. tcp_udp_chksum_fail : 1, // [18:18]
  159. ip_chksum_fail : 1, // [19:19]
  160. sa_idx_invalid : 1, // [20:20]
  161. da_idx_invalid : 1, // [21:21]
  162. amsdu_addr_mismatch : 1, // [22:22]
  163. rx_in_tx_decrypt_byp : 1, // [23:23]
  164. encrypt_required : 1, // [24:24]
  165. directed : 1, // [25:25]
  166. buffer_fragment : 1, // [26:26]
  167. mpdu_length_err : 1, // [27:27]
  168. tkip_mic_err : 1, // [28:28]
  169. decrypt_err : 1, // [29:29]
  170. unencrypted_frame_err : 1, // [30:30]
  171. fcs_err : 1; // [31:31]
  172. uint32_t reserved_31a : 10, // [9:0]
  173. decrypt_status_code : 3, // [12:10]
  174. rx_bitmap_not_updated : 1, // [13:13]
  175. reserved_31b : 17, // [30:14]
  176. msdu_done : 1; // [31:31]
  177. #else
  178. uint32_t phy_ppdu_id : 16, // [31:16]
  179. reserved_0 : 7, // [15:9]
  180. sw_frame_group_id : 7, // [8:2]
  181. rxpcu_mpdu_filter_in_category : 2; // [1:0]
  182. uint32_t reserved_1a : 2, // [31:30]
  183. reported_mpdu_length : 14, // [29:16]
  184. ip_hdr_chksum : 16; // [15:0]
  185. uint32_t cumulative_l3_checksum : 16, // [31:16]
  186. cce_classify_not_done_cce_dis : 1, // [15:15]
  187. cce_classify_not_done_truncate : 1, // [14:14]
  188. cce_super_rule : 6, // [13:8]
  189. reserved_2a : 8; // [7:0]
  190. uint32_t rule_indication_31_0 : 32; // [31:0]
  191. uint32_t ipv6_options_crc : 32; // [31:0]
  192. uint32_t l3_type : 16, // [31:16]
  193. reserved_5a : 2, // [15:14]
  194. sa_offset_valid : 1, // [13:13]
  195. da_offset_valid : 1, // [12:12]
  196. sa_offset : 6, // [11:6]
  197. da_offset : 6; // [5:0]
  198. uint32_t rule_indication_63_32 : 32; // [31:0]
  199. uint32_t tcp_seq_number : 32; // [31:0]
  200. uint32_t tcp_ack_number : 32; // [31:0]
  201. uint32_t window_size : 16, // [31:16]
  202. reserved_9a : 6, // [15:10]
  203. lro_eligible : 1, // [9:9]
  204. tcp_flag : 9; // [8:0]
  205. uint32_t ip_chksum_fail_copy : 1, // [31:31]
  206. fr_ds : 1, // [30:30]
  207. last_msdu : 1, // [29:29]
  208. first_msdu : 1, // [28:28]
  209. l3_header_padding : 2, // [27:26]
  210. da_is_mcbc : 1, // [25:25]
  211. da_is_valid : 1, // [24:24]
  212. sa_is_valid : 1, // [23:23]
  213. tid : 4, // [22:19]
  214. to_ds : 1, // [18:18]
  215. da_idx_timeout : 1, // [17:17]
  216. sa_idx_timeout : 1, // [16:16]
  217. sa_sw_peer_id : 16; // [15:0]
  218. uint32_t da_idx_or_sw_peer_id : 16, // [31:16]
  219. sa_idx : 16; // [15:0]
  220. uint32_t fragment_flag : 1, // [31:31]
  221. vlan_stag_stripped : 1, // [30:30]
  222. vlan_ctag_stripped : 1, // [29:29]
  223. mesh_sta : 2, // [28:27]
  224. use_ppe : 1, // [26:26]
  225. flow_idx : 20, // [25:6]
  226. reo_destination_indication : 5, // [5:1]
  227. msdu_drop : 1; // [0:0]
  228. uint32_t fse_metadata : 32; // [31:0]
  229. uint32_t tcp_udp_chksum : 16, // [31:16]
  230. cce_metadata : 16; // [15:0]
  231. uint32_t cumulative_ip_length : 16, // [31:16]
  232. amsdu_parser_error : 1, // [15:15]
  233. cce_match : 1, // [14:14]
  234. flow_idx_invalid : 1, // [13:13]
  235. flow_idx_timeout : 1, // [12:12]
  236. msdu_limit_error : 1, // [11:11]
  237. tcp_udp_chksum_fail_copy : 1, // [10:10]
  238. fisa_timeout : 1, // [9:9]
  239. flow_aggregation_continuation : 1, // [8:8]
  240. aggregation_count : 8; // [7:0]
  241. uint32_t reserved_16a : 24, // [31:8]
  242. key_id_octet : 8; // [7:0]
  243. uint32_t reserved_17b : 8, // [31:24]
  244. dest_chip_pmac_id : 1, // [23:23]
  245. wds_keep_alive_event : 1, // [22:22]
  246. wds_roaming_event : 1, // [21:21]
  247. wds_learning_event : 1, // [20:20]
  248. multicast_echo : 1, // [19:19]
  249. dest_chip_id : 2, // [18:17]
  250. intra_bss : 1, // [16:16]
  251. priority_valid : 1, // [15:15]
  252. service_code : 9, // [14:6]
  253. reserved_17a : 6; // [5:0]
  254. uint32_t l4_offset : 8, // [31:24]
  255. ipsec_ah : 1, // [23:23]
  256. l3_offset : 7, // [22:16]
  257. ipsec_esp : 1, // [15:15]
  258. stbc : 1, // [14:14]
  259. msdu_length : 14; // [13:0]
  260. uint32_t ip4_protocol_ip6_next_header : 8, // [31:24]
  261. ldpc : 1, // [23:23]
  262. mesh_control_present : 1, // [22:22]
  263. tcp_udp_header_valid : 1, // [21:21]
  264. ip_extn_header_valid : 1, // [20:20]
  265. ip_fixed_header_valid : 1, // [19:19]
  266. toeplitz_hash_sel : 2, // [18:17]
  267. da_is_bcast_mcast : 1, // [16:16]
  268. tcp_only_ack : 1, // [15:15]
  269. ip_frag : 1, // [14:14]
  270. udp_proto : 1, // [13:13]
  271. tcp_proto : 1, // [12:12]
  272. ipv6_proto : 1, // [11:11]
  273. ipv4_proto : 1, // [10:10]
  274. decap_format : 2, // [9:8]
  275. msdu_number : 8; // [7:0]
  276. uint32_t vlan_stag_ci : 16, // [31:16]
  277. vlan_ctag_ci : 16; // [15:0]
  278. uint32_t peer_meta_data : 32; // [31:0]
  279. uint32_t msdu_done_copy : 1, // [31:31]
  280. mimo_ss_bitmap : 7, // [30:24]
  281. reception_type : 3, // [23:21]
  282. receive_bandwidth : 3, // [20:18]
  283. rate_mcs : 4, // [17:14]
  284. sgi : 2, // [13:12]
  285. pkt_type : 4, // [11:8]
  286. user_rssi : 8; // [7:0]
  287. uint32_t flow_id_toeplitz : 32; // [31:0]
  288. uint32_t ppdu_start_timestamp_63_32 : 32; // [31:0]
  289. uint32_t sw_phy_meta_data : 32; // [31:0]
  290. uint32_t ppdu_start_timestamp_31_0 : 32; // [31:0]
  291. uint32_t toeplitz_hash_2_or_4 : 32; // [31:0]
  292. uint32_t sa_15_0 : 16, // [31:16]
  293. reserved_28a : 16; // [15:0]
  294. uint32_t sa_47_16 : 32; // [31:0]
  295. uint32_t fcs_err : 1, // [31:31]
  296. unencrypted_frame_err : 1, // [30:30]
  297. decrypt_err : 1, // [29:29]
  298. tkip_mic_err : 1, // [28:28]
  299. mpdu_length_err : 1, // [27:27]
  300. buffer_fragment : 1, // [26:26]
  301. directed : 1, // [25:25]
  302. encrypt_required : 1, // [24:24]
  303. rx_in_tx_decrypt_byp : 1, // [23:23]
  304. amsdu_addr_mismatch : 1, // [22:22]
  305. da_idx_invalid : 1, // [21:21]
  306. sa_idx_invalid : 1, // [20:20]
  307. ip_chksum_fail : 1, // [19:19]
  308. tcp_udp_chksum_fail : 1, // [18:18]
  309. msdu_length_err : 1, // [17:17]
  310. overflow_err : 1, // [16:16]
  311. wifi_parser_error : 1, // [15:15]
  312. order : 1, // [14:14]
  313. reserved_30b : 1, // [13:13]
  314. a_msdu_error : 1, // [12:12]
  315. eosp : 1, // [11:11]
  316. more_data : 1, // [10:10]
  317. ctrl_type : 1, // [9:9]
  318. mgmt_type : 1, // [8:8]
  319. null_data : 1, // [7:7]
  320. non_qos : 1, // [6:6]
  321. power_mgmt : 1, // [5:5]
  322. ast_index_timeout : 1, // [4:4]
  323. ast_index_not_found : 1, // [3:3]
  324. mcast_bcast : 1, // [2:2]
  325. reserved_30a : 1, // [1:1]
  326. first_mpdu : 1; // [0:0]
  327. uint32_t msdu_done : 1, // [31:31]
  328. reserved_31b : 17, // [30:14]
  329. rx_bitmap_not_updated : 1, // [13:13]
  330. decrypt_status_code : 3, // [12:10]
  331. reserved_31a : 10; // [9:0]
  332. #endif
  333. };
  334. /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
  335. Field indicates what the reason was that this MPDU frame
  336. was allowed to come into the receive path by RXPCU
  337. <enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
  338. filter programming of rxpcu
  339. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  340. regular frame filter and would have been dropped, were
  341. it not for the frame fitting into the 'monitor_client' category.
  342. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  343. regular frame filter and also did not pass the rxpcu_monitor_client
  344. filter. It would have been dropped accept that it did pass
  345. the 'monitor_other' category.
  346. <enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
  347. the normal frame filter programming of RXPCU but additionally
  348. fit into the 'monitor_override_client' category.
  349. <legal 0-3>
  350. */
  351. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x0000000000000000
  352. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  353. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 1
  354. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x0000000000000003
  355. /* Description SW_FRAME_GROUP_ID
  356. SW processes frames based on certain classifications. This
  357. field indicates to what sw classification this MPDU is
  358. mapped.
  359. The classification is given in priority order
  360. <enum 0 sw_frame_group_NDP_frame>
  361. <enum 1 sw_frame_group_Multicast_data>
  362. <enum 2 sw_frame_group_Unicast_data>
  363. <enum 3 sw_frame_group_Null_data > This includes mpdus of
  364. type Data Null.
  365. Hamilton v1 included QoS Data Null as well here.
  366. <enum 38 sw_frame_group_QoS_Null_data> This includes QoS
  367. Null frames except in UL MU or TB PPDUs.
  368. <enum 39 sw_frame_group_QoS_Null_data_TB> This includes
  369. QoS Null frames in UL MU or TB PPDUs.
  370. <enum 4 sw_frame_group_mgmt_0000 >
  371. <enum 5 sw_frame_group_mgmt_0001 >
  372. <enum 6 sw_frame_group_mgmt_0010 >
  373. <enum 7 sw_frame_group_mgmt_0011 >
  374. <enum 8 sw_frame_group_mgmt_0100 >
  375. <enum 9 sw_frame_group_mgmt_0101 >
  376. <enum 10 sw_frame_group_mgmt_0110 >
  377. <enum 11 sw_frame_group_mgmt_0111 >
  378. <enum 12 sw_frame_group_mgmt_1000 >
  379. <enum 13 sw_frame_group_mgmt_1001 >
  380. <enum 14 sw_frame_group_mgmt_1010 >
  381. <enum 15 sw_frame_group_mgmt_1011 >
  382. <enum 16 sw_frame_group_mgmt_1100 >
  383. <enum 17 sw_frame_group_mgmt_1101 >
  384. <enum 18 sw_frame_group_mgmt_1110 >
  385. <enum 19 sw_frame_group_mgmt_1111 >
  386. <enum 20 sw_frame_group_ctrl_0000 >
  387. <enum 21 sw_frame_group_ctrl_0001 >
  388. <enum 22 sw_frame_group_ctrl_0010 >
  389. <enum 23 sw_frame_group_ctrl_0011 >
  390. <enum 24 sw_frame_group_ctrl_0100 >
  391. <enum 25 sw_frame_group_ctrl_0101 >
  392. <enum 26 sw_frame_group_ctrl_0110 >
  393. <enum 27 sw_frame_group_ctrl_0111 >
  394. <enum 28 sw_frame_group_ctrl_1000 >
  395. <enum 29 sw_frame_group_ctrl_1001 >
  396. <enum 30 sw_frame_group_ctrl_1010 >
  397. <enum 31 sw_frame_group_ctrl_1011 >
  398. <enum 32 sw_frame_group_ctrl_1100 >
  399. <enum 33 sw_frame_group_ctrl_1101 >
  400. <enum 34 sw_frame_group_ctrl_1110 >
  401. <enum 35 sw_frame_group_ctrl_1111 >
  402. <enum 36 sw_frame_group_unsupported> This covers type 3
  403. and protocol version != 0
  404. <enum 37 sw_frame_group_phy_error> PHY reported an error
  405. <legal 0-39>
  406. */
  407. #define RX_MSDU_END_SW_FRAME_GROUP_ID_OFFSET 0x0000000000000000
  408. #define RX_MSDU_END_SW_FRAME_GROUP_ID_LSB 2
  409. #define RX_MSDU_END_SW_FRAME_GROUP_ID_MSB 8
  410. #define RX_MSDU_END_SW_FRAME_GROUP_ID_MASK 0x00000000000001fc
  411. /* Description RESERVED_0
  412. <legal 0>
  413. */
  414. #define RX_MSDU_END_RESERVED_0_OFFSET 0x0000000000000000
  415. #define RX_MSDU_END_RESERVED_0_LSB 9
  416. #define RX_MSDU_END_RESERVED_0_MSB 15
  417. #define RX_MSDU_END_RESERVED_0_MASK 0x000000000000fe00
  418. /* Description PHY_PPDU_ID
  419. A ppdu counter value that PHY increments for every PPDU
  420. received. The counter value wraps around
  421. <legal all>
  422. */
  423. #define RX_MSDU_END_PHY_PPDU_ID_OFFSET 0x0000000000000000
  424. #define RX_MSDU_END_PHY_PPDU_ID_LSB 16
  425. #define RX_MSDU_END_PHY_PPDU_ID_MSB 31
  426. #define RX_MSDU_END_PHY_PPDU_ID_MASK 0x00000000ffff0000
  427. /* Description IP_HDR_CHKSUM
  428. This can include the IP header checksum or the pseudo header
  429. checksum used by TCP/UDP checksum.
  430. (with the first byte in the MSB and the second byte in the
  431. LSB, i.e. requiring a byte-swap for little-endian FW/SW
  432. w.r.t. the byte order in a packet)
  433. */
  434. #define RX_MSDU_END_IP_HDR_CHKSUM_OFFSET 0x0000000000000000
  435. #define RX_MSDU_END_IP_HDR_CHKSUM_LSB 32
  436. #define RX_MSDU_END_IP_HDR_CHKSUM_MSB 47
  437. #define RX_MSDU_END_IP_HDR_CHKSUM_MASK 0x0000ffff00000000
  438. /* Description REPORTED_MPDU_LENGTH
  439. MPDU length before decapsulation. Only valid when first_msdu
  440. is set. This field is taken directly from the length field
  441. of the A-MPDU delimiter or the preamble length field for
  442. non-A-MPDU frames.
  443. */
  444. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_OFFSET 0x0000000000000000
  445. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_LSB 48
  446. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MSB 61
  447. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MASK 0x3fff000000000000
  448. /* Description RESERVED_1A
  449. <legal 0>
  450. */
  451. #define RX_MSDU_END_RESERVED_1A_OFFSET 0x0000000000000000
  452. #define RX_MSDU_END_RESERVED_1A_LSB 62
  453. #define RX_MSDU_END_RESERVED_1A_MSB 63
  454. #define RX_MSDU_END_RESERVED_1A_MASK 0xc000000000000000
  455. /* Description RESERVED_2A
  456. Hamilton v1 used this for 'key_id_octet.'
  457. <legal 0>
  458. */
  459. #define RX_MSDU_END_RESERVED_2A_OFFSET 0x0000000000000008
  460. #define RX_MSDU_END_RESERVED_2A_LSB 0
  461. #define RX_MSDU_END_RESERVED_2A_MSB 7
  462. #define RX_MSDU_END_RESERVED_2A_MASK 0x00000000000000ff
  463. /* Description CCE_SUPER_RULE
  464. Indicates the super filter rule
  465. */
  466. #define RX_MSDU_END_CCE_SUPER_RULE_OFFSET 0x0000000000000008
  467. #define RX_MSDU_END_CCE_SUPER_RULE_LSB 8
  468. #define RX_MSDU_END_CCE_SUPER_RULE_MSB 13
  469. #define RX_MSDU_END_CCE_SUPER_RULE_MASK 0x0000000000003f00
  470. /* Description CCE_CLASSIFY_NOT_DONE_TRUNCATE
  471. Classification failed due to truncated frame
  472. */
  473. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_OFFSET 0x0000000000000008
  474. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_LSB 14
  475. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MSB 14
  476. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MASK 0x0000000000004000
  477. /* Description CCE_CLASSIFY_NOT_DONE_CCE_DIS
  478. Classification failed due to CCE global disable
  479. */
  480. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_OFFSET 0x0000000000000008
  481. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_LSB 15
  482. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MSB 15
  483. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MASK 0x0000000000008000
  484. /* Description CUMULATIVE_L3_CHECKSUM
  485. FISA: IP header checksum including the total MSDU length
  486. that is part of this flow aggregated so far, reported if
  487. 'RXOLE_R0_FISA_CTRL. CHKSUM_CUM_IP_LEN_EN' is set
  488. Set to zero in chips not supporting FISA, e.g. Pine
  489. <legal all>
  490. */
  491. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_OFFSET 0x0000000000000008
  492. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_LSB 16
  493. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MSB 31
  494. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MASK 0x00000000ffff0000
  495. /* Description RULE_INDICATION_31_0
  496. Bitmap indicating which of rules 31-0 have matched
  497. In chips with more than 64 CCE rules, e.g. Waikiki, RXOLE
  498. shall have a configuration to report any two rule_indication_*
  499. in 'RX_MSDU_END.'
  500. */
  501. #define RX_MSDU_END_RULE_INDICATION_31_0_OFFSET 0x0000000000000008
  502. #define RX_MSDU_END_RULE_INDICATION_31_0_LSB 32
  503. #define RX_MSDU_END_RULE_INDICATION_31_0_MSB 63
  504. #define RX_MSDU_END_RULE_INDICATION_31_0_MASK 0xffffffff00000000
  505. /* Description IPV6_OPTIONS_CRC
  506. 32 bit CRC computed out of IP v6 extension headers
  507. Hamilton v1 used this for 'rule_indication_63_32.'
  508. */
  509. #define RX_MSDU_END_IPV6_OPTIONS_CRC_OFFSET 0x0000000000000010
  510. #define RX_MSDU_END_IPV6_OPTIONS_CRC_LSB 0
  511. #define RX_MSDU_END_IPV6_OPTIONS_CRC_MSB 31
  512. #define RX_MSDU_END_IPV6_OPTIONS_CRC_MASK 0x00000000ffffffff
  513. /* Description DA_OFFSET
  514. Offset into MSDU buffer for DA
  515. */
  516. #define RX_MSDU_END_DA_OFFSET_OFFSET 0x0000000000000010
  517. #define RX_MSDU_END_DA_OFFSET_LSB 32
  518. #define RX_MSDU_END_DA_OFFSET_MSB 37
  519. #define RX_MSDU_END_DA_OFFSET_MASK 0x0000003f00000000
  520. /* Description SA_OFFSET
  521. Offset into MSDU buffer for SA
  522. */
  523. #define RX_MSDU_END_SA_OFFSET_OFFSET 0x0000000000000010
  524. #define RX_MSDU_END_SA_OFFSET_LSB 38
  525. #define RX_MSDU_END_SA_OFFSET_MSB 43
  526. #define RX_MSDU_END_SA_OFFSET_MASK 0x00000fc000000000
  527. /* Description DA_OFFSET_VALID
  528. da_offset field is valid. This will be set to 0 in case
  529. of a dynamic A-MSDU when DA is compressed
  530. */
  531. #define RX_MSDU_END_DA_OFFSET_VALID_OFFSET 0x0000000000000010
  532. #define RX_MSDU_END_DA_OFFSET_VALID_LSB 44
  533. #define RX_MSDU_END_DA_OFFSET_VALID_MSB 44
  534. #define RX_MSDU_END_DA_OFFSET_VALID_MASK 0x0000100000000000
  535. /* Description SA_OFFSET_VALID
  536. sa_offset field is valid. This will be set to 0 in case
  537. of a dynamic A-MSDU when SA is compressed
  538. */
  539. #define RX_MSDU_END_SA_OFFSET_VALID_OFFSET 0x0000000000000010
  540. #define RX_MSDU_END_SA_OFFSET_VALID_LSB 45
  541. #define RX_MSDU_END_SA_OFFSET_VALID_MSB 45
  542. #define RX_MSDU_END_SA_OFFSET_VALID_MASK 0x0000200000000000
  543. /* Description RESERVED_5A
  544. <legal 0>
  545. */
  546. #define RX_MSDU_END_RESERVED_5A_OFFSET 0x0000000000000010
  547. #define RX_MSDU_END_RESERVED_5A_LSB 46
  548. #define RX_MSDU_END_RESERVED_5A_MSB 47
  549. #define RX_MSDU_END_RESERVED_5A_MASK 0x0000c00000000000
  550. /* Description L3_TYPE
  551. The 16-bit type value indicating the type of L3 later extracted
  552. from LLC/SNAP, set to zero if SNAP is not available
  553. */
  554. #define RX_MSDU_END_L3_TYPE_OFFSET 0x0000000000000010
  555. #define RX_MSDU_END_L3_TYPE_LSB 48
  556. #define RX_MSDU_END_L3_TYPE_MSB 63
  557. #define RX_MSDU_END_L3_TYPE_MASK 0xffff000000000000
  558. /* Description RULE_INDICATION_63_32
  559. Bitmap indicating which of rules 63-32 have matched
  560. In chips with more than 64 CCE rules, e.g. Waikiki, RXOLE
  561. shall have a configuration to report any two rule_indication_*
  562. in 'RX_MSDU_END.'
  563. Hamilton v1 used this for 'IPv6_options_crc.'
  564. */
  565. #define RX_MSDU_END_RULE_INDICATION_63_32_OFFSET 0x0000000000000018
  566. #define RX_MSDU_END_RULE_INDICATION_63_32_LSB 0
  567. #define RX_MSDU_END_RULE_INDICATION_63_32_MSB 31
  568. #define RX_MSDU_END_RULE_INDICATION_63_32_MASK 0x00000000ffffffff
  569. /* Description TCP_SEQ_NUMBER
  570. TCP sequence number (as a number assembled from a TCP packet
  571. in big-endian order, i.e. requiring a byte-swap for little-endian
  572. FW/SW w.r.t. the byte order in a packet)
  573. In Pine, if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  574. is set, toeplitz_hash_2_or_4 from 'RX_MSDU_START' will be
  575. reported here:
  576. Controlled by multiple RxOLE registers for TCP/UDP over
  577. IPv4/IPv6 - Either Toeplitz hash computed over 2-tuple IPv4
  578. or IPv6 src/dest addresses is reported; or, Toeplitz hash
  579. computed over 4-tuple IPv4 or IPv6 src/dest addresses and
  580. src/dest ports is reported. The Flow_id_toeplitz hash can
  581. also be reported here. Usually the hash reported here is
  582. the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
  583. in 'RXPT_CLASSIFY_INFO'). Optionally the 3-tuple Toeplitz
  584. hash over IPv4 or IPv6 src/dest addresses and L4 protocol
  585. can be reported here.
  586. (Unsupported in HastingsPrime)
  587. */
  588. #define RX_MSDU_END_TCP_SEQ_NUMBER_OFFSET 0x0000000000000018
  589. #define RX_MSDU_END_TCP_SEQ_NUMBER_LSB 32
  590. #define RX_MSDU_END_TCP_SEQ_NUMBER_MSB 63
  591. #define RX_MSDU_END_TCP_SEQ_NUMBER_MASK 0xffffffff00000000
  592. /* Description TCP_ACK_NUMBER
  593. TCP acknowledge number (as a number assembled from a TCP
  594. packet in big-endian order, i.e. requiring a byte-swap
  595. for little-endian FW/SW w.r.t. the byte order in a packet)
  596. In Pine, if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  597. is set, flow_id_toeplitz from 'RX_MSDU_START' will be reported
  598. here:
  599. Toeplitz hash of 5-tuple {IP source address, IP destination
  600. address, IP source port, IP destination port, L4 protocol}
  601. in case of non-IPSec. In case of IPSec - Toeplitz hash
  602. of 4-tuple {IP source address, IP destination address, SPI,
  603. L4 protocol}. Optionally the 3-tuple Toeplitz hash over
  604. IPv4 or IPv6 src/dest addresses and L4 protocol can be reported
  605. here.
  606. The relevant Toeplitz key registers are provided in RxOLE's
  607. instance of common parser module. These registers are separate
  608. from the Toeplitz keys used by ASE/FSE modules inside RxOLE.
  609. The actual value will be passed on from common parser module
  610. to RxOLE in one of the WHO_* TLVs.
  611. (Unsupported in HastingsPrime)
  612. */
  613. #define RX_MSDU_END_TCP_ACK_NUMBER_OFFSET 0x0000000000000020
  614. #define RX_MSDU_END_TCP_ACK_NUMBER_LSB 0
  615. #define RX_MSDU_END_TCP_ACK_NUMBER_MSB 31
  616. #define RX_MSDU_END_TCP_ACK_NUMBER_MASK 0x00000000ffffffff
  617. /* Description TCP_FLAG
  618. TCP flags
  619. {NS,CWR,ECE,URG,ACK,PSH, RST ,SYN,FIN}(with the NS bit in
  620. bit 8 and the FIN bit in bit 0, i.e. in big-endian order,
  621. i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
  622. the byte order in a packet)
  623. */
  624. #define RX_MSDU_END_TCP_FLAG_OFFSET 0x0000000000000020
  625. #define RX_MSDU_END_TCP_FLAG_LSB 32
  626. #define RX_MSDU_END_TCP_FLAG_MSB 40
  627. #define RX_MSDU_END_TCP_FLAG_MASK 0x000001ff00000000
  628. /* Description LRO_ELIGIBLE
  629. Computed out of TCP and IP fields to indicate that this
  630. MSDU is eligible for LRO
  631. */
  632. #define RX_MSDU_END_LRO_ELIGIBLE_OFFSET 0x0000000000000020
  633. #define RX_MSDU_END_LRO_ELIGIBLE_LSB 41
  634. #define RX_MSDU_END_LRO_ELIGIBLE_MSB 41
  635. #define RX_MSDU_END_LRO_ELIGIBLE_MASK 0x0000020000000000
  636. /* Description RESERVED_9A
  637. NOTE: DO not assign a field... Internally used in RXOLE..
  638. <legal 0>
  639. */
  640. #define RX_MSDU_END_RESERVED_9A_OFFSET 0x0000000000000020
  641. #define RX_MSDU_END_RESERVED_9A_LSB 42
  642. #define RX_MSDU_END_RESERVED_9A_MSB 47
  643. #define RX_MSDU_END_RESERVED_9A_MASK 0x0000fc0000000000
  644. /* Description WINDOW_SIZE
  645. TCP receive window size (as a number assembled from a TCP
  646. packet in big-endian order, i.e. requiring a byte-swap
  647. for little-endian FW/SW w.r.t. the byte order in a packet)
  648. In Pine, if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  649. is set, msdu_length from 'RX_MSDU_START' will be reported
  650. in the 14 LSBs here:
  651. MSDU length in bytes after decapsulation. This field is
  652. still valid for MPDU frames without A-MSDU. It still represents
  653. MSDU length after decapsulation.
  654. (Unsupported in HastingsPrime)
  655. */
  656. #define RX_MSDU_END_WINDOW_SIZE_OFFSET 0x0000000000000020
  657. #define RX_MSDU_END_WINDOW_SIZE_LSB 48
  658. #define RX_MSDU_END_WINDOW_SIZE_MSB 63
  659. #define RX_MSDU_END_WINDOW_SIZE_MASK 0xffff000000000000
  660. /* Description SA_SW_PEER_ID
  661. sw_peer_id from the address search entry corresponding to
  662. the source address of the MSDU
  663. Hamilton v1 used this for 'tcp_udp_chksum.'
  664. <legal all>
  665. */
  666. #define RX_MSDU_END_SA_SW_PEER_ID_OFFSET 0x0000000000000028
  667. #define RX_MSDU_END_SA_SW_PEER_ID_LSB 0
  668. #define RX_MSDU_END_SA_SW_PEER_ID_MSB 15
  669. #define RX_MSDU_END_SA_SW_PEER_ID_MASK 0x000000000000ffff
  670. /* Description SA_IDX_TIMEOUT
  671. Indicates an unsuccessful MAC source address search due
  672. to the expiring of the search timer.
  673. */
  674. #define RX_MSDU_END_SA_IDX_TIMEOUT_OFFSET 0x0000000000000028
  675. #define RX_MSDU_END_SA_IDX_TIMEOUT_LSB 16
  676. #define RX_MSDU_END_SA_IDX_TIMEOUT_MSB 16
  677. #define RX_MSDU_END_SA_IDX_TIMEOUT_MASK 0x0000000000010000
  678. /* Description DA_IDX_TIMEOUT
  679. Indicates an unsuccessful MAC destination address search
  680. due to the expiring of the search timer.
  681. */
  682. #define RX_MSDU_END_DA_IDX_TIMEOUT_OFFSET 0x0000000000000028
  683. #define RX_MSDU_END_DA_IDX_TIMEOUT_LSB 17
  684. #define RX_MSDU_END_DA_IDX_TIMEOUT_MSB 17
  685. #define RX_MSDU_END_DA_IDX_TIMEOUT_MASK 0x0000000000020000
  686. /* Description TO_DS
  687. Set if the to DS bit is set in the frame control.
  688. RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
  689. Hamilton v1 used this for 'msdu_limit_error.'
  690. <legal all>
  691. */
  692. #define RX_MSDU_END_TO_DS_OFFSET 0x0000000000000028
  693. #define RX_MSDU_END_TO_DS_LSB 18
  694. #define RX_MSDU_END_TO_DS_MSB 18
  695. #define RX_MSDU_END_TO_DS_MASK 0x0000000000040000
  696. /* Description TID
  697. The TID field in the QoS control field
  698. Hamilton v1 used bit [19] for 'flow_idx_timeout,' bit [20]
  699. for 'flow_idx_invalid,' bit [21] for 'wifi_parser_error'
  700. and bit [22] for 'amsdu_parser_error.'
  701. <legal all>
  702. */
  703. #define RX_MSDU_END_TID_OFFSET 0x0000000000000028
  704. #define RX_MSDU_END_TID_LSB 19
  705. #define RX_MSDU_END_TID_MSB 22
  706. #define RX_MSDU_END_TID_MASK 0x0000000000780000
  707. /* Description SA_IS_VALID
  708. Indicates that OLE found a valid SA entry
  709. */
  710. #define RX_MSDU_END_SA_IS_VALID_OFFSET 0x0000000000000028
  711. #define RX_MSDU_END_SA_IS_VALID_LSB 23
  712. #define RX_MSDU_END_SA_IS_VALID_MSB 23
  713. #define RX_MSDU_END_SA_IS_VALID_MASK 0x0000000000800000
  714. /* Description DA_IS_VALID
  715. Indicates that OLE found a valid DA entry
  716. */
  717. #define RX_MSDU_END_DA_IS_VALID_OFFSET 0x0000000000000028
  718. #define RX_MSDU_END_DA_IS_VALID_LSB 24
  719. #define RX_MSDU_END_DA_IS_VALID_MSB 24
  720. #define RX_MSDU_END_DA_IS_VALID_MASK 0x0000000001000000
  721. /* Description DA_IS_MCBC
  722. Field Only valid if "da_is_valid" is set
  723. Indicates the DA address was a Multicast of Broadcast address.
  724. */
  725. #define RX_MSDU_END_DA_IS_MCBC_OFFSET 0x0000000000000028
  726. #define RX_MSDU_END_DA_IS_MCBC_LSB 25
  727. #define RX_MSDU_END_DA_IS_MCBC_MSB 25
  728. #define RX_MSDU_END_DA_IS_MCBC_MASK 0x0000000002000000
  729. /* Description L3_HEADER_PADDING
  730. Number of bytes padded to make sure that the L3 header
  731. will always start of a Dword boundary
  732. */
  733. #define RX_MSDU_END_L3_HEADER_PADDING_OFFSET 0x0000000000000028
  734. #define RX_MSDU_END_L3_HEADER_PADDING_LSB 26
  735. #define RX_MSDU_END_L3_HEADER_PADDING_MSB 27
  736. #define RX_MSDU_END_L3_HEADER_PADDING_MASK 0x000000000c000000
  737. /* Description FIRST_MSDU
  738. Indicates the first MSDU of A-MSDU. If both first_msdu
  739. and last_msdu are set in the MSDU then this is a non-aggregated
  740. MSDU frame: normal MPDU. Interior MSDU in an A-MSDU shall
  741. have both first_mpdu and last_mpdu bits set to 0.
  742. */
  743. #define RX_MSDU_END_FIRST_MSDU_OFFSET 0x0000000000000028
  744. #define RX_MSDU_END_FIRST_MSDU_LSB 28
  745. #define RX_MSDU_END_FIRST_MSDU_MSB 28
  746. #define RX_MSDU_END_FIRST_MSDU_MASK 0x0000000010000000
  747. /* Description LAST_MSDU
  748. Indicates the last MSDU of the A-MSDU. MPDU end status
  749. is only valid when last_msdu is set.
  750. */
  751. #define RX_MSDU_END_LAST_MSDU_OFFSET 0x0000000000000028
  752. #define RX_MSDU_END_LAST_MSDU_LSB 29
  753. #define RX_MSDU_END_LAST_MSDU_MSB 29
  754. #define RX_MSDU_END_LAST_MSDU_MASK 0x0000000020000000
  755. /* Description FR_DS
  756. Set if the from DS bit is set in the frame control.
  757. RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
  758. Hamilton v1 used this for 'tcp_udp_chksum_fail_copy.'
  759. <legal all>
  760. */
  761. #define RX_MSDU_END_FR_DS_OFFSET 0x0000000000000028
  762. #define RX_MSDU_END_FR_DS_LSB 30
  763. #define RX_MSDU_END_FR_DS_MSB 30
  764. #define RX_MSDU_END_FR_DS_MASK 0x0000000040000000
  765. /* Description IP_CHKSUM_FAIL_COPY
  766. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
  767. ip_chksum_fail from 'RX_ATTENTION' will be reported in the
  768. MSB here:
  769. Indicates that the computed checksum (ip_hdr_chksum) did
  770. not match the checksum in the IP header.
  771. (unsupported in HastingsPrime)
  772. */
  773. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_OFFSET 0x0000000000000028
  774. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_LSB 31
  775. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MSB 31
  776. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MASK 0x0000000080000000
  777. /* Description SA_IDX
  778. The offset in the address table which matches the MAC source
  779. address.
  780. */
  781. #define RX_MSDU_END_SA_IDX_OFFSET 0x0000000000000028
  782. #define RX_MSDU_END_SA_IDX_LSB 32
  783. #define RX_MSDU_END_SA_IDX_MSB 47
  784. #define RX_MSDU_END_SA_IDX_MASK 0x0000ffff00000000
  785. /* Description DA_IDX_OR_SW_PEER_ID
  786. Based on a register configuration in RXOLE, this field will
  787. contain:
  788. The offset in the address table which matches the MAC destination
  789. address
  790. OR:
  791. sw_peer_id from the address search entry corresponding to
  792. the destination address of the MSDU
  793. */
  794. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_OFFSET 0x0000000000000028
  795. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_LSB 48
  796. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MSB 63
  797. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MASK 0xffff000000000000
  798. /* Description MSDU_DROP
  799. When set, REO shall drop this MSDU and not forward it to
  800. any other ring...
  801. <legal all>
  802. */
  803. #define RX_MSDU_END_MSDU_DROP_OFFSET 0x0000000000000030
  804. #define RX_MSDU_END_MSDU_DROP_LSB 0
  805. #define RX_MSDU_END_MSDU_DROP_MSB 0
  806. #define RX_MSDU_END_MSDU_DROP_MASK 0x0000000000000001
  807. /* Description REO_DESTINATION_INDICATION
  808. The ID of the REO exit ring where the MSDU frame shall push
  809. after (MPDU level) reordering has finished.
  810. <enum 0 reo_destination_sw0> Reo will push the frame into
  811. the REO2SW0 ring
  812. <enum 1 reo_destination_sw1> Reo will push the frame into
  813. the REO2SW1 ring
  814. <enum 2 reo_destination_sw2> Reo will push the frame into
  815. the REO2SW2 ring
  816. <enum 3 reo_destination_sw3> Reo will push the frame into
  817. the REO2SW3 ring
  818. <enum 4 reo_destination_sw4> Reo will push the frame into
  819. the REO2SW4 ring
  820. <enum 5 reo_destination_release> Reo will push the frame
  821. into the REO_release ring
  822. <enum 6 reo_destination_fw> Reo will push the frame into
  823. the REO2FW ring
  824. <enum 7 reo_destination_sw5> Reo will push the frame into
  825. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  826. ring, e.g. Pine)
  827. <enum 8 reo_destination_sw6> Reo will push the frame into
  828. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  829. ring, e.g. Pine)
  830. <enum 9 reo_destination_sw7> Reo will push the frame into
  831. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  832. ring)
  833. <enum 10 reo_destination_sw8> Reo will push the frame into
  834. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  835. ring)
  836. <enum 11 reo_destination_11> REO remaps this
  837. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  838. REO remaps this
  839. <enum 14 reo_destination_14> REO remaps this
  840. <enum 15 reo_destination_15> REO remaps this
  841. <enum 16 reo_destination_16> REO remaps this
  842. <enum 17 reo_destination_17> REO remaps this
  843. <enum 18 reo_destination_18> REO remaps this
  844. <enum 19 reo_destination_19> REO remaps this
  845. <enum 20 reo_destination_20> REO remaps this
  846. <enum 21 reo_destination_21> REO remaps this
  847. <enum 22 reo_destination_22> REO remaps this
  848. <enum 23 reo_destination_23> REO remaps this
  849. <enum 24 reo_destination_24> REO remaps this
  850. <enum 25 reo_destination_25> REO remaps this
  851. <enum 26 reo_destination_26> REO remaps this
  852. <enum 27 reo_destination_27> REO remaps this
  853. <enum 28 reo_destination_28> REO remaps this
  854. <enum 29 reo_destination_29> REO remaps this
  855. <enum 30 reo_destination_30> REO remaps this
  856. <enum 31 reo_destination_31> REO remaps this
  857. <legal all>
  858. */
  859. #define RX_MSDU_END_REO_DESTINATION_INDICATION_OFFSET 0x0000000000000030
  860. #define RX_MSDU_END_REO_DESTINATION_INDICATION_LSB 1
  861. #define RX_MSDU_END_REO_DESTINATION_INDICATION_MSB 5
  862. #define RX_MSDU_END_REO_DESTINATION_INDICATION_MASK 0x000000000000003e
  863. /* Description FLOW_IDX
  864. Flow table index
  865. <legal all>
  866. */
  867. #define RX_MSDU_END_FLOW_IDX_OFFSET 0x0000000000000030
  868. #define RX_MSDU_END_FLOW_IDX_LSB 6
  869. #define RX_MSDU_END_FLOW_IDX_MSB 25
  870. #define RX_MSDU_END_FLOW_IDX_MASK 0x0000000003ffffc0
  871. /* Description USE_PPE
  872. Indicates to RXDMA to ignore the REO_destination_indication
  873. and use a programmed value corresponding to the REO2PPE
  874. ring
  875. This override to REO2PPE for packets requiring multiple
  876. buffers shall be disabled based on an RXDMA configuration,
  877. as PPE may not support such packets.
  878. <legal all>
  879. */
  880. #define RX_MSDU_END_USE_PPE_OFFSET 0x0000000000000030
  881. #define RX_MSDU_END_USE_PPE_LSB 26
  882. #define RX_MSDU_END_USE_PPE_MSB 26
  883. #define RX_MSDU_END_USE_PPE_MASK 0x0000000004000000
  884. /* Description MESH_STA
  885. When set, this is a Mesh (11s) STA.
  886. The interpretation of the A-MSDU 'Length' field in the MPDU
  887. (if any) is decided by the e-numerations below.
  888. <enum 0 MESH_DISABLE>
  889. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and includes
  890. the length of Mesh Control.
  891. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and excludes
  892. the length of Mesh Control.
  893. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian and
  894. excludes the length of Mesh Control. This is 802.11s-compliant.
  895. <legal all>
  896. */
  897. #define RX_MSDU_END_MESH_STA_OFFSET 0x0000000000000030
  898. #define RX_MSDU_END_MESH_STA_LSB 27
  899. #define RX_MSDU_END_MESH_STA_MSB 28
  900. #define RX_MSDU_END_MESH_STA_MASK 0x0000000018000000
  901. /* Description VLAN_CTAG_STRIPPED
  902. Set by RXOLE if it stripped 4-bytes of C-VLAN Tag from the
  903. packet
  904. <legal all>
  905. */
  906. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_OFFSET 0x0000000000000030
  907. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_LSB 29
  908. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MSB 29
  909. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MASK 0x0000000020000000
  910. /* Description VLAN_STAG_STRIPPED
  911. Set by RXOLE if it stripped 4-bytes of S-VLAN Tag from the
  912. packet
  913. <legal all>
  914. */
  915. #define RX_MSDU_END_VLAN_STAG_STRIPPED_OFFSET 0x0000000000000030
  916. #define RX_MSDU_END_VLAN_STAG_STRIPPED_LSB 30
  917. #define RX_MSDU_END_VLAN_STAG_STRIPPED_MSB 30
  918. #define RX_MSDU_END_VLAN_STAG_STRIPPED_MASK 0x0000000040000000
  919. /* Description FRAGMENT_FLAG
  920. Indicates that this is an 802.11 fragment frame. This is
  921. set when either the more_frag bit is set in the frame control
  922. or the fragment number is not zero. Only set when first_msdu
  923. is set.
  924. */
  925. #define RX_MSDU_END_FRAGMENT_FLAG_OFFSET 0x0000000000000030
  926. #define RX_MSDU_END_FRAGMENT_FLAG_LSB 31
  927. #define RX_MSDU_END_FRAGMENT_FLAG_MSB 31
  928. #define RX_MSDU_END_FRAGMENT_FLAG_MASK 0x0000000080000000
  929. /* Description FSE_METADATA
  930. FSE related meta data:
  931. <legal all>
  932. */
  933. #define RX_MSDU_END_FSE_METADATA_OFFSET 0x0000000000000030
  934. #define RX_MSDU_END_FSE_METADATA_LSB 32
  935. #define RX_MSDU_END_FSE_METADATA_MSB 63
  936. #define RX_MSDU_END_FSE_METADATA_MASK 0xffffffff00000000
  937. /* Description CCE_METADATA
  938. CCE related meta data:
  939. <legal all>
  940. */
  941. #define RX_MSDU_END_CCE_METADATA_OFFSET 0x0000000000000038
  942. #define RX_MSDU_END_CCE_METADATA_LSB 0
  943. #define RX_MSDU_END_CCE_METADATA_MSB 15
  944. #define RX_MSDU_END_CCE_METADATA_MASK 0x000000000000ffff
  945. /* Description TCP_UDP_CHKSUM
  946. The value of the computed TCP/UDP checksum. A mode bit
  947. selects whether this checksum is the full checksum or the
  948. partial checksum which does not include the pseudo header. (with
  949. the first byte in the MSB and the second byte in the LSB,
  950. i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
  951. the byte order in a packet)
  952. Hamilton v1 used this for 'sa_sw_peer_id.'
  953. */
  954. #define RX_MSDU_END_TCP_UDP_CHKSUM_OFFSET 0x0000000000000038
  955. #define RX_MSDU_END_TCP_UDP_CHKSUM_LSB 16
  956. #define RX_MSDU_END_TCP_UDP_CHKSUM_MSB 31
  957. #define RX_MSDU_END_TCP_UDP_CHKSUM_MASK 0x00000000ffff0000
  958. /* Description AGGREGATION_COUNT
  959. FISA: Number of MSDU's aggregated so far
  960. Set to zero in chips not supporting FISA, e.g. Pine
  961. <legal all>
  962. */
  963. #define RX_MSDU_END_AGGREGATION_COUNT_OFFSET 0x0000000000000038
  964. #define RX_MSDU_END_AGGREGATION_COUNT_LSB 32
  965. #define RX_MSDU_END_AGGREGATION_COUNT_MSB 39
  966. #define RX_MSDU_END_AGGREGATION_COUNT_MASK 0x000000ff00000000
  967. /* Description FLOW_AGGREGATION_CONTINUATION
  968. FISA: To indicate that this MSDU can be aggregated with
  969. the previous packet with the same flow id
  970. Set to zero in chips not supporting FISA, e.g. Pine
  971. <legal all>
  972. */
  973. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_OFFSET 0x0000000000000038
  974. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_LSB 40
  975. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MSB 40
  976. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MASK 0x0000010000000000
  977. /* Description FISA_TIMEOUT
  978. FISA: To indicate that the aggregation has restarted for
  979. this flow due to timeout
  980. Set to zero in chips not supporting FISA, e.g. Pine
  981. <legal all>
  982. */
  983. #define RX_MSDU_END_FISA_TIMEOUT_OFFSET 0x0000000000000038
  984. #define RX_MSDU_END_FISA_TIMEOUT_LSB 41
  985. #define RX_MSDU_END_FISA_TIMEOUT_MSB 41
  986. #define RX_MSDU_END_FISA_TIMEOUT_MASK 0x0000020000000000
  987. /* Description TCP_UDP_CHKSUM_FAIL_COPY
  988. if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
  989. tcp_udp_chksum_fail from 'RX_ATTENTION' will be reported
  990. here:
  991. Indicates that the computed checksum (tcp_udp_chksum) did
  992. not match the checksum in the TCP/UDP header.
  993. (unsupported in HastingsPrime)
  994. */
  995. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_OFFSET 0x0000000000000038
  996. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_LSB 42
  997. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MSB 42
  998. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MASK 0x0000040000000000
  999. /* Description MSDU_LIMIT_ERROR
  1000. Indicates that the MSDU threshold was exceeded and thus
  1001. all the rest of the MSDUs will not be scattered and will
  1002. not be decapsulated but will be DMA'ed in RAW format as
  1003. a single MSDU buffer
  1004. */
  1005. #define RX_MSDU_END_MSDU_LIMIT_ERROR_OFFSET 0x0000000000000038
  1006. #define RX_MSDU_END_MSDU_LIMIT_ERROR_LSB 43
  1007. #define RX_MSDU_END_MSDU_LIMIT_ERROR_MSB 43
  1008. #define RX_MSDU_END_MSDU_LIMIT_ERROR_MASK 0x0000080000000000
  1009. /* Description FLOW_IDX_TIMEOUT
  1010. Indicates an unsuccessful flow search due to the expiring
  1011. of the search timer.
  1012. <legal all>
  1013. */
  1014. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_OFFSET 0x0000000000000038
  1015. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_LSB 44
  1016. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MSB 44
  1017. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MASK 0x0000100000000000
  1018. /* Description FLOW_IDX_INVALID
  1019. flow id is not valid
  1020. <legal all>
  1021. */
  1022. #define RX_MSDU_END_FLOW_IDX_INVALID_OFFSET 0x0000000000000038
  1023. #define RX_MSDU_END_FLOW_IDX_INVALID_LSB 45
  1024. #define RX_MSDU_END_FLOW_IDX_INVALID_MSB 45
  1025. #define RX_MSDU_END_FLOW_IDX_INVALID_MASK 0x0000200000000000
  1026. /* Description CCE_MATCH
  1027. Indicates that this status has a corresponding MSDU that
  1028. requires FW processing. The OLE will have classification
  1029. ring mask registers which will indicate the ring(s) for
  1030. packets and descriptors which need FW attention.
  1031. */
  1032. #define RX_MSDU_END_CCE_MATCH_OFFSET 0x0000000000000038
  1033. #define RX_MSDU_END_CCE_MATCH_LSB 46
  1034. #define RX_MSDU_END_CCE_MATCH_MSB 46
  1035. #define RX_MSDU_END_CCE_MATCH_MASK 0x0000400000000000
  1036. /* Description AMSDU_PARSER_ERROR
  1037. A-MSDU could not be properly de-agregated.
  1038. <legal all>
  1039. */
  1040. #define RX_MSDU_END_AMSDU_PARSER_ERROR_OFFSET 0x0000000000000038
  1041. #define RX_MSDU_END_AMSDU_PARSER_ERROR_LSB 47
  1042. #define RX_MSDU_END_AMSDU_PARSER_ERROR_MSB 47
  1043. #define RX_MSDU_END_AMSDU_PARSER_ERROR_MASK 0x0000800000000000
  1044. /* Description CUMULATIVE_IP_LENGTH
  1045. FISA: Total MSDU length that is part of this flow aggregated
  1046. so far
  1047. Set to zero in chips not supporting FISA, e.g. Pine
  1048. <legal all>
  1049. */
  1050. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_OFFSET 0x0000000000000038
  1051. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_LSB 48
  1052. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MSB 63
  1053. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MASK 0xffff000000000000
  1054. /* Description KEY_ID_OCTET
  1055. The key ID octet from the IV. Only valid when first_msdu
  1056. is set.
  1057. */
  1058. #define RX_MSDU_END_KEY_ID_OCTET_OFFSET 0x0000000000000040
  1059. #define RX_MSDU_END_KEY_ID_OCTET_LSB 0
  1060. #define RX_MSDU_END_KEY_ID_OCTET_MSB 7
  1061. #define RX_MSDU_END_KEY_ID_OCTET_MASK 0x00000000000000ff
  1062. /* Description RESERVED_16A
  1063. Hamilton v1 used bits [31:16] for 'cumulative_IP_length.'
  1064. <legal 0>
  1065. */
  1066. #define RX_MSDU_END_RESERVED_16A_OFFSET 0x0000000000000040
  1067. #define RX_MSDU_END_RESERVED_16A_LSB 8
  1068. #define RX_MSDU_END_RESERVED_16A_MSB 31
  1069. #define RX_MSDU_END_RESERVED_16A_MASK 0x00000000ffffff00
  1070. /* Description RESERVED_17A
  1071. <legal 0>
  1072. */
  1073. #define RX_MSDU_END_RESERVED_17A_OFFSET 0x0000000000000040
  1074. #define RX_MSDU_END_RESERVED_17A_LSB 32
  1075. #define RX_MSDU_END_RESERVED_17A_MSB 37
  1076. #define RX_MSDU_END_RESERVED_17A_MASK 0x0000003f00000000
  1077. /* Description SERVICE_CODE
  1078. Opaque service code between PPE and Wi-Fi
  1079. This field gets passed on by REO to PPE in the EDMA descriptor
  1080. ('REO_TO_PPE_RING').
  1081. <legal all>
  1082. */
  1083. #define RX_MSDU_END_SERVICE_CODE_OFFSET 0x0000000000000040
  1084. #define RX_MSDU_END_SERVICE_CODE_LSB 38
  1085. #define RX_MSDU_END_SERVICE_CODE_MSB 46
  1086. #define RX_MSDU_END_SERVICE_CODE_MASK 0x00007fc000000000
  1087. /* Description PRIORITY_VALID
  1088. This field gets passed on by REO to PPE in the EDMA descriptor
  1089. ('REO_TO_PPE_RING').
  1090. <legal all>
  1091. */
  1092. #define RX_MSDU_END_PRIORITY_VALID_OFFSET 0x0000000000000040
  1093. #define RX_MSDU_END_PRIORITY_VALID_LSB 47
  1094. #define RX_MSDU_END_PRIORITY_VALID_MSB 47
  1095. #define RX_MSDU_END_PRIORITY_VALID_MASK 0x0000800000000000
  1096. /* Description INTRA_BSS
  1097. This packet needs intra-BSS routing by SW as the 'vdev_id'
  1098. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  1099. that this MSDU was got in.
  1100. <legal all>
  1101. */
  1102. #define RX_MSDU_END_INTRA_BSS_OFFSET 0x0000000000000040
  1103. #define RX_MSDU_END_INTRA_BSS_LSB 48
  1104. #define RX_MSDU_END_INTRA_BSS_MSB 48
  1105. #define RX_MSDU_END_INTRA_BSS_MASK 0x0001000000000000
  1106. /* Description DEST_CHIP_ID
  1107. If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
  1108. to support intra-BSS routing with multi-chip multi-link
  1109. operation.
  1110. This indicates into which chip's TCL the packet should be
  1111. queued.
  1112. <legal all>
  1113. */
  1114. #define RX_MSDU_END_DEST_CHIP_ID_OFFSET 0x0000000000000040
  1115. #define RX_MSDU_END_DEST_CHIP_ID_LSB 49
  1116. #define RX_MSDU_END_DEST_CHIP_ID_MSB 50
  1117. #define RX_MSDU_END_DEST_CHIP_ID_MASK 0x0006000000000000
  1118. /* Description MULTICAST_ECHO
  1119. If set, this packet is a multicast echo, i.e. the DA is
  1120. multicast and Rx OLE SA search with mcast_echo_check = 1
  1121. passed. RXDMA should release such packets to WBM.
  1122. <legal all>
  1123. */
  1124. #define RX_MSDU_END_MULTICAST_ECHO_OFFSET 0x0000000000000040
  1125. #define RX_MSDU_END_MULTICAST_ECHO_LSB 51
  1126. #define RX_MSDU_END_MULTICAST_ECHO_MSB 51
  1127. #define RX_MSDU_END_MULTICAST_ECHO_MASK 0x0008000000000000
  1128. /* Description WDS_LEARNING_EVENT
  1129. If set, this packet has an SA search failure with WDS learning
  1130. enabled for the peer. RXOLE should route this TLV to the
  1131. RXDMA0 status ring to notify FW.
  1132. <legal all>
  1133. */
  1134. #define RX_MSDU_END_WDS_LEARNING_EVENT_OFFSET 0x0000000000000040
  1135. #define RX_MSDU_END_WDS_LEARNING_EVENT_LSB 52
  1136. #define RX_MSDU_END_WDS_LEARNING_EVENT_MSB 52
  1137. #define RX_MSDU_END_WDS_LEARNING_EVENT_MASK 0x0010000000000000
  1138. /* Description WDS_ROAMING_EVENT
  1139. If set, this packet's SA 'Sw_peer_id' mismatches the 'Sw_peer_id'
  1140. of the peer through which the packet was got, indicating
  1141. the SA node has roamed. RXOLE should route this TLV to
  1142. the RXDMA0 status ring to notify FW.
  1143. <legal all>
  1144. */
  1145. #define RX_MSDU_END_WDS_ROAMING_EVENT_OFFSET 0x0000000000000040
  1146. #define RX_MSDU_END_WDS_ROAMING_EVENT_LSB 53
  1147. #define RX_MSDU_END_WDS_ROAMING_EVENT_MSB 53
  1148. #define RX_MSDU_END_WDS_ROAMING_EVENT_MASK 0x0020000000000000
  1149. /* Description WDS_KEEP_ALIVE_EVENT
  1150. If set, the AST timestamp for this packet's SA is older
  1151. than the current timestamp by more than a threshold programmed
  1152. in RXOLE. RXOLE should route this TLV to the RXDMA0 status
  1153. ring to notify FW to keep the AST entry for the SA alive.
  1154. <legal all>
  1155. */
  1156. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_OFFSET 0x0000000000000040
  1157. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_LSB 54
  1158. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MSB 54
  1159. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MASK 0x0040000000000000
  1160. /* Description DEST_CHIP_PMAC_ID
  1161. If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
  1162. to support intra-BSS routing with multi-chip multi-link
  1163. operation.
  1164. This indicates into which link/'vdev' the packet should
  1165. be queued in TCL.
  1166. <legal all>
  1167. */
  1168. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_OFFSET 0x0000000000000040
  1169. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_LSB 55
  1170. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MSB 55
  1171. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MASK 0x0080000000000000
  1172. /* Description RESERVED_17B
  1173. <legal 0>
  1174. */
  1175. #define RX_MSDU_END_RESERVED_17B_OFFSET 0x0000000000000040
  1176. #define RX_MSDU_END_RESERVED_17B_LSB 56
  1177. #define RX_MSDU_END_RESERVED_17B_MSB 63
  1178. #define RX_MSDU_END_RESERVED_17B_MASK 0xff00000000000000
  1179. /* Description MSDU_LENGTH
  1180. Words 18 - 26 are from Lithium 'RX_MSDU_START.'
  1181. MSDU length in bytes after decapsulation.
  1182. This field is still valid for MPDU frames without A-MSDU.
  1183. It still represents MSDU length after decapsulation
  1184. */
  1185. #define RX_MSDU_END_MSDU_LENGTH_OFFSET 0x0000000000000048
  1186. #define RX_MSDU_END_MSDU_LENGTH_LSB 0
  1187. #define RX_MSDU_END_MSDU_LENGTH_MSB 13
  1188. #define RX_MSDU_END_MSDU_LENGTH_MASK 0x0000000000003fff
  1189. /* Description STBC
  1190. When set, use STBC transmission rates
  1191. */
  1192. #define RX_MSDU_END_STBC_OFFSET 0x0000000000000048
  1193. #define RX_MSDU_END_STBC_LSB 14
  1194. #define RX_MSDU_END_STBC_MSB 14
  1195. #define RX_MSDU_END_STBC_MASK 0x0000000000004000
  1196. /* Description IPSEC_ESP
  1197. Set if IPv4/v6 packet is using IPsec ESP
  1198. */
  1199. #define RX_MSDU_END_IPSEC_ESP_OFFSET 0x0000000000000048
  1200. #define RX_MSDU_END_IPSEC_ESP_LSB 15
  1201. #define RX_MSDU_END_IPSEC_ESP_MSB 15
  1202. #define RX_MSDU_END_IPSEC_ESP_MASK 0x0000000000008000
  1203. /* Description L3_OFFSET
  1204. Depending upon mode bit, this field either indicates the
  1205. L3 offset in bytes from the start of the RX_HEADER or the
  1206. IP offset in bytes from the start of the packet after decapsulation.
  1207. The latter is only valid if ipv4_proto or ipv6_proto is
  1208. set.
  1209. */
  1210. #define RX_MSDU_END_L3_OFFSET_OFFSET 0x0000000000000048
  1211. #define RX_MSDU_END_L3_OFFSET_LSB 16
  1212. #define RX_MSDU_END_L3_OFFSET_MSB 22
  1213. #define RX_MSDU_END_L3_OFFSET_MASK 0x00000000007f0000
  1214. /* Description IPSEC_AH
  1215. Set if IPv4/v6 packet is using IPsec AH
  1216. */
  1217. #define RX_MSDU_END_IPSEC_AH_OFFSET 0x0000000000000048
  1218. #define RX_MSDU_END_IPSEC_AH_LSB 23
  1219. #define RX_MSDU_END_IPSEC_AH_MSB 23
  1220. #define RX_MSDU_END_IPSEC_AH_MASK 0x0000000000800000
  1221. /* Description L4_OFFSET
  1222. Depending upon mode bit, this field either indicates the
  1223. L4 offset nin bytes from the start of RX_HEADER(only valid
  1224. if either ipv4_proto or ipv6_proto is set to 1) or indicates
  1225. the offset in bytes to the start of TCP or UDP header from
  1226. the start of the IP header after decapsulation(Only valid
  1227. if tcp_proto or udp_proto is set). The value 0 indicates
  1228. that the offset is longer than 127 bytes.
  1229. */
  1230. #define RX_MSDU_END_L4_OFFSET_OFFSET 0x0000000000000048
  1231. #define RX_MSDU_END_L4_OFFSET_LSB 24
  1232. #define RX_MSDU_END_L4_OFFSET_MSB 31
  1233. #define RX_MSDU_END_L4_OFFSET_MASK 0x00000000ff000000
  1234. /* Description MSDU_NUMBER
  1235. Indicates the MSDU number within a MPDU. This value is
  1236. reset to zero at the start of each MPDU. If the number
  1237. of MSDU exceeds 255 this number will wrap using modulo 256.
  1238. */
  1239. #define RX_MSDU_END_MSDU_NUMBER_OFFSET 0x0000000000000048
  1240. #define RX_MSDU_END_MSDU_NUMBER_LSB 32
  1241. #define RX_MSDU_END_MSDU_NUMBER_MSB 39
  1242. #define RX_MSDU_END_MSDU_NUMBER_MASK 0x000000ff00000000
  1243. /* Description DECAP_FORMAT
  1244. Indicates the format after decapsulation:
  1245. <enum 0 RAW> No encapsulation
  1246. <enum 1 Native_WiFi>
  1247. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1248. <enum 3 802_3> Indicate Ethernet
  1249. <legal all>
  1250. */
  1251. #define RX_MSDU_END_DECAP_FORMAT_OFFSET 0x0000000000000048
  1252. #define RX_MSDU_END_DECAP_FORMAT_LSB 40
  1253. #define RX_MSDU_END_DECAP_FORMAT_MSB 41
  1254. #define RX_MSDU_END_DECAP_FORMAT_MASK 0x0000030000000000
  1255. /* Description IPV4_PROTO
  1256. Set if L2 layer indicates IPv4 protocol.
  1257. */
  1258. #define RX_MSDU_END_IPV4_PROTO_OFFSET 0x0000000000000048
  1259. #define RX_MSDU_END_IPV4_PROTO_LSB 42
  1260. #define RX_MSDU_END_IPV4_PROTO_MSB 42
  1261. #define RX_MSDU_END_IPV4_PROTO_MASK 0x0000040000000000
  1262. /* Description IPV6_PROTO
  1263. Set if L2 layer indicates IPv6 protocol.
  1264. */
  1265. #define RX_MSDU_END_IPV6_PROTO_OFFSET 0x0000000000000048
  1266. #define RX_MSDU_END_IPV6_PROTO_LSB 43
  1267. #define RX_MSDU_END_IPV6_PROTO_MSB 43
  1268. #define RX_MSDU_END_IPV6_PROTO_MASK 0x0000080000000000
  1269. /* Description TCP_PROTO
  1270. Set if the ipv4_proto or ipv6_proto are set and the IP protocol
  1271. indicates TCP.
  1272. */
  1273. #define RX_MSDU_END_TCP_PROTO_OFFSET 0x0000000000000048
  1274. #define RX_MSDU_END_TCP_PROTO_LSB 44
  1275. #define RX_MSDU_END_TCP_PROTO_MSB 44
  1276. #define RX_MSDU_END_TCP_PROTO_MASK 0x0000100000000000
  1277. /* Description UDP_PROTO
  1278. Set if the ipv4_proto or ipv6_proto are set and the IP protocol
  1279. indicates UDP.
  1280. */
  1281. #define RX_MSDU_END_UDP_PROTO_OFFSET 0x0000000000000048
  1282. #define RX_MSDU_END_UDP_PROTO_LSB 45
  1283. #define RX_MSDU_END_UDP_PROTO_MSB 45
  1284. #define RX_MSDU_END_UDP_PROTO_MASK 0x0000200000000000
  1285. /* Description IP_FRAG
  1286. Indicates that either the IP More frag bit is set or IP
  1287. frag number is non-zero. If set indicates that this is
  1288. a fragmented IP packet.
  1289. */
  1290. #define RX_MSDU_END_IP_FRAG_OFFSET 0x0000000000000048
  1291. #define RX_MSDU_END_IP_FRAG_LSB 46
  1292. #define RX_MSDU_END_IP_FRAG_MSB 46
  1293. #define RX_MSDU_END_IP_FRAG_MASK 0x0000400000000000
  1294. /* Description TCP_ONLY_ACK
  1295. Set if only the TCP Ack bit is set in the TCP flags and
  1296. if the TCP payload is 0.
  1297. */
  1298. #define RX_MSDU_END_TCP_ONLY_ACK_OFFSET 0x0000000000000048
  1299. #define RX_MSDU_END_TCP_ONLY_ACK_LSB 47
  1300. #define RX_MSDU_END_TCP_ONLY_ACK_MSB 47
  1301. #define RX_MSDU_END_TCP_ONLY_ACK_MASK 0x0000800000000000
  1302. /* Description DA_IS_BCAST_MCAST
  1303. The destination address is broadcast or multicast.
  1304. */
  1305. #define RX_MSDU_END_DA_IS_BCAST_MCAST_OFFSET 0x0000000000000048
  1306. #define RX_MSDU_END_DA_IS_BCAST_MCAST_LSB 48
  1307. #define RX_MSDU_END_DA_IS_BCAST_MCAST_MSB 48
  1308. #define RX_MSDU_END_DA_IS_BCAST_MCAST_MASK 0x0001000000000000
  1309. /* Description TOEPLITZ_HASH_SEL
  1310. Actual choosen Hash.
  1311. 0 -> Toeplitz hash of 2-tuple (IP source address, IP destination
  1312. address)1 -> Toeplitz hash of 4-tuple (IP source address,
  1313. IP destination address, L4 (TCP/UDP) source port, L4 (TCP/UDP)
  1314. destination port)
  1315. 2 -> Toeplitz of flow_id
  1316. 3 -> "Zero" is used
  1317. <legal all>
  1318. */
  1319. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_OFFSET 0x0000000000000048
  1320. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_LSB 49
  1321. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MSB 50
  1322. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MASK 0x0006000000000000
  1323. /* Description IP_FIXED_HEADER_VALID
  1324. Fixed 20-byte IPv4 header or 40-byte IPv6 header parsed
  1325. fully within first 256 bytes of the packet
  1326. */
  1327. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_OFFSET 0x0000000000000048
  1328. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_LSB 51
  1329. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MSB 51
  1330. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MASK 0x0008000000000000
  1331. /* Description IP_EXTN_HEADER_VALID
  1332. IPv6/IPv6 header, including IPv4 options and recognizable
  1333. extension headers parsed fully within first 256 bytes of
  1334. the packet
  1335. */
  1336. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_OFFSET 0x0000000000000048
  1337. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_LSB 52
  1338. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MSB 52
  1339. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MASK 0x0010000000000000
  1340. /* Description TCP_UDP_HEADER_VALID
  1341. Fixed 20-byte TCP (excluding TCP options) or 8-byte UDP
  1342. header parsed fully within first 256 bytes of the packet
  1343. */
  1344. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_OFFSET 0x0000000000000048
  1345. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_LSB 53
  1346. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MSB 53
  1347. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MASK 0x0020000000000000
  1348. /* Description MESH_CONTROL_PRESENT
  1349. When set, this MSDU includes the 'Mesh Control' field
  1350. <legal all>
  1351. */
  1352. #define RX_MSDU_END_MESH_CONTROL_PRESENT_OFFSET 0x0000000000000048
  1353. #define RX_MSDU_END_MESH_CONTROL_PRESENT_LSB 54
  1354. #define RX_MSDU_END_MESH_CONTROL_PRESENT_MSB 54
  1355. #define RX_MSDU_END_MESH_CONTROL_PRESENT_MASK 0x0040000000000000
  1356. /* Description LDPC
  1357. When set, indicates that LDPC coding was used.
  1358. <legal all>
  1359. */
  1360. #define RX_MSDU_END_LDPC_OFFSET 0x0000000000000048
  1361. #define RX_MSDU_END_LDPC_LSB 55
  1362. #define RX_MSDU_END_LDPC_MSB 55
  1363. #define RX_MSDU_END_LDPC_MASK 0x0080000000000000
  1364. /* Description IP4_PROTOCOL_IP6_NEXT_HEADER
  1365. For IPv4 this is the 8 bit protocol field (when ipv4_proto
  1366. is set). For IPv6 this is the 8 bit next_header field (when
  1367. ipv6_proto is set).
  1368. */
  1369. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_OFFSET 0x0000000000000048
  1370. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_LSB 56
  1371. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MSB 63
  1372. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MASK 0xff00000000000000
  1373. /* Description VLAN_CTAG_CI
  1374. 2 bytes of C-VLAN Tag Control Information from WHO_L2_LLC
  1375. Hamilton v1 used this for 'toeplitz_hash_2_or_4.'
  1376. */
  1377. #define RX_MSDU_END_VLAN_CTAG_CI_OFFSET 0x0000000000000050
  1378. #define RX_MSDU_END_VLAN_CTAG_CI_LSB 0
  1379. #define RX_MSDU_END_VLAN_CTAG_CI_MSB 15
  1380. #define RX_MSDU_END_VLAN_CTAG_CI_MASK 0x000000000000ffff
  1381. /* Description VLAN_STAG_CI
  1382. Words 18 - 26 are from Lithium 'RX_MSDU_START.'
  1383. 2 bytes of S-VLAN Tag Control Information from WHO_L2_LLC
  1384. in case of double VLAN
  1385. Hamilton v1 used this for 'toeplitz_hash_2_or_4.'
  1386. */
  1387. #define RX_MSDU_END_VLAN_STAG_CI_OFFSET 0x0000000000000050
  1388. #define RX_MSDU_END_VLAN_STAG_CI_LSB 16
  1389. #define RX_MSDU_END_VLAN_STAG_CI_MSB 31
  1390. #define RX_MSDU_END_VLAN_STAG_CI_MASK 0x00000000ffff0000
  1391. /* Description PEER_META_DATA
  1392. Meta data that SW has programmed in the Peer table entry
  1393. of the transmitting STA.
  1394. RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
  1395. Hamilton v1 used this for 'Flow_id_toeplitz.'
  1396. <legal all>
  1397. */
  1398. #define RX_MSDU_END_PEER_META_DATA_OFFSET 0x0000000000000050
  1399. #define RX_MSDU_END_PEER_META_DATA_LSB 32
  1400. #define RX_MSDU_END_PEER_META_DATA_MSB 63
  1401. #define RX_MSDU_END_PEER_META_DATA_MASK 0xffffffff00000000
  1402. /* Description USER_RSSI
  1403. RSSI for this user
  1404. <legal all>
  1405. */
  1406. #define RX_MSDU_END_USER_RSSI_OFFSET 0x0000000000000058
  1407. #define RX_MSDU_END_USER_RSSI_LSB 0
  1408. #define RX_MSDU_END_USER_RSSI_MSB 7
  1409. #define RX_MSDU_END_USER_RSSI_MASK 0x00000000000000ff
  1410. /* Description PKT_TYPE
  1411. Packet type:
  1412. <enum 0 dot11a>802.11a PPDU type
  1413. <enum 1 dot11b>802.11b PPDU type
  1414. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  1415. <enum 3 dot11ac>802.11ac PPDU type
  1416. <enum 4 dot11ax>802.11ax PPDU type
  1417. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  1418. <enum 6 dot11be>802.11be PPDU type
  1419. <enum 7 dot11az>802.11az (ranging) PPDU type
  1420. <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
  1421. & aborted)
  1422. */
  1423. #define RX_MSDU_END_PKT_TYPE_OFFSET 0x0000000000000058
  1424. #define RX_MSDU_END_PKT_TYPE_LSB 8
  1425. #define RX_MSDU_END_PKT_TYPE_MSB 11
  1426. #define RX_MSDU_END_PKT_TYPE_MASK 0x0000000000000f00
  1427. /* Description SGI
  1428. Field only valid when pkt type is HT, VHT or HE.
  1429. <enum 0 0_8_us_sgi > Legacy normal GI. Can also be used
  1430. for HE
  1431. <enum 1 0_4_us_sgi > Legacy short GI. Can also be used
  1432. for HE
  1433. <enum 2 1_6_us_sgi > HE related GI
  1434. <enum 3 3_2_us_sgi > HE related GI
  1435. <legal 0 - 3>
  1436. */
  1437. #define RX_MSDU_END_SGI_OFFSET 0x0000000000000058
  1438. #define RX_MSDU_END_SGI_LSB 12
  1439. #define RX_MSDU_END_SGI_MSB 13
  1440. #define RX_MSDU_END_SGI_MASK 0x0000000000003000
  1441. /* Description RATE_MCS
  1442. For details, refer to MCS_TYPE description
  1443. Note: This is "rate" in case of 11a/11b
  1444. <legal all>
  1445. */
  1446. #define RX_MSDU_END_RATE_MCS_OFFSET 0x0000000000000058
  1447. #define RX_MSDU_END_RATE_MCS_LSB 14
  1448. #define RX_MSDU_END_RATE_MCS_MSB 17
  1449. #define RX_MSDU_END_RATE_MCS_MASK 0x000000000003c000
  1450. /* Description RECEIVE_BANDWIDTH
  1451. Full receive Bandwidth
  1452. <enum 0 20_mhz>20 Mhz BW
  1453. <enum 1 40_mhz>40 Mhz BW
  1454. <enum 2 80_mhz>80 Mhz BW
  1455. <enum 3 160_mhz>160 Mhz BW
  1456. <enum 4 320_mhz>320 Mhz BW
  1457. <enum 5 240_mhz>240 Mhz BW
  1458. */
  1459. #define RX_MSDU_END_RECEIVE_BANDWIDTH_OFFSET 0x0000000000000058
  1460. #define RX_MSDU_END_RECEIVE_BANDWIDTH_LSB 18
  1461. #define RX_MSDU_END_RECEIVE_BANDWIDTH_MSB 20
  1462. #define RX_MSDU_END_RECEIVE_BANDWIDTH_MASK 0x00000000001c0000
  1463. /* Description RECEPTION_TYPE
  1464. Indicates what type of reception this is.
  1465. <enum 0 reception_type_SU > Basic SU reception (not
  1466. part of OFDMA or MIMO)
  1467. <enum 1 reception_type_MU_MIMO > This is related to
  1468. DL type of reception
  1469. <enum 2 reception_type_MU_OFDMA > This is related to
  1470. DL type of reception
  1471. <enum 3 reception_type_MU_OFDMA_MIMO > This is related
  1472. to DL type of reception
  1473. <enum 4 reception_type_UL_MU_MIMO > This is related
  1474. to UL type of reception
  1475. <enum 5 reception_type_UL_MU_OFDMA > This is related
  1476. to UL type of reception
  1477. <enum 6 reception_type_UL_MU_OFDMA_MIMO > This is related
  1478. to UL type of reception
  1479. <legal 0-6>
  1480. */
  1481. #define RX_MSDU_END_RECEPTION_TYPE_OFFSET 0x0000000000000058
  1482. #define RX_MSDU_END_RECEPTION_TYPE_LSB 21
  1483. #define RX_MSDU_END_RECEPTION_TYPE_MSB 23
  1484. #define RX_MSDU_END_RECEPTION_TYPE_MASK 0x0000000000e00000
  1485. /* Description MIMO_SS_BITMAP
  1486. Field only valid when Reception_type for the MPDU from this
  1487. STA is some form of MIMO reception
  1488. Bitmap, with each bit indicating if the related spatial
  1489. stream is used for this STA
  1490. LSB related to SS 0
  1491. 0: spatial stream not used for this reception
  1492. 1: spatial stream used for this reception
  1493. Note: Only 7 bits are reported here to accommodate field
  1494. 'msdu_done_copy.'
  1495. <legal all>
  1496. */
  1497. #define RX_MSDU_END_MIMO_SS_BITMAP_OFFSET 0x0000000000000058
  1498. #define RX_MSDU_END_MIMO_SS_BITMAP_LSB 24
  1499. #define RX_MSDU_END_MIMO_SS_BITMAP_MSB 30
  1500. #define RX_MSDU_END_MIMO_SS_BITMAP_MASK 0x000000007f000000
  1501. /* Description MSDU_DONE_COPY
  1502. If set indicates that the RX packet data, RX header data,
  1503. RX PPDU start descriptor, RX MPDU start/end descriptor,
  1504. RX MSDU start/end descriptors and RX Attention descriptor
  1505. are all valid. This bit is in the last 64-bit of the descriptor
  1506. expected to be subscribed to in Waikiki and Hamilton v2.
  1507. <legal 1>
  1508. */
  1509. #define RX_MSDU_END_MSDU_DONE_COPY_OFFSET 0x0000000000000058
  1510. #define RX_MSDU_END_MSDU_DONE_COPY_LSB 31
  1511. #define RX_MSDU_END_MSDU_DONE_COPY_MSB 31
  1512. #define RX_MSDU_END_MSDU_DONE_COPY_MASK 0x0000000080000000
  1513. /* Description FLOW_ID_TOEPLITZ
  1514. Toeplitz hash of 5-tuple
  1515. {IP source address, IP destination address, IP source port,
  1516. IP destination port, L4 protocol} in case of non-IPSec.
  1517. In case of IPSec - Toeplitz hash of 4-tuple
  1518. {IP source address, IP destination address, SPI, L4 protocol}
  1519. In Pine, optionally the 3-tuple Toeplitz hash over IPv4
  1520. or IPv6 src/dest addresses and L4 protocol can be reported
  1521. here. (Unsupported in HastingsPrime)
  1522. The relevant Toeplitz key registers are provided in RxOLE's
  1523. instance of common parser module. These registers are separate
  1524. from the Toeplitz keys used by ASE/FSE modules inside RxOLE.The
  1525. actual value will be passed on from common parser module
  1526. to RxOLE in one of the WHO_* TLVs.
  1527. Hamilton v1 used this for 'ppdu_start_timestamp_31_0.'
  1528. <legal all>
  1529. */
  1530. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_OFFSET 0x0000000000000058
  1531. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_LSB 32
  1532. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MSB 63
  1533. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MASK 0xffffffff00000000
  1534. /* Description PPDU_START_TIMESTAMP_63_32
  1535. Timestamp that indicates when the PPDU that contained this
  1536. MPDU started on the medium, upper 32 bits
  1537. <legal all>
  1538. */
  1539. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_OFFSET 0x0000000000000060
  1540. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_LSB 0
  1541. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MSB 31
  1542. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MASK 0x00000000ffffffff
  1543. /* Description SW_PHY_META_DATA
  1544. SW programmed Meta data provided by the PHY.
  1545. Can be used for SW to indicate the channel the device is
  1546. on.
  1547. <legal all>
  1548. */
  1549. #define RX_MSDU_END_SW_PHY_META_DATA_OFFSET 0x0000000000000060
  1550. #define RX_MSDU_END_SW_PHY_META_DATA_LSB 32
  1551. #define RX_MSDU_END_SW_PHY_META_DATA_MSB 63
  1552. #define RX_MSDU_END_SW_PHY_META_DATA_MASK 0xffffffff00000000
  1553. /* Description PPDU_START_TIMESTAMP_31_0
  1554. Words 18 - 26 are from Lithium 'RX_MSDU_START.'
  1555. Timestamp that indicates when the PPDU that contained this
  1556. MPDU started on the medium, lower 32 bits
  1557. Hamilton v1 used bits [15:0] for 'vlan_ctag_ci and bits [31:16]
  1558. for 'vlan_stag_ci.'
  1559. <legal all>
  1560. */
  1561. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_OFFSET 0x0000000000000068
  1562. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_LSB 0
  1563. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MSB 31
  1564. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MASK 0x00000000ffffffff
  1565. /* Description TOEPLITZ_HASH_2_OR_4
  1566. Controlled by multiple RxOLE registers for TCP/UDP over
  1567. IPv4/IPv6 - Either, Toeplitz hash computed over 2-tuple
  1568. IPv4 or IPv6 src/dest addresses is reported; or, Toeplitz
  1569. hash computed over 4-tuple IPv4 or IPv6 src/dest addresses
  1570. and src/dest ports is reported. The Flow_id_toeplitz hash
  1571. can also be reported here. Usually the hash reported here
  1572. is the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
  1573. in 'RXPT_CLASSIFY_INFO').
  1574. In Pine, optionally the 3-tuple Toeplitz hash over IPv4
  1575. or IPv6 src/dest addresses and L4 protocol can be reported
  1576. here. (Unsupported in HastingsPrime)
  1577. */
  1578. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_OFFSET 0x0000000000000068
  1579. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_LSB 32
  1580. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MSB 63
  1581. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MASK 0xffffffff00000000
  1582. /* Description RESERVED_28A
  1583. <legal 0>
  1584. */
  1585. #define RX_MSDU_END_RESERVED_28A_OFFSET 0x0000000000000070
  1586. #define RX_MSDU_END_RESERVED_28A_LSB 0
  1587. #define RX_MSDU_END_RESERVED_28A_MSB 15
  1588. #define RX_MSDU_END_RESERVED_28A_MASK 0x000000000000ffff
  1589. /* Description SA_15_0
  1590. Source MAC address bits [15:0] (with the fifth byte in the
  1591. MSB and the last byte in the LSB, i.e. requiring a byte-swap
  1592. for little-endian FW)
  1593. */
  1594. #define RX_MSDU_END_SA_15_0_OFFSET 0x0000000000000070
  1595. #define RX_MSDU_END_SA_15_0_LSB 16
  1596. #define RX_MSDU_END_SA_15_0_MSB 31
  1597. #define RX_MSDU_END_SA_15_0_MASK 0x00000000ffff0000
  1598. /* Description SA_47_16
  1599. Source MAC address bits [47:16] (with the first byte in
  1600. the MSB and the fourth byte in the LSB, i.e. requiring a
  1601. byte-swap for little-endian FW)
  1602. */
  1603. #define RX_MSDU_END_SA_47_16_OFFSET 0x0000000000000070
  1604. #define RX_MSDU_END_SA_47_16_LSB 32
  1605. #define RX_MSDU_END_SA_47_16_MSB 63
  1606. #define RX_MSDU_END_SA_47_16_MASK 0xffffffff00000000
  1607. /* Description FIRST_MPDU
  1608. Words 30 - 31 are from Lithium 'RX_ATTENTION.'
  1609. Indicates the first MSDU of the PPDU. If both first_mpdu
  1610. and last_mpdu are set in the MSDU then this is a not an
  1611. A-MPDU frame but a stand alone MPDU. Interior MPDU in
  1612. an A-MPDU shall have both first_mpdu and last_mpdu bits
  1613. set to 0. The PPDU start status will only be valid when
  1614. this bit is set.
  1615. */
  1616. #define RX_MSDU_END_FIRST_MPDU_OFFSET 0x0000000000000078
  1617. #define RX_MSDU_END_FIRST_MPDU_LSB 0
  1618. #define RX_MSDU_END_FIRST_MPDU_MSB 0
  1619. #define RX_MSDU_END_FIRST_MPDU_MASK 0x0000000000000001
  1620. /* Description RESERVED_30A
  1621. <legal 0>
  1622. */
  1623. #define RX_MSDU_END_RESERVED_30A_OFFSET 0x0000000000000078
  1624. #define RX_MSDU_END_RESERVED_30A_LSB 1
  1625. #define RX_MSDU_END_RESERVED_30A_MSB 1
  1626. #define RX_MSDU_END_RESERVED_30A_MASK 0x0000000000000002
  1627. /* Description MCAST_BCAST
  1628. Multicast / broadcast indicator. Only set when the MAC
  1629. address 1 bit 0 is set indicating mcast/bcast and the BSSID
  1630. matches one of the 4 BSSID registers. Only set when first_msdu
  1631. is set.
  1632. */
  1633. #define RX_MSDU_END_MCAST_BCAST_OFFSET 0x0000000000000078
  1634. #define RX_MSDU_END_MCAST_BCAST_LSB 2
  1635. #define RX_MSDU_END_MCAST_BCAST_MSB 2
  1636. #define RX_MSDU_END_MCAST_BCAST_MASK 0x0000000000000004
  1637. /* Description AST_INDEX_NOT_FOUND
  1638. Only valid when first_msdu is set.
  1639. Indicates no AST matching entries within the the max search
  1640. count.
  1641. */
  1642. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_OFFSET 0x0000000000000078
  1643. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_LSB 3
  1644. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MSB 3
  1645. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MASK 0x0000000000000008
  1646. /* Description AST_INDEX_TIMEOUT
  1647. Only valid when first_msdu is set.
  1648. Indicates an unsuccessful search in the address seach table
  1649. due to timeout.
  1650. */
  1651. #define RX_MSDU_END_AST_INDEX_TIMEOUT_OFFSET 0x0000000000000078
  1652. #define RX_MSDU_END_AST_INDEX_TIMEOUT_LSB 4
  1653. #define RX_MSDU_END_AST_INDEX_TIMEOUT_MSB 4
  1654. #define RX_MSDU_END_AST_INDEX_TIMEOUT_MASK 0x0000000000000010
  1655. /* Description POWER_MGMT
  1656. Power management bit set in the 802.11 header. Only set
  1657. when first_msdu is set.
  1658. */
  1659. #define RX_MSDU_END_POWER_MGMT_OFFSET 0x0000000000000078
  1660. #define RX_MSDU_END_POWER_MGMT_LSB 5
  1661. #define RX_MSDU_END_POWER_MGMT_MSB 5
  1662. #define RX_MSDU_END_POWER_MGMT_MASK 0x0000000000000020
  1663. /* Description NON_QOS
  1664. Set if packet is not a non-QoS data frame. Only set when
  1665. first_msdu is set.
  1666. */
  1667. #define RX_MSDU_END_NON_QOS_OFFSET 0x0000000000000078
  1668. #define RX_MSDU_END_NON_QOS_LSB 6
  1669. #define RX_MSDU_END_NON_QOS_MSB 6
  1670. #define RX_MSDU_END_NON_QOS_MASK 0x0000000000000040
  1671. /* Description NULL_DATA
  1672. Set if frame type indicates either null data or QoS null
  1673. data format. Only set when first_msdu is set.
  1674. */
  1675. #define RX_MSDU_END_NULL_DATA_OFFSET 0x0000000000000078
  1676. #define RX_MSDU_END_NULL_DATA_LSB 7
  1677. #define RX_MSDU_END_NULL_DATA_MSB 7
  1678. #define RX_MSDU_END_NULL_DATA_MASK 0x0000000000000080
  1679. /* Description MGMT_TYPE
  1680. Set if packet is a management packet. Only set when first_msdu
  1681. is set.
  1682. */
  1683. #define RX_MSDU_END_MGMT_TYPE_OFFSET 0x0000000000000078
  1684. #define RX_MSDU_END_MGMT_TYPE_LSB 8
  1685. #define RX_MSDU_END_MGMT_TYPE_MSB 8
  1686. #define RX_MSDU_END_MGMT_TYPE_MASK 0x0000000000000100
  1687. /* Description CTRL_TYPE
  1688. Set if packet is a control packet. Only set when first_msdu
  1689. is set.
  1690. */
  1691. #define RX_MSDU_END_CTRL_TYPE_OFFSET 0x0000000000000078
  1692. #define RX_MSDU_END_CTRL_TYPE_LSB 9
  1693. #define RX_MSDU_END_CTRL_TYPE_MSB 9
  1694. #define RX_MSDU_END_CTRL_TYPE_MASK 0x0000000000000200
  1695. /* Description MORE_DATA
  1696. Set if more bit in frame control is set. Only set when
  1697. first_msdu is set.
  1698. */
  1699. #define RX_MSDU_END_MORE_DATA_OFFSET 0x0000000000000078
  1700. #define RX_MSDU_END_MORE_DATA_LSB 10
  1701. #define RX_MSDU_END_MORE_DATA_MSB 10
  1702. #define RX_MSDU_END_MORE_DATA_MASK 0x0000000000000400
  1703. /* Description EOSP
  1704. Set if the EOSP (end of service period) bit in the QoS control
  1705. field is set. Only set when first_msdu is set.
  1706. */
  1707. #define RX_MSDU_END_EOSP_OFFSET 0x0000000000000078
  1708. #define RX_MSDU_END_EOSP_LSB 11
  1709. #define RX_MSDU_END_EOSP_MSB 11
  1710. #define RX_MSDU_END_EOSP_MASK 0x0000000000000800
  1711. /* Description A_MSDU_ERROR
  1712. Set if number of MSDUs in A-MSDU is above a threshold or
  1713. if the size of the MSDU is invalid. This receive buffer
  1714. will contain all of the remainder of the MSDUs in this
  1715. MPDU without decapsulation.
  1716. */
  1717. #define RX_MSDU_END_A_MSDU_ERROR_OFFSET 0x0000000000000078
  1718. #define RX_MSDU_END_A_MSDU_ERROR_LSB 12
  1719. #define RX_MSDU_END_A_MSDU_ERROR_MSB 12
  1720. #define RX_MSDU_END_A_MSDU_ERROR_MASK 0x0000000000001000
  1721. /* Description RESERVED_30B
  1722. Hamilton v1 used this for 'Fragment_flag.'
  1723. <legal 0>
  1724. */
  1725. #define RX_MSDU_END_RESERVED_30B_OFFSET 0x0000000000000078
  1726. #define RX_MSDU_END_RESERVED_30B_LSB 13
  1727. #define RX_MSDU_END_RESERVED_30B_MSB 13
  1728. #define RX_MSDU_END_RESERVED_30B_MASK 0x0000000000002000
  1729. /* Description ORDER
  1730. Set if the order bit in the frame control is set. Only
  1731. set when first_msdu is set.
  1732. */
  1733. #define RX_MSDU_END_ORDER_OFFSET 0x0000000000000078
  1734. #define RX_MSDU_END_ORDER_LSB 14
  1735. #define RX_MSDU_END_ORDER_MSB 14
  1736. #define RX_MSDU_END_ORDER_MASK 0x0000000000004000
  1737. /* Description WIFI_PARSER_ERROR
  1738. Indicates that the WiFi frame has one of the following errors
  1739. o has less than minimum allowed bytes as per standard
  1740. o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
  1741. <legal all>
  1742. */
  1743. #define RX_MSDU_END_WIFI_PARSER_ERROR_OFFSET 0x0000000000000078
  1744. #define RX_MSDU_END_WIFI_PARSER_ERROR_LSB 15
  1745. #define RX_MSDU_END_WIFI_PARSER_ERROR_MSB 15
  1746. #define RX_MSDU_END_WIFI_PARSER_ERROR_MASK 0x0000000000008000
  1747. /* Description OVERFLOW_ERR
  1748. RXPCU Receive FIFO ran out of space to receive the full
  1749. MPDU. Therefor this MPDU is terminated early and is thus
  1750. corrupted.
  1751. This MPDU will not be ACKed.
  1752. RXPCU might still be able to correctly receive the following
  1753. MPDUs in the PPDU if enough fifo space became available
  1754. in time
  1755. */
  1756. #define RX_MSDU_END_OVERFLOW_ERR_OFFSET 0x0000000000000078
  1757. #define RX_MSDU_END_OVERFLOW_ERR_LSB 16
  1758. #define RX_MSDU_END_OVERFLOW_ERR_MSB 16
  1759. #define RX_MSDU_END_OVERFLOW_ERR_MASK 0x0000000000010000
  1760. /* Description MSDU_LENGTH_ERR
  1761. Indicates that the MSDU length from the 802.3 encapsulated
  1762. length field extends beyond the MPDU boundary or if the
  1763. length is less than 14 bytes.
  1764. Merged with original "other_msdu_err": Indicates that the
  1765. MSDU threshold was exceeded and thus all the rest of the
  1766. MSDUs will not be scattered and will not be decasulated
  1767. but will be DMA'ed in RAW format as a single MSDU buffer
  1768. */
  1769. #define RX_MSDU_END_MSDU_LENGTH_ERR_OFFSET 0x0000000000000078
  1770. #define RX_MSDU_END_MSDU_LENGTH_ERR_LSB 17
  1771. #define RX_MSDU_END_MSDU_LENGTH_ERR_MSB 17
  1772. #define RX_MSDU_END_MSDU_LENGTH_ERR_MASK 0x0000000000020000
  1773. /* Description TCP_UDP_CHKSUM_FAIL
  1774. Indicates that the computed checksum (tcp_udp_chksum in 'RX_MSDU_END')
  1775. did not match the checksum in the TCP/UDP header.
  1776. */
  1777. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_OFFSET 0x0000000000000078
  1778. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_LSB 18
  1779. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MSB 18
  1780. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MASK 0x0000000000040000
  1781. /* Description IP_CHKSUM_FAIL
  1782. Indicates that the computed checksum (ip_hdr_chksum in 'RX_MSDU_END')
  1783. did not match the checksum in the IP header.
  1784. */
  1785. #define RX_MSDU_END_IP_CHKSUM_FAIL_OFFSET 0x0000000000000078
  1786. #define RX_MSDU_END_IP_CHKSUM_FAIL_LSB 19
  1787. #define RX_MSDU_END_IP_CHKSUM_FAIL_MSB 19
  1788. #define RX_MSDU_END_IP_CHKSUM_FAIL_MASK 0x0000000000080000
  1789. /* Description SA_IDX_INVALID
  1790. Indicates no matching entry was found in the address search
  1791. table for the source MAC address.
  1792. */
  1793. #define RX_MSDU_END_SA_IDX_INVALID_OFFSET 0x0000000000000078
  1794. #define RX_MSDU_END_SA_IDX_INVALID_LSB 20
  1795. #define RX_MSDU_END_SA_IDX_INVALID_MSB 20
  1796. #define RX_MSDU_END_SA_IDX_INVALID_MASK 0x0000000000100000
  1797. /* Description DA_IDX_INVALID
  1798. Indicates no matching entry was found in the address search
  1799. table for the destination MAC address.
  1800. */
  1801. #define RX_MSDU_END_DA_IDX_INVALID_OFFSET 0x0000000000000078
  1802. #define RX_MSDU_END_DA_IDX_INVALID_LSB 21
  1803. #define RX_MSDU_END_DA_IDX_INVALID_MSB 21
  1804. #define RX_MSDU_END_DA_IDX_INVALID_MASK 0x0000000000200000
  1805. /* Description AMSDU_ADDR_MISMATCH
  1806. Indicates that an A-MSDU with 'from DS = 0' had an SA mismatching
  1807. TA or an A-MDU with 'to DS = 0' had a DA mismatching RA
  1808. */
  1809. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_OFFSET 0x0000000000000078
  1810. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_LSB 22
  1811. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MSB 22
  1812. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MASK 0x0000000000400000
  1813. /* Description RX_IN_TX_DECRYPT_BYP
  1814. Indicates that RX packet is not decrypted as Crypto is busy
  1815. with TX packet processing.
  1816. */
  1817. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_OFFSET 0x0000000000000078
  1818. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_LSB 23
  1819. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MSB 23
  1820. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MASK 0x0000000000800000
  1821. /* Description ENCRYPT_REQUIRED
  1822. Indicates that this data type frame is not encrypted even
  1823. if the policy for this MPDU requires encryption as indicated
  1824. in the peer entry key type.
  1825. */
  1826. #define RX_MSDU_END_ENCRYPT_REQUIRED_OFFSET 0x0000000000000078
  1827. #define RX_MSDU_END_ENCRYPT_REQUIRED_LSB 24
  1828. #define RX_MSDU_END_ENCRYPT_REQUIRED_MSB 24
  1829. #define RX_MSDU_END_ENCRYPT_REQUIRED_MASK 0x0000000001000000
  1830. /* Description DIRECTED
  1831. MPDU is a directed packet which means that the RA matched
  1832. our STA addresses. In proxySTA it means that the TA matched
  1833. an entry in our address search table with the corresponding
  1834. "no_ack" bit is the address search entry cleared.
  1835. */
  1836. #define RX_MSDU_END_DIRECTED_OFFSET 0x0000000000000078
  1837. #define RX_MSDU_END_DIRECTED_LSB 25
  1838. #define RX_MSDU_END_DIRECTED_MSB 25
  1839. #define RX_MSDU_END_DIRECTED_MASK 0x0000000002000000
  1840. /* Description BUFFER_FRAGMENT
  1841. Indicates that at least one of the rx buffers has been fragmented.
  1842. If set the FW should look at the rx_frag_info descriptor
  1843. described below.
  1844. */
  1845. #define RX_MSDU_END_BUFFER_FRAGMENT_OFFSET 0x0000000000000078
  1846. #define RX_MSDU_END_BUFFER_FRAGMENT_LSB 26
  1847. #define RX_MSDU_END_BUFFER_FRAGMENT_MSB 26
  1848. #define RX_MSDU_END_BUFFER_FRAGMENT_MASK 0x0000000004000000
  1849. /* Description MPDU_LENGTH_ERR
  1850. Indicates that the MPDU was pre-maturely terminated resulting
  1851. in a truncated MPDU. Don't trust the MPDU length field.
  1852. */
  1853. #define RX_MSDU_END_MPDU_LENGTH_ERR_OFFSET 0x0000000000000078
  1854. #define RX_MSDU_END_MPDU_LENGTH_ERR_LSB 27
  1855. #define RX_MSDU_END_MPDU_LENGTH_ERR_MSB 27
  1856. #define RX_MSDU_END_MPDU_LENGTH_ERR_MASK 0x0000000008000000
  1857. /* Description TKIP_MIC_ERR
  1858. Indicates that the MPDU Michael integrity check failed
  1859. */
  1860. #define RX_MSDU_END_TKIP_MIC_ERR_OFFSET 0x0000000000000078
  1861. #define RX_MSDU_END_TKIP_MIC_ERR_LSB 28
  1862. #define RX_MSDU_END_TKIP_MIC_ERR_MSB 28
  1863. #define RX_MSDU_END_TKIP_MIC_ERR_MASK 0x0000000010000000
  1864. /* Description DECRYPT_ERR
  1865. Indicates that the MPDU decrypt integrity check failed or
  1866. CRYPTO received an encrypted frame, but did not get a valid
  1867. corresponding key id in the peer entry.
  1868. */
  1869. #define RX_MSDU_END_DECRYPT_ERR_OFFSET 0x0000000000000078
  1870. #define RX_MSDU_END_DECRYPT_ERR_LSB 29
  1871. #define RX_MSDU_END_DECRYPT_ERR_MSB 29
  1872. #define RX_MSDU_END_DECRYPT_ERR_MASK 0x0000000020000000
  1873. /* Description UNENCRYPTED_FRAME_ERR
  1874. Copied here by RX OLE from the RX_MPDU_END TLV
  1875. */
  1876. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_OFFSET 0x0000000000000078
  1877. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_LSB 30
  1878. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MSB 30
  1879. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MASK 0x0000000040000000
  1880. /* Description FCS_ERR
  1881. Indicates that the MPDU FCS check failed
  1882. */
  1883. #define RX_MSDU_END_FCS_ERR_OFFSET 0x0000000000000078
  1884. #define RX_MSDU_END_FCS_ERR_LSB 31
  1885. #define RX_MSDU_END_FCS_ERR_MSB 31
  1886. #define RX_MSDU_END_FCS_ERR_MASK 0x0000000080000000
  1887. /* Description RESERVED_31A
  1888. <legal 0>
  1889. */
  1890. #define RX_MSDU_END_RESERVED_31A_OFFSET 0x0000000000000078
  1891. #define RX_MSDU_END_RESERVED_31A_LSB 32
  1892. #define RX_MSDU_END_RESERVED_31A_MSB 41
  1893. #define RX_MSDU_END_RESERVED_31A_MASK 0x000003ff00000000
  1894. /* Description DECRYPT_STATUS_CODE
  1895. Field provides insight into the decryption performed
  1896. <enum 0 decrypt_ok> Frame had protection enabled and decrypted
  1897. properly
  1898. <enum 1 decrypt_unprotected_frame > Frame is unprotected
  1899. and hence bypassed
  1900. <enum 2 decrypt_data_err > Frame has protection enabled
  1901. and could not be properly d ecrypted due to MIC/ICV mismatch
  1902. etc.
  1903. <enum 3 decrypt_key_invalid > Frame has protection enabled
  1904. but the key that was required to decrypt this frame was
  1905. not valid
  1906. <enum 4 decrypt_peer_entry_invalid > Frame has protection
  1907. enabled but the key that was required to decrypt this frame
  1908. was not valid
  1909. <enum 5 decrypt_other > Reserved for other indications
  1910. <legal 0 - 5>
  1911. */
  1912. #define RX_MSDU_END_DECRYPT_STATUS_CODE_OFFSET 0x0000000000000078
  1913. #define RX_MSDU_END_DECRYPT_STATUS_CODE_LSB 42
  1914. #define RX_MSDU_END_DECRYPT_STATUS_CODE_MSB 44
  1915. #define RX_MSDU_END_DECRYPT_STATUS_CODE_MASK 0x00001c0000000000
  1916. /* Description RX_BITMAP_NOT_UPDATED
  1917. Frame is received, but RXPCU could not update the receive
  1918. bitmap due to (temporary) fifo contraints.
  1919. <legal all>
  1920. */
  1921. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_OFFSET 0x0000000000000078
  1922. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_LSB 45
  1923. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MSB 45
  1924. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MASK 0x0000200000000000
  1925. /* Description RESERVED_31B
  1926. <legal 0>
  1927. */
  1928. #define RX_MSDU_END_RESERVED_31B_OFFSET 0x0000000000000078
  1929. #define RX_MSDU_END_RESERVED_31B_LSB 46
  1930. #define RX_MSDU_END_RESERVED_31B_MSB 62
  1931. #define RX_MSDU_END_RESERVED_31B_MASK 0x7fffc00000000000
  1932. /* Description MSDU_DONE
  1933. Words 27 - 28 are from Lithium 'RX_ATTENTION.'
  1934. If set indicates that the RX packet data, RX header data,
  1935. RX PPDU start descriptor, RX MPDU start/end descriptor,
  1936. RX MSDU start/end descriptors and RX Attention descriptor
  1937. are all valid. This bit must be in the last octet of the
  1938. descriptor.
  1939. */
  1940. #define RX_MSDU_END_MSDU_DONE_OFFSET 0x0000000000000078
  1941. #define RX_MSDU_END_MSDU_DONE_LSB 63
  1942. #define RX_MSDU_END_MSDU_DONE_MSB 63
  1943. #define RX_MSDU_END_MSDU_DONE_MASK 0x8000000000000000
  1944. #endif // RX_MSDU_END