rx_msdu_end.h 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590
  1. /*
  2. * Copyright (c) 2020, The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MSDU_END_H_
  17. #define _RX_MSDU_END_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. // ################ START SUMMARY #################
  21. //
  22. // Dword Fields
  23. // 0 rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], reserved_0[15:9], phy_ppdu_id[31:16]
  24. // 1 ip_hdr_chksum[15:0], reported_mpdu_length[29:16], reserved_1a[31:30]
  25. // 2 key_id_octet[7:0], cce_super_rule[13:8], cce_classify_not_done_truncate[14], cce_classify_not_done_cce_dis[15], cumulative_l3_checksum[31:16]
  26. // 3 rule_indication_31_0[31:0]
  27. // 4 rule_indication_63_32[31:0]
  28. // 5 da_offset[5:0], sa_offset[11:6], da_offset_valid[12], sa_offset_valid[13], reserved_5a[15:14], l3_type[31:16]
  29. // 6 ipv6_options_crc[31:0]
  30. // 7 tcp_seq_number[31:0]
  31. // 8 tcp_ack_number[31:0]
  32. // 9 tcp_flag[8:0], lro_eligible[9], reserved_9a[15:10], window_size[31:16]
  33. // 10 tcp_udp_chksum[15:0], sa_idx_timeout[16], da_idx_timeout[17], msdu_limit_error[18], flow_idx_timeout[19], flow_idx_invalid[20], wifi_parser_error[21], amsdu_parser_error[22], sa_is_valid[23], da_is_valid[24], da_is_mcbc[25], l3_header_padding[27:26], first_msdu[28], last_msdu[29], tcp_udp_chksum_fail[30], ip_chksum_fail[31]
  34. // 11 sa_idx[15:0], da_idx_or_sw_peer_id[31:16]
  35. // 12 msdu_drop[0], reo_destination_indication[5:1], flow_idx[25:6], reserved_12a[31:26]
  36. // 13 fse_metadata[31:0]
  37. // 14 cce_metadata[15:0], sa_sw_peer_id[31:16]
  38. // 15 aggregation_count[7:0], flow_aggregation_continuation[8], fisa_timeout[9], reserved_15a[31:10]
  39. // 16 cumulative_l4_checksum[15:0], cumulative_ip_length[31:16]
  40. //
  41. // ################ END SUMMARY #################
  42. #define NUM_OF_DWORDS_RX_MSDU_END 17
  43. struct rx_msdu_end {
  44. uint32_t rxpcu_mpdu_filter_in_category : 2, //[1:0]
  45. sw_frame_group_id : 7, //[8:2]
  46. reserved_0 : 7, //[15:9]
  47. phy_ppdu_id : 16; //[31:16]
  48. uint32_t ip_hdr_chksum : 16, //[15:0]
  49. reported_mpdu_length : 14, //[29:16]
  50. reserved_1a : 2; //[31:30]
  51. uint32_t key_id_octet : 8, //[7:0]
  52. cce_super_rule : 6, //[13:8]
  53. cce_classify_not_done_truncate : 1, //[14]
  54. cce_classify_not_done_cce_dis : 1, //[15]
  55. cumulative_l3_checksum : 16; //[31:16]
  56. uint32_t rule_indication_31_0 : 32; //[31:0]
  57. uint32_t rule_indication_63_32 : 32; //[31:0]
  58. uint32_t da_offset : 6, //[5:0]
  59. sa_offset : 6, //[11:6]
  60. da_offset_valid : 1, //[12]
  61. sa_offset_valid : 1, //[13]
  62. reserved_5a : 2, //[15:14]
  63. l3_type : 16; //[31:16]
  64. uint32_t ipv6_options_crc : 32; //[31:0]
  65. uint32_t tcp_seq_number : 32; //[31:0]
  66. uint32_t tcp_ack_number : 32; //[31:0]
  67. uint32_t tcp_flag : 9, //[8:0]
  68. lro_eligible : 1, //[9]
  69. reserved_9a : 6, //[15:10]
  70. window_size : 16; //[31:16]
  71. uint32_t tcp_udp_chksum : 16, //[15:0]
  72. sa_idx_timeout : 1, //[16]
  73. da_idx_timeout : 1, //[17]
  74. msdu_limit_error : 1, //[18]
  75. flow_idx_timeout : 1, //[19]
  76. flow_idx_invalid : 1, //[20]
  77. wifi_parser_error : 1, //[21]
  78. amsdu_parser_error : 1, //[22]
  79. sa_is_valid : 1, //[23]
  80. da_is_valid : 1, //[24]
  81. da_is_mcbc : 1, //[25]
  82. l3_header_padding : 2, //[27:26]
  83. first_msdu : 1, //[28]
  84. last_msdu : 1, //[29]
  85. tcp_udp_chksum_fail : 1, //[30]
  86. ip_chksum_fail : 1; //[31]
  87. uint32_t sa_idx : 16, //[15:0]
  88. da_idx_or_sw_peer_id : 16; //[31:16]
  89. uint32_t msdu_drop : 1, //[0]
  90. reo_destination_indication : 5, //[5:1]
  91. flow_idx : 20, //[25:6]
  92. reserved_12a : 6; //[31:26]
  93. uint32_t fse_metadata : 32; //[31:0]
  94. uint32_t cce_metadata : 16, //[15:0]
  95. sa_sw_peer_id : 16; //[31:16]
  96. uint32_t aggregation_count : 8, //[7:0]
  97. flow_aggregation_continuation : 1, //[8]
  98. fisa_timeout : 1, //[9]
  99. reserved_15a : 22; //[31:10]
  100. uint32_t cumulative_l4_checksum : 16, //[15:0]
  101. cumulative_ip_length : 16; //[31:16]
  102. };
  103. /*
  104. rxpcu_mpdu_filter_in_category
  105. Field indicates what the reason was that this MPDU frame
  106. was allowed to come into the receive path by RXPCU
  107. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  108. frame filter programming of rxpcu
  109. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  110. regular frame filter and would have been dropped, were it
  111. not for the frame fitting into the 'monitor_client'
  112. category.
  113. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  114. regular frame filter and also did not pass the
  115. rxpcu_monitor_client filter. It would have been dropped
  116. accept that it did pass the 'monitor_other' category.
  117. <legal 0-2>
  118. sw_frame_group_id
  119. SW processes frames based on certain classifications.
  120. This field indicates to what sw classification this MPDU is
  121. mapped.
  122. The classification is given in priority order
  123. <enum 0 sw_frame_group_NDP_frame>
  124. <enum 1 sw_frame_group_Multicast_data>
  125. <enum 2 sw_frame_group_Unicast_data>
  126. <enum 3 sw_frame_group_Null_data > This includes mpdus
  127. of type Data Null as well as QoS Data Null
  128. <enum 4 sw_frame_group_mgmt_0000 >
  129. <enum 5 sw_frame_group_mgmt_0001 >
  130. <enum 6 sw_frame_group_mgmt_0010 >
  131. <enum 7 sw_frame_group_mgmt_0011 >
  132. <enum 8 sw_frame_group_mgmt_0100 >
  133. <enum 9 sw_frame_group_mgmt_0101 >
  134. <enum 10 sw_frame_group_mgmt_0110 >
  135. <enum 11 sw_frame_group_mgmt_0111 >
  136. <enum 12 sw_frame_group_mgmt_1000 >
  137. <enum 13 sw_frame_group_mgmt_1001 >
  138. <enum 14 sw_frame_group_mgmt_1010 >
  139. <enum 15 sw_frame_group_mgmt_1011 >
  140. <enum 16 sw_frame_group_mgmt_1100 >
  141. <enum 17 sw_frame_group_mgmt_1101 >
  142. <enum 18 sw_frame_group_mgmt_1110 >
  143. <enum 19 sw_frame_group_mgmt_1111 >
  144. <enum 20 sw_frame_group_ctrl_0000 >
  145. <enum 21 sw_frame_group_ctrl_0001 >
  146. <enum 22 sw_frame_group_ctrl_0010 >
  147. <enum 23 sw_frame_group_ctrl_0011 >
  148. <enum 24 sw_frame_group_ctrl_0100 >
  149. <enum 25 sw_frame_group_ctrl_0101 >
  150. <enum 26 sw_frame_group_ctrl_0110 >
  151. <enum 27 sw_frame_group_ctrl_0111 >
  152. <enum 28 sw_frame_group_ctrl_1000 >
  153. <enum 29 sw_frame_group_ctrl_1001 >
  154. <enum 30 sw_frame_group_ctrl_1010 >
  155. <enum 31 sw_frame_group_ctrl_1011 >
  156. <enum 32 sw_frame_group_ctrl_1100 >
  157. <enum 33 sw_frame_group_ctrl_1101 >
  158. <enum 34 sw_frame_group_ctrl_1110 >
  159. <enum 35 sw_frame_group_ctrl_1111 >
  160. <enum 36 sw_frame_group_unsupported> This covers type 3
  161. and protocol version != 0
  162. <legal 0-37>
  163. reserved_0
  164. <legal 0>
  165. phy_ppdu_id
  166. A ppdu counter value that PHY increments for every PPDU
  167. received. The counter value wraps around
  168. <legal all>
  169. ip_hdr_chksum
  170. This can include the IP header checksum or the pseudo
  171. header checksum used by TCP/UDP checksum.
  172. (with the first byte in the MSB and the second byte in
  173. the LSB, i.e. requiring a byte-swap for little-endian FW/SW
  174. w.r.t. the byte order in a packet)
  175. reported_mpdu_length
  176. MPDU length before decapsulation. Only valid when
  177. first_msdu is set. This field is taken directly from the
  178. length field of the A-MPDU delimiter or the preamble length
  179. field for non-A-MPDU frames.
  180. reserved_1a
  181. <legal 0>
  182. key_id_octet
  183. The key ID octet from the IV. Only valid when
  184. first_msdu is set.
  185. cce_super_rule
  186. Indicates the super filter rule
  187. cce_classify_not_done_truncate
  188. Classification failed due to truncated frame
  189. cce_classify_not_done_cce_dis
  190. Classification failed due to CCE global disable
  191. cumulative_l3_checksum
  192. FISA: IP header checksum including the total MSDU length
  193. that is part of this flow aggregated so far, reported if
  194. 'RXOLE_R0_FISA_CTRL. CHKSUM_CUM_IP_LEN_EN' is set
  195. Set to zero in chips not supporting FISA, e.g. Pine
  196. <legal all>
  197. rule_indication_31_0
  198. Bitmap indicating which of rules 31-0 have matched
  199. rule_indication_63_32
  200. Bitmap indicating which of rules 63-32 have matched
  201. da_offset
  202. Offset into MSDU buffer for DA
  203. sa_offset
  204. Offset into MSDU buffer for SA
  205. da_offset_valid
  206. da_offset field is valid. This will be set to 0 in case
  207. of a dynamic A-MSDU when DA is compressed
  208. sa_offset_valid
  209. sa_offset field is valid. This will be set to 0 in case
  210. of a dynamic A-MSDU when SA is compressed
  211. reserved_5a
  212. <legal 0>
  213. l3_type
  214. The 16-bit type value indicating the type of L3 later
  215. extracted from LLC/SNAP, set to zero if SNAP is not
  216. available
  217. ipv6_options_crc
  218. 32 bit CRC computed out of IP v6 extension headers
  219. tcp_seq_number
  220. TCP sequence number (as a number assembled from a TCP
  221. packet in big-endian order, i.e. requiring a byte-swap for
  222. little-endian FW/SW w.r.t. the byte order in a packet)
  223. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  224. OVERRIDE_MSDU_END_FIELDS' is set, toeplitz_hash_2_or_4 from
  225. 'RX_MSDU_START' will be reported here:
  226. Controlled by multiple RxOLE registers for TCP/UDP over
  227. IPv4/IPv6 - Either Toeplitz hash computed over 2-tuple IPv4
  228. or IPv6 src/dest addresses is reported; or, Toeplitz hash
  229. computed over 4-tuple IPv4 or IPv6 src/dest addresses and
  230. src/dest ports is reported. The Flow_id_toeplitz hash can
  231. also be reported here. Usually the hash reported here is the
  232. one used for hash-based REO routing (see
  233. use_flow_id_toeplitz_clfy in 'RXPT_CLASSIFY_INFO').
  234. Optionally the 3-tuple Toeplitz hash over IPv4 or IPv6
  235. src/dest addresses and L4 protocol can be reported here.
  236. (Unsupported in HastingsPrime)
  237. tcp_ack_number
  238. TCP acknowledge number (as a number assembled from a TCP
  239. packet in big-endian order, i.e. requiring a byte-swap for
  240. little-endian FW/SW w.r.t. the byte order in a packet)
  241. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  242. OVERRIDE_MSDU_END_FIELDS' is set, flow_id_toeplitz from
  243. 'RX_MSDU_START' will be reported here:
  244. Toeplitz hash of 5-tuple {IP source address, IP
  245. destination address, IP source port, IP destination port, L4
  246. protocol} in case of non-IPSec. In case of IPSec - Toeplitz
  247. hash of 4-tuple {IP source address, IP destination address,
  248. SPI, L4 protocol}. Optionally the 3-tuple Toeplitz hash over
  249. IPv4 or IPv6 src/dest addresses and L4 protocol can be
  250. reported here.
  251. The relevant Toeplitz key registers are provided in
  252. RxOLE's instance of common parser module. These registers
  253. are separate from the Toeplitz keys used by ASE/FSE modules
  254. inside RxOLE. The actual value will be passed on from common
  255. parser module to RxOLE in one of the WHO_* TLVs.
  256. (Unsupported in HastingsPrime)
  257. tcp_flag
  258. TCP flags
  259. {NS,CWR,ECE,URG,ACK,PSH, RST ,SYN,FIN}(with the NS bit
  260. in bit 8 and the FIN bit in bit 0, i.e. in big-endian order,
  261. i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
  262. the byte order in a packet)
  263. lro_eligible
  264. Computed out of TCP and IP fields to indicate that this
  265. MSDU is eligible for LRO
  266. reserved_9a
  267. NOTE: DO not assign a field... Internally used in
  268. RXOLE..
  269. <legal 0>
  270. window_size
  271. TCP receive window size (as a number assembled from a
  272. TCP packet in big-endian order, i.e. requiring a byte-swap
  273. for little-endian FW/SW w.r.t. the byte order in a packet)
  274. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  275. OVERRIDE_MSDU_END_FIELDS' is set, msdu_length from
  276. 'RX_MSDU_START' will be reported in the 14 LSBs here:
  277. MSDU length in bytes after decapsulation. This field is
  278. still valid for MPDU frames without A-MSDU. It still
  279. represents MSDU length after decapsulation.
  280. (Unsupported in HastingsPrime)
  281. tcp_udp_chksum
  282. The value of the computed TCP/UDP checksum. A mode bit
  283. selects whether this checksum is the full checksum or the
  284. partial checksum which does not include the pseudo header.
  285. (with the first byte in the MSB and the second byte in the
  286. LSB, i.e. requiring a byte-swap for little-endian FW/SW
  287. w.r.t. the byte order in a packet)
  288. sa_idx_timeout
  289. Indicates an unsuccessful MAC source address search due
  290. to the expiring of the search timer.
  291. da_idx_timeout
  292. Indicates an unsuccessful MAC destination address search
  293. due to the expiring of the search timer.
  294. msdu_limit_error
  295. Indicates that the MSDU threshold was exceeded and thus
  296. all the rest of the MSDUs will not be scattered and will not
  297. be decapsulated but will be DMA'ed in RAW format as a single
  298. MSDU buffer
  299. flow_idx_timeout
  300. Indicates an unsuccessful flow search due to the
  301. expiring of the search timer.
  302. <legal all>
  303. flow_idx_invalid
  304. flow id is not valid
  305. <legal all>
  306. wifi_parser_error
  307. Indicates that the WiFi frame has one of the following
  308. errors
  309. o has less than minimum allowed bytes as per standard
  310. o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
  311. <legal all>
  312. amsdu_parser_error
  313. A-MSDU could not be properly de-agregated.
  314. <legal all>
  315. sa_is_valid
  316. Indicates that OLE found a valid SA entry
  317. da_is_valid
  318. Indicates that OLE found a valid DA entry
  319. da_is_mcbc
  320. Field Only valid if da_is_valid is set
  321. Indicates the DA address was a Multicast of Broadcast
  322. address.
  323. l3_header_padding
  324. Number of bytes padded to make sure that the L3 header
  325. will always start of a Dword boundary
  326. first_msdu
  327. Indicates the first MSDU of A-MSDU. If both first_msdu
  328. and last_msdu are set in the MSDU then this is a
  329. non-aggregated MSDU frame: normal MPDU. Interior MSDU in an
  330. A-MSDU shall have both first_mpdu and last_mpdu bits set to
  331. 0.
  332. last_msdu
  333. Indicates the last MSDU of the A-MSDU. MPDU end status
  334. is only valid when last_msdu is set.
  335. tcp_udp_chksum_fail
  336. if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is
  337. set, tcp_udp_chksum_fail from 'RX_ATTENTION' will be
  338. reported here:
  339. Indicates that the computed checksum (tcp_udp_chksum)
  340. did not match the checksum in the TCP/UDP header.
  341. (unsupported in HastingsPrime)
  342. ip_chksum_fail
  343. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is
  344. set, ip_chksum_fail from 'RX_MSDU_START' will be reported in
  345. the MSB here:
  346. Indicates that the computed checksum (ip_hdr_chksum) did
  347. not match the checksum in the IP header.
  348. (unsupported in HastingsPrime)
  349. sa_idx
  350. The offset in the address table which matches the MAC
  351. source address.
  352. da_idx_or_sw_peer_id
  353. Based on a register configuration in RXOLE, this field
  354. will contain:
  355. The offset in the address table which matches the MAC
  356. destination address
  357. OR:
  358. sw_peer_id from the address search entry corresponding
  359. to the destination address of the MSDU
  360. msdu_drop
  361. When set, REO shall drop this MSDU and not forward it to
  362. any other ring...
  363. <legal all>
  364. reo_destination_indication
  365. The ID of the REO exit ring where the MSDU frame shall
  366. push after (MPDU level) reordering has finished.
  367. <enum 0 reo_destination_tcl> Reo will push the frame
  368. into the REO2TCL ring
  369. <enum 1 reo_destination_sw1> Reo will push the frame
  370. into the REO2SW1 ring
  371. <enum 2 reo_destination_sw2> Reo will push the frame
  372. into the REO2SW2 ring
  373. <enum 3 reo_destination_sw3> Reo will push the frame
  374. into the REO2SW3 ring
  375. <enum 4 reo_destination_sw4> Reo will push the frame
  376. into the REO2SW4 ring
  377. <enum 5 reo_destination_release> Reo will push the frame
  378. into the REO_release ring
  379. <enum 6 reo_destination_fw> Reo will push the frame into
  380. the REO2FW ring
  381. <enum 7 reo_destination_sw5> Reo will push the frame
  382. into the REO2SW5 ring (REO remaps this in chips without
  383. REO2SW5 ring, e.g. Pine)
  384. <enum 8 reo_destination_sw6> Reo will push the frame
  385. into the REO2SW6 ring (REO remaps this in chips without
  386. REO2SW6 ring, e.g. Pine)
  387. <enum 9 reo_destination_9> REO remaps this <enum 10
  388. reo_destination_10> REO remaps this
  389. <enum 11 reo_destination_11> REO remaps this
  390. <enum 12 reo_destination_12> REO remaps this <enum 13
  391. reo_destination_13> REO remaps this
  392. <enum 14 reo_destination_14> REO remaps this
  393. <enum 15 reo_destination_15> REO remaps this
  394. <enum 16 reo_destination_16> REO remaps this
  395. <enum 17 reo_destination_17> REO remaps this
  396. <enum 18 reo_destination_18> REO remaps this
  397. <enum 19 reo_destination_19> REO remaps this
  398. <enum 20 reo_destination_20> REO remaps this
  399. <enum 21 reo_destination_21> REO remaps this
  400. <enum 22 reo_destination_22> REO remaps this
  401. <enum 23 reo_destination_23> REO remaps this
  402. <enum 24 reo_destination_24> REO remaps this
  403. <enum 25 reo_destination_25> REO remaps this
  404. <enum 26 reo_destination_26> REO remaps this
  405. <enum 27 reo_destination_27> REO remaps this
  406. <enum 28 reo_destination_28> REO remaps this
  407. <enum 29 reo_destination_29> REO remaps this
  408. <enum 30 reo_destination_30> REO remaps this
  409. <enum 31 reo_destination_31> REO remaps this
  410. <legal all>
  411. flow_idx
  412. Flow table index
  413. <legal all>
  414. reserved_12a
  415. <legal 0>
  416. fse_metadata
  417. FSE related meta data:
  418. <legal all>
  419. cce_metadata
  420. CCE related meta data:
  421. <legal all>
  422. sa_sw_peer_id
  423. sw_peer_id from the address search entry corresponding
  424. to the source address of the MSDU
  425. <legal all>
  426. aggregation_count
  427. FISA: Number of MSDU's aggregated so far
  428. Set to zero in chips not supporting FISA, e.g. Pine
  429. <legal all>
  430. flow_aggregation_continuation
  431. FISA: To indicate that this MSDU can be aggregated with
  432. the previous packet with the same flow id
  433. Set to zero in chips not supporting FISA, e.g. Pine
  434. <legal all>
  435. fisa_timeout
  436. FISA: To indicate that the aggregation has restarted for
  437. this flow due to timeout
  438. Set to zero in chips not supporting FISA, e.g. Pine
  439. <legal all>
  440. reserved_15a
  441. <legal 0>
  442. cumulative_l4_checksum
  443. FISA: checksum for MSDU's that is part of this flow
  444. aggregated so far
  445. Set to zero in chips not supporting FISA, e.g. Pine
  446. <legal all>
  447. cumulative_ip_length
  448. FISA: Total MSDU length that is part of this flow
  449. aggregated so far
  450. Set to zero in chips not supporting FISA, e.g. Pine
  451. <legal all>
  452. */
  453. /* Description RX_MSDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY
  454. Field indicates what the reason was that this MPDU frame
  455. was allowed to come into the receive path by RXPCU
  456. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  457. frame filter programming of rxpcu
  458. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  459. regular frame filter and would have been dropped, were it
  460. not for the frame fitting into the 'monitor_client'
  461. category.
  462. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  463. regular frame filter and also did not pass the
  464. rxpcu_monitor_client filter. It would have been dropped
  465. accept that it did pass the 'monitor_other' category.
  466. <legal 0-2>
  467. */
  468. #define RX_MSDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000000
  469. #define RX_MSDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  470. #define RX_MSDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  471. /* Description RX_MSDU_END_0_SW_FRAME_GROUP_ID
  472. SW processes frames based on certain classifications.
  473. This field indicates to what sw classification this MPDU is
  474. mapped.
  475. The classification is given in priority order
  476. <enum 0 sw_frame_group_NDP_frame>
  477. <enum 1 sw_frame_group_Multicast_data>
  478. <enum 2 sw_frame_group_Unicast_data>
  479. <enum 3 sw_frame_group_Null_data > This includes mpdus
  480. of type Data Null as well as QoS Data Null
  481. <enum 4 sw_frame_group_mgmt_0000 >
  482. <enum 5 sw_frame_group_mgmt_0001 >
  483. <enum 6 sw_frame_group_mgmt_0010 >
  484. <enum 7 sw_frame_group_mgmt_0011 >
  485. <enum 8 sw_frame_group_mgmt_0100 >
  486. <enum 9 sw_frame_group_mgmt_0101 >
  487. <enum 10 sw_frame_group_mgmt_0110 >
  488. <enum 11 sw_frame_group_mgmt_0111 >
  489. <enum 12 sw_frame_group_mgmt_1000 >
  490. <enum 13 sw_frame_group_mgmt_1001 >
  491. <enum 14 sw_frame_group_mgmt_1010 >
  492. <enum 15 sw_frame_group_mgmt_1011 >
  493. <enum 16 sw_frame_group_mgmt_1100 >
  494. <enum 17 sw_frame_group_mgmt_1101 >
  495. <enum 18 sw_frame_group_mgmt_1110 >
  496. <enum 19 sw_frame_group_mgmt_1111 >
  497. <enum 20 sw_frame_group_ctrl_0000 >
  498. <enum 21 sw_frame_group_ctrl_0001 >
  499. <enum 22 sw_frame_group_ctrl_0010 >
  500. <enum 23 sw_frame_group_ctrl_0011 >
  501. <enum 24 sw_frame_group_ctrl_0100 >
  502. <enum 25 sw_frame_group_ctrl_0101 >
  503. <enum 26 sw_frame_group_ctrl_0110 >
  504. <enum 27 sw_frame_group_ctrl_0111 >
  505. <enum 28 sw_frame_group_ctrl_1000 >
  506. <enum 29 sw_frame_group_ctrl_1001 >
  507. <enum 30 sw_frame_group_ctrl_1010 >
  508. <enum 31 sw_frame_group_ctrl_1011 >
  509. <enum 32 sw_frame_group_ctrl_1100 >
  510. <enum 33 sw_frame_group_ctrl_1101 >
  511. <enum 34 sw_frame_group_ctrl_1110 >
  512. <enum 35 sw_frame_group_ctrl_1111 >
  513. <enum 36 sw_frame_group_unsupported> This covers type 3
  514. and protocol version != 0
  515. <legal 0-37>
  516. */
  517. #define RX_MSDU_END_0_SW_FRAME_GROUP_ID_OFFSET 0x00000000
  518. #define RX_MSDU_END_0_SW_FRAME_GROUP_ID_LSB 2
  519. #define RX_MSDU_END_0_SW_FRAME_GROUP_ID_MASK 0x000001fc
  520. /* Description RX_MSDU_END_0_RESERVED_0
  521. <legal 0>
  522. */
  523. #define RX_MSDU_END_0_RESERVED_0_OFFSET 0x00000000
  524. #define RX_MSDU_END_0_RESERVED_0_LSB 9
  525. #define RX_MSDU_END_0_RESERVED_0_MASK 0x0000fe00
  526. /* Description RX_MSDU_END_0_PHY_PPDU_ID
  527. A ppdu counter value that PHY increments for every PPDU
  528. received. The counter value wraps around
  529. <legal all>
  530. */
  531. #define RX_MSDU_END_0_PHY_PPDU_ID_OFFSET 0x00000000
  532. #define RX_MSDU_END_0_PHY_PPDU_ID_LSB 16
  533. #define RX_MSDU_END_0_PHY_PPDU_ID_MASK 0xffff0000
  534. /* Description RX_MSDU_END_1_IP_HDR_CHKSUM
  535. This can include the IP header checksum or the pseudo
  536. header checksum used by TCP/UDP checksum.
  537. (with the first byte in the MSB and the second byte in
  538. the LSB, i.e. requiring a byte-swap for little-endian FW/SW
  539. w.r.t. the byte order in a packet)
  540. */
  541. #define RX_MSDU_END_1_IP_HDR_CHKSUM_OFFSET 0x00000004
  542. #define RX_MSDU_END_1_IP_HDR_CHKSUM_LSB 0
  543. #define RX_MSDU_END_1_IP_HDR_CHKSUM_MASK 0x0000ffff
  544. /* Description RX_MSDU_END_1_REPORTED_MPDU_LENGTH
  545. MPDU length before decapsulation. Only valid when
  546. first_msdu is set. This field is taken directly from the
  547. length field of the A-MPDU delimiter or the preamble length
  548. field for non-A-MPDU frames.
  549. */
  550. #define RX_MSDU_END_1_REPORTED_MPDU_LENGTH_OFFSET 0x00000004
  551. #define RX_MSDU_END_1_REPORTED_MPDU_LENGTH_LSB 16
  552. #define RX_MSDU_END_1_REPORTED_MPDU_LENGTH_MASK 0x3fff0000
  553. /* Description RX_MSDU_END_1_RESERVED_1A
  554. <legal 0>
  555. */
  556. #define RX_MSDU_END_1_RESERVED_1A_OFFSET 0x00000004
  557. #define RX_MSDU_END_1_RESERVED_1A_LSB 30
  558. #define RX_MSDU_END_1_RESERVED_1A_MASK 0xc0000000
  559. /* Description RX_MSDU_END_2_KEY_ID_OCTET
  560. The key ID octet from the IV. Only valid when
  561. first_msdu is set.
  562. */
  563. #define RX_MSDU_END_2_KEY_ID_OCTET_OFFSET 0x00000008
  564. #define RX_MSDU_END_2_KEY_ID_OCTET_LSB 0
  565. #define RX_MSDU_END_2_KEY_ID_OCTET_MASK 0x000000ff
  566. /* Description RX_MSDU_END_2_CCE_SUPER_RULE
  567. Indicates the super filter rule
  568. */
  569. #define RX_MSDU_END_2_CCE_SUPER_RULE_OFFSET 0x00000008
  570. #define RX_MSDU_END_2_CCE_SUPER_RULE_LSB 8
  571. #define RX_MSDU_END_2_CCE_SUPER_RULE_MASK 0x00003f00
  572. /* Description RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_TRUNCATE
  573. Classification failed due to truncated frame
  574. */
  575. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_TRUNCATE_OFFSET 0x00000008
  576. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_TRUNCATE_LSB 14
  577. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MASK 0x00004000
  578. /* Description RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_CCE_DIS
  579. Classification failed due to CCE global disable
  580. */
  581. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_CCE_DIS_OFFSET 0x00000008
  582. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_CCE_DIS_LSB 15
  583. #define RX_MSDU_END_2_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MASK 0x00008000
  584. /* Description RX_MSDU_END_2_CUMULATIVE_L3_CHECKSUM
  585. FISA: IP header checksum including the total MSDU length
  586. that is part of this flow aggregated so far, reported if
  587. 'RXOLE_R0_FISA_CTRL. CHKSUM_CUM_IP_LEN_EN' is set
  588. Set to zero in chips not supporting FISA, e.g. Pine
  589. <legal all>
  590. */
  591. #define RX_MSDU_END_2_CUMULATIVE_L3_CHECKSUM_OFFSET 0x00000008
  592. #define RX_MSDU_END_2_CUMULATIVE_L3_CHECKSUM_LSB 16
  593. #define RX_MSDU_END_2_CUMULATIVE_L3_CHECKSUM_MASK 0xffff0000
  594. /* Description RX_MSDU_END_3_RULE_INDICATION_31_0
  595. Bitmap indicating which of rules 31-0 have matched
  596. */
  597. #define RX_MSDU_END_3_RULE_INDICATION_31_0_OFFSET 0x0000000c
  598. #define RX_MSDU_END_3_RULE_INDICATION_31_0_LSB 0
  599. #define RX_MSDU_END_3_RULE_INDICATION_31_0_MASK 0xffffffff
  600. /* Description RX_MSDU_END_4_RULE_INDICATION_63_32
  601. Bitmap indicating which of rules 63-32 have matched
  602. */
  603. #define RX_MSDU_END_4_RULE_INDICATION_63_32_OFFSET 0x00000010
  604. #define RX_MSDU_END_4_RULE_INDICATION_63_32_LSB 0
  605. #define RX_MSDU_END_4_RULE_INDICATION_63_32_MASK 0xffffffff
  606. /* Description RX_MSDU_END_5_DA_OFFSET
  607. Offset into MSDU buffer for DA
  608. */
  609. #define RX_MSDU_END_5_DA_OFFSET_OFFSET 0x00000014
  610. #define RX_MSDU_END_5_DA_OFFSET_LSB 0
  611. #define RX_MSDU_END_5_DA_OFFSET_MASK 0x0000003f
  612. /* Description RX_MSDU_END_5_SA_OFFSET
  613. Offset into MSDU buffer for SA
  614. */
  615. #define RX_MSDU_END_5_SA_OFFSET_OFFSET 0x00000014
  616. #define RX_MSDU_END_5_SA_OFFSET_LSB 6
  617. #define RX_MSDU_END_5_SA_OFFSET_MASK 0x00000fc0
  618. /* Description RX_MSDU_END_5_DA_OFFSET_VALID
  619. da_offset field is valid. This will be set to 0 in case
  620. of a dynamic A-MSDU when DA is compressed
  621. */
  622. #define RX_MSDU_END_5_DA_OFFSET_VALID_OFFSET 0x00000014
  623. #define RX_MSDU_END_5_DA_OFFSET_VALID_LSB 12
  624. #define RX_MSDU_END_5_DA_OFFSET_VALID_MASK 0x00001000
  625. /* Description RX_MSDU_END_5_SA_OFFSET_VALID
  626. sa_offset field is valid. This will be set to 0 in case
  627. of a dynamic A-MSDU when SA is compressed
  628. */
  629. #define RX_MSDU_END_5_SA_OFFSET_VALID_OFFSET 0x00000014
  630. #define RX_MSDU_END_5_SA_OFFSET_VALID_LSB 13
  631. #define RX_MSDU_END_5_SA_OFFSET_VALID_MASK 0x00002000
  632. /* Description RX_MSDU_END_5_RESERVED_5A
  633. <legal 0>
  634. */
  635. #define RX_MSDU_END_5_RESERVED_5A_OFFSET 0x00000014
  636. #define RX_MSDU_END_5_RESERVED_5A_LSB 14
  637. #define RX_MSDU_END_5_RESERVED_5A_MASK 0x0000c000
  638. /* Description RX_MSDU_END_5_L3_TYPE
  639. The 16-bit type value indicating the type of L3 later
  640. extracted from LLC/SNAP, set to zero if SNAP is not
  641. available
  642. */
  643. #define RX_MSDU_END_5_L3_TYPE_OFFSET 0x00000014
  644. #define RX_MSDU_END_5_L3_TYPE_LSB 16
  645. #define RX_MSDU_END_5_L3_TYPE_MASK 0xffff0000
  646. /* Description RX_MSDU_END_6_IPV6_OPTIONS_CRC
  647. 32 bit CRC computed out of IP v6 extension headers
  648. */
  649. #define RX_MSDU_END_6_IPV6_OPTIONS_CRC_OFFSET 0x00000018
  650. #define RX_MSDU_END_6_IPV6_OPTIONS_CRC_LSB 0
  651. #define RX_MSDU_END_6_IPV6_OPTIONS_CRC_MASK 0xffffffff
  652. /* Description RX_MSDU_END_7_TCP_SEQ_NUMBER
  653. TCP sequence number (as a number assembled from a TCP
  654. packet in big-endian order, i.e. requiring a byte-swap for
  655. little-endian FW/SW w.r.t. the byte order in a packet)
  656. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  657. OVERRIDE_MSDU_END_FIELDS' is set, toeplitz_hash_2_or_4 from
  658. 'RX_MSDU_START' will be reported here:
  659. Controlled by multiple RxOLE registers for TCP/UDP over
  660. IPv4/IPv6 - Either Toeplitz hash computed over 2-tuple IPv4
  661. or IPv6 src/dest addresses is reported; or, Toeplitz hash
  662. computed over 4-tuple IPv4 or IPv6 src/dest addresses and
  663. src/dest ports is reported. The Flow_id_toeplitz hash can
  664. also be reported here. Usually the hash reported here is the
  665. one used for hash-based REO routing (see
  666. use_flow_id_toeplitz_clfy in 'RXPT_CLASSIFY_INFO').
  667. Optionally the 3-tuple Toeplitz hash over IPv4 or IPv6
  668. src/dest addresses and L4 protocol can be reported here.
  669. (Unsupported in HastingsPrime)
  670. */
  671. #define RX_MSDU_END_7_TCP_SEQ_NUMBER_OFFSET 0x0000001c
  672. #define RX_MSDU_END_7_TCP_SEQ_NUMBER_LSB 0
  673. #define RX_MSDU_END_7_TCP_SEQ_NUMBER_MASK 0xffffffff
  674. /* Description RX_MSDU_END_8_TCP_ACK_NUMBER
  675. TCP acknowledge number (as a number assembled from a TCP
  676. packet in big-endian order, i.e. requiring a byte-swap for
  677. little-endian FW/SW w.r.t. the byte order in a packet)
  678. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  679. OVERRIDE_MSDU_END_FIELDS' is set, flow_id_toeplitz from
  680. 'RX_MSDU_START' will be reported here:
  681. Toeplitz hash of 5-tuple {IP source address, IP
  682. destination address, IP source port, IP destination port, L4
  683. protocol} in case of non-IPSec. In case of IPSec - Toeplitz
  684. hash of 4-tuple {IP source address, IP destination address,
  685. SPI, L4 protocol}. Optionally the 3-tuple Toeplitz hash over
  686. IPv4 or IPv6 src/dest addresses and L4 protocol can be
  687. reported here.
  688. The relevant Toeplitz key registers are provided in
  689. RxOLE's instance of common parser module. These registers
  690. are separate from the Toeplitz keys used by ASE/FSE modules
  691. inside RxOLE. The actual value will be passed on from common
  692. parser module to RxOLE in one of the WHO_* TLVs.
  693. (Unsupported in HastingsPrime)
  694. */
  695. #define RX_MSDU_END_8_TCP_ACK_NUMBER_OFFSET 0x00000020
  696. #define RX_MSDU_END_8_TCP_ACK_NUMBER_LSB 0
  697. #define RX_MSDU_END_8_TCP_ACK_NUMBER_MASK 0xffffffff
  698. /* Description RX_MSDU_END_9_TCP_FLAG
  699. TCP flags
  700. {NS,CWR,ECE,URG,ACK,PSH, RST ,SYN,FIN}(with the NS bit
  701. in bit 8 and the FIN bit in bit 0, i.e. in big-endian order,
  702. i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
  703. the byte order in a packet)
  704. */
  705. #define RX_MSDU_END_9_TCP_FLAG_OFFSET 0x00000024
  706. #define RX_MSDU_END_9_TCP_FLAG_LSB 0
  707. #define RX_MSDU_END_9_TCP_FLAG_MASK 0x000001ff
  708. /* Description RX_MSDU_END_9_LRO_ELIGIBLE
  709. Computed out of TCP and IP fields to indicate that this
  710. MSDU is eligible for LRO
  711. */
  712. #define RX_MSDU_END_9_LRO_ELIGIBLE_OFFSET 0x00000024
  713. #define RX_MSDU_END_9_LRO_ELIGIBLE_LSB 9
  714. #define RX_MSDU_END_9_LRO_ELIGIBLE_MASK 0x00000200
  715. /* Description RX_MSDU_END_9_RESERVED_9A
  716. NOTE: DO not assign a field... Internally used in
  717. RXOLE..
  718. <legal 0>
  719. */
  720. #define RX_MSDU_END_9_RESERVED_9A_OFFSET 0x00000024
  721. #define RX_MSDU_END_9_RESERVED_9A_LSB 10
  722. #define RX_MSDU_END_9_RESERVED_9A_MASK 0x0000fc00
  723. /* Description RX_MSDU_END_9_WINDOW_SIZE
  724. TCP receive window size (as a number assembled from a
  725. TCP packet in big-endian order, i.e. requiring a byte-swap
  726. for little-endian FW/SW w.r.t. the byte order in a packet)
  727. In Pine, if 'RXOLE_R0_MISC_CONFIG.
  728. OVERRIDE_MSDU_END_FIELDS' is set, msdu_length from
  729. 'RX_MSDU_START' will be reported in the 14 LSBs here:
  730. MSDU length in bytes after decapsulation. This field is
  731. still valid for MPDU frames without A-MSDU. It still
  732. represents MSDU length after decapsulation.
  733. (Unsupported in HastingsPrime)
  734. */
  735. #define RX_MSDU_END_9_WINDOW_SIZE_OFFSET 0x00000024
  736. #define RX_MSDU_END_9_WINDOW_SIZE_LSB 16
  737. #define RX_MSDU_END_9_WINDOW_SIZE_MASK 0xffff0000
  738. /* Description RX_MSDU_END_10_TCP_UDP_CHKSUM
  739. The value of the computed TCP/UDP checksum. A mode bit
  740. selects whether this checksum is the full checksum or the
  741. partial checksum which does not include the pseudo header.
  742. (with the first byte in the MSB and the second byte in the
  743. LSB, i.e. requiring a byte-swap for little-endian FW/SW
  744. w.r.t. the byte order in a packet)
  745. */
  746. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_OFFSET 0x00000028
  747. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_LSB 0
  748. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_MASK 0x0000ffff
  749. /* Description RX_MSDU_END_10_SA_IDX_TIMEOUT
  750. Indicates an unsuccessful MAC source address search due
  751. to the expiring of the search timer.
  752. */
  753. #define RX_MSDU_END_10_SA_IDX_TIMEOUT_OFFSET 0x00000028
  754. #define RX_MSDU_END_10_SA_IDX_TIMEOUT_LSB 16
  755. #define RX_MSDU_END_10_SA_IDX_TIMEOUT_MASK 0x00010000
  756. /* Description RX_MSDU_END_10_DA_IDX_TIMEOUT
  757. Indicates an unsuccessful MAC destination address search
  758. due to the expiring of the search timer.
  759. */
  760. #define RX_MSDU_END_10_DA_IDX_TIMEOUT_OFFSET 0x00000028
  761. #define RX_MSDU_END_10_DA_IDX_TIMEOUT_LSB 17
  762. #define RX_MSDU_END_10_DA_IDX_TIMEOUT_MASK 0x00020000
  763. /* Description RX_MSDU_END_10_MSDU_LIMIT_ERROR
  764. Indicates that the MSDU threshold was exceeded and thus
  765. all the rest of the MSDUs will not be scattered and will not
  766. be decapsulated but will be DMA'ed in RAW format as a single
  767. MSDU buffer
  768. */
  769. #define RX_MSDU_END_10_MSDU_LIMIT_ERROR_OFFSET 0x00000028
  770. #define RX_MSDU_END_10_MSDU_LIMIT_ERROR_LSB 18
  771. #define RX_MSDU_END_10_MSDU_LIMIT_ERROR_MASK 0x00040000
  772. /* Description RX_MSDU_END_10_FLOW_IDX_TIMEOUT
  773. Indicates an unsuccessful flow search due to the
  774. expiring of the search timer.
  775. <legal all>
  776. */
  777. #define RX_MSDU_END_10_FLOW_IDX_TIMEOUT_OFFSET 0x00000028
  778. #define RX_MSDU_END_10_FLOW_IDX_TIMEOUT_LSB 19
  779. #define RX_MSDU_END_10_FLOW_IDX_TIMEOUT_MASK 0x00080000
  780. /* Description RX_MSDU_END_10_FLOW_IDX_INVALID
  781. flow id is not valid
  782. <legal all>
  783. */
  784. #define RX_MSDU_END_10_FLOW_IDX_INVALID_OFFSET 0x00000028
  785. #define RX_MSDU_END_10_FLOW_IDX_INVALID_LSB 20
  786. #define RX_MSDU_END_10_FLOW_IDX_INVALID_MASK 0x00100000
  787. /* Description RX_MSDU_END_10_WIFI_PARSER_ERROR
  788. Indicates that the WiFi frame has one of the following
  789. errors
  790. o has less than minimum allowed bytes as per standard
  791. o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
  792. <legal all>
  793. */
  794. #define RX_MSDU_END_10_WIFI_PARSER_ERROR_OFFSET 0x00000028
  795. #define RX_MSDU_END_10_WIFI_PARSER_ERROR_LSB 21
  796. #define RX_MSDU_END_10_WIFI_PARSER_ERROR_MASK 0x00200000
  797. /* Description RX_MSDU_END_10_AMSDU_PARSER_ERROR
  798. A-MSDU could not be properly de-agregated.
  799. <legal all>
  800. */
  801. #define RX_MSDU_END_10_AMSDU_PARSER_ERROR_OFFSET 0x00000028
  802. #define RX_MSDU_END_10_AMSDU_PARSER_ERROR_LSB 22
  803. #define RX_MSDU_END_10_AMSDU_PARSER_ERROR_MASK 0x00400000
  804. /* Description RX_MSDU_END_10_SA_IS_VALID
  805. Indicates that OLE found a valid SA entry
  806. */
  807. #define RX_MSDU_END_10_SA_IS_VALID_OFFSET 0x00000028
  808. #define RX_MSDU_END_10_SA_IS_VALID_LSB 23
  809. #define RX_MSDU_END_10_SA_IS_VALID_MASK 0x00800000
  810. /* Description RX_MSDU_END_10_DA_IS_VALID
  811. Indicates that OLE found a valid DA entry
  812. */
  813. #define RX_MSDU_END_10_DA_IS_VALID_OFFSET 0x00000028
  814. #define RX_MSDU_END_10_DA_IS_VALID_LSB 24
  815. #define RX_MSDU_END_10_DA_IS_VALID_MASK 0x01000000
  816. /* Description RX_MSDU_END_10_DA_IS_MCBC
  817. Field Only valid if da_is_valid is set
  818. Indicates the DA address was a Multicast of Broadcast
  819. address.
  820. */
  821. #define RX_MSDU_END_10_DA_IS_MCBC_OFFSET 0x00000028
  822. #define RX_MSDU_END_10_DA_IS_MCBC_LSB 25
  823. #define RX_MSDU_END_10_DA_IS_MCBC_MASK 0x02000000
  824. /* Description RX_MSDU_END_10_L3_HEADER_PADDING
  825. Number of bytes padded to make sure that the L3 header
  826. will always start of a Dword boundary
  827. */
  828. #define RX_MSDU_END_10_L3_HEADER_PADDING_OFFSET 0x00000028
  829. #define RX_MSDU_END_10_L3_HEADER_PADDING_LSB 26
  830. #define RX_MSDU_END_10_L3_HEADER_PADDING_MASK 0x0c000000
  831. /* Description RX_MSDU_END_10_FIRST_MSDU
  832. Indicates the first MSDU of A-MSDU. If both first_msdu
  833. and last_msdu are set in the MSDU then this is a
  834. non-aggregated MSDU frame: normal MPDU. Interior MSDU in an
  835. A-MSDU shall have both first_mpdu and last_mpdu bits set to
  836. 0.
  837. */
  838. #define RX_MSDU_END_10_FIRST_MSDU_OFFSET 0x00000028
  839. #define RX_MSDU_END_10_FIRST_MSDU_LSB 28
  840. #define RX_MSDU_END_10_FIRST_MSDU_MASK 0x10000000
  841. /* Description RX_MSDU_END_10_LAST_MSDU
  842. Indicates the last MSDU of the A-MSDU. MPDU end status
  843. is only valid when last_msdu is set.
  844. */
  845. #define RX_MSDU_END_10_LAST_MSDU_OFFSET 0x00000028
  846. #define RX_MSDU_END_10_LAST_MSDU_LSB 29
  847. #define RX_MSDU_END_10_LAST_MSDU_MASK 0x20000000
  848. /* Description RX_MSDU_END_10_TCP_UDP_CHKSUM_FAIL
  849. if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is
  850. set, tcp_udp_chksum_fail from 'RX_ATTENTION' will be
  851. reported here:
  852. Indicates that the computed checksum (tcp_udp_chksum)
  853. did not match the checksum in the TCP/UDP header.
  854. (unsupported in HastingsPrime)
  855. */
  856. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000028
  857. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_FAIL_LSB 30
  858. #define RX_MSDU_END_10_TCP_UDP_CHKSUM_FAIL_MASK 0x40000000
  859. /* Description RX_MSDU_END_10_IP_CHKSUM_FAIL
  860. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is
  861. set, ip_chksum_fail from 'RX_MSDU_START' will be reported in
  862. the MSB here:
  863. Indicates that the computed checksum (ip_hdr_chksum) did
  864. not match the checksum in the IP header.
  865. (unsupported in HastingsPrime)
  866. */
  867. #define RX_MSDU_END_10_IP_CHKSUM_FAIL_OFFSET 0x00000028
  868. #define RX_MSDU_END_10_IP_CHKSUM_FAIL_LSB 31
  869. #define RX_MSDU_END_10_IP_CHKSUM_FAIL_MASK 0x80000000
  870. /* Description RX_MSDU_END_11_SA_IDX
  871. The offset in the address table which matches the MAC
  872. source address.
  873. */
  874. #define RX_MSDU_END_11_SA_IDX_OFFSET 0x0000002c
  875. #define RX_MSDU_END_11_SA_IDX_LSB 0
  876. #define RX_MSDU_END_11_SA_IDX_MASK 0x0000ffff
  877. /* Description RX_MSDU_END_11_DA_IDX_OR_SW_PEER_ID
  878. Based on a register configuration in RXOLE, this field
  879. will contain:
  880. The offset in the address table which matches the MAC
  881. destination address
  882. OR:
  883. sw_peer_id from the address search entry corresponding
  884. to the destination address of the MSDU
  885. */
  886. #define RX_MSDU_END_11_DA_IDX_OR_SW_PEER_ID_OFFSET 0x0000002c
  887. #define RX_MSDU_END_11_DA_IDX_OR_SW_PEER_ID_LSB 16
  888. #define RX_MSDU_END_11_DA_IDX_OR_SW_PEER_ID_MASK 0xffff0000
  889. /* Description RX_MSDU_END_12_MSDU_DROP
  890. When set, REO shall drop this MSDU and not forward it to
  891. any other ring...
  892. <legal all>
  893. */
  894. #define RX_MSDU_END_12_MSDU_DROP_OFFSET 0x00000030
  895. #define RX_MSDU_END_12_MSDU_DROP_LSB 0
  896. #define RX_MSDU_END_12_MSDU_DROP_MASK 0x00000001
  897. /* Description RX_MSDU_END_12_REO_DESTINATION_INDICATION
  898. The ID of the REO exit ring where the MSDU frame shall
  899. push after (MPDU level) reordering has finished.
  900. <enum 0 reo_destination_tcl> Reo will push the frame
  901. into the REO2TCL ring
  902. <enum 1 reo_destination_sw1> Reo will push the frame
  903. into the REO2SW1 ring
  904. <enum 2 reo_destination_sw2> Reo will push the frame
  905. into the REO2SW2 ring
  906. <enum 3 reo_destination_sw3> Reo will push the frame
  907. into the REO2SW3 ring
  908. <enum 4 reo_destination_sw4> Reo will push the frame
  909. into the REO2SW4 ring
  910. <enum 5 reo_destination_release> Reo will push the frame
  911. into the REO_release ring
  912. <enum 6 reo_destination_fw> Reo will push the frame into
  913. the REO2FW ring
  914. <enum 7 reo_destination_sw5> Reo will push the frame
  915. into the REO2SW5 ring (REO remaps this in chips without
  916. REO2SW5 ring, e.g. Pine)
  917. <enum 8 reo_destination_sw6> Reo will push the frame
  918. into the REO2SW6 ring (REO remaps this in chips without
  919. REO2SW6 ring, e.g. Pine)
  920. <enum 9 reo_destination_9> REO remaps this <enum 10
  921. reo_destination_10> REO remaps this
  922. <enum 11 reo_destination_11> REO remaps this
  923. <enum 12 reo_destination_12> REO remaps this <enum 13
  924. reo_destination_13> REO remaps this
  925. <enum 14 reo_destination_14> REO remaps this
  926. <enum 15 reo_destination_15> REO remaps this
  927. <enum 16 reo_destination_16> REO remaps this
  928. <enum 17 reo_destination_17> REO remaps this
  929. <enum 18 reo_destination_18> REO remaps this
  930. <enum 19 reo_destination_19> REO remaps this
  931. <enum 20 reo_destination_20> REO remaps this
  932. <enum 21 reo_destination_21> REO remaps this
  933. <enum 22 reo_destination_22> REO remaps this
  934. <enum 23 reo_destination_23> REO remaps this
  935. <enum 24 reo_destination_24> REO remaps this
  936. <enum 25 reo_destination_25> REO remaps this
  937. <enum 26 reo_destination_26> REO remaps this
  938. <enum 27 reo_destination_27> REO remaps this
  939. <enum 28 reo_destination_28> REO remaps this
  940. <enum 29 reo_destination_29> REO remaps this
  941. <enum 30 reo_destination_30> REO remaps this
  942. <enum 31 reo_destination_31> REO remaps this
  943. <legal all>
  944. */
  945. #define RX_MSDU_END_12_REO_DESTINATION_INDICATION_OFFSET 0x00000030
  946. #define RX_MSDU_END_12_REO_DESTINATION_INDICATION_LSB 1
  947. #define RX_MSDU_END_12_REO_DESTINATION_INDICATION_MASK 0x0000003e
  948. /* Description RX_MSDU_END_12_FLOW_IDX
  949. Flow table index
  950. <legal all>
  951. */
  952. #define RX_MSDU_END_12_FLOW_IDX_OFFSET 0x00000030
  953. #define RX_MSDU_END_12_FLOW_IDX_LSB 6
  954. #define RX_MSDU_END_12_FLOW_IDX_MASK 0x03ffffc0
  955. /* Description RX_MSDU_END_12_RESERVED_12A
  956. <legal 0>
  957. */
  958. #define RX_MSDU_END_12_RESERVED_12A_OFFSET 0x00000030
  959. #define RX_MSDU_END_12_RESERVED_12A_LSB 26
  960. #define RX_MSDU_END_12_RESERVED_12A_MASK 0xfc000000
  961. /* Description RX_MSDU_END_13_FSE_METADATA
  962. FSE related meta data:
  963. <legal all>
  964. */
  965. #define RX_MSDU_END_13_FSE_METADATA_OFFSET 0x00000034
  966. #define RX_MSDU_END_13_FSE_METADATA_LSB 0
  967. #define RX_MSDU_END_13_FSE_METADATA_MASK 0xffffffff
  968. /* Description RX_MSDU_END_14_CCE_METADATA
  969. CCE related meta data:
  970. <legal all>
  971. */
  972. #define RX_MSDU_END_14_CCE_METADATA_OFFSET 0x00000038
  973. #define RX_MSDU_END_14_CCE_METADATA_LSB 0
  974. #define RX_MSDU_END_14_CCE_METADATA_MASK 0x0000ffff
  975. /* Description RX_MSDU_END_14_SA_SW_PEER_ID
  976. sw_peer_id from the address search entry corresponding
  977. to the source address of the MSDU
  978. <legal all>
  979. */
  980. #define RX_MSDU_END_14_SA_SW_PEER_ID_OFFSET 0x00000038
  981. #define RX_MSDU_END_14_SA_SW_PEER_ID_LSB 16
  982. #define RX_MSDU_END_14_SA_SW_PEER_ID_MASK 0xffff0000
  983. /* Description RX_MSDU_END_15_AGGREGATION_COUNT
  984. FISA: Number of MSDU's aggregated so far
  985. Set to zero in chips not supporting FISA, e.g. Pine
  986. <legal all>
  987. */
  988. #define RX_MSDU_END_15_AGGREGATION_COUNT_OFFSET 0x0000003c
  989. #define RX_MSDU_END_15_AGGREGATION_COUNT_LSB 0
  990. #define RX_MSDU_END_15_AGGREGATION_COUNT_MASK 0x000000ff
  991. /* Description RX_MSDU_END_15_FLOW_AGGREGATION_CONTINUATION
  992. FISA: To indicate that this MSDU can be aggregated with
  993. the previous packet with the same flow id
  994. Set to zero in chips not supporting FISA, e.g. Pine
  995. <legal all>
  996. */
  997. #define RX_MSDU_END_15_FLOW_AGGREGATION_CONTINUATION_OFFSET 0x0000003c
  998. #define RX_MSDU_END_15_FLOW_AGGREGATION_CONTINUATION_LSB 8
  999. #define RX_MSDU_END_15_FLOW_AGGREGATION_CONTINUATION_MASK 0x00000100
  1000. /* Description RX_MSDU_END_15_FISA_TIMEOUT
  1001. FISA: To indicate that the aggregation has restarted for
  1002. this flow due to timeout
  1003. Set to zero in chips not supporting FISA, e.g. Pine
  1004. <legal all>
  1005. */
  1006. #define RX_MSDU_END_15_FISA_TIMEOUT_OFFSET 0x0000003c
  1007. #define RX_MSDU_END_15_FISA_TIMEOUT_LSB 9
  1008. #define RX_MSDU_END_15_FISA_TIMEOUT_MASK 0x00000200
  1009. /* Description RX_MSDU_END_15_RESERVED_15A
  1010. <legal 0>
  1011. */
  1012. #define RX_MSDU_END_15_RESERVED_15A_OFFSET 0x0000003c
  1013. #define RX_MSDU_END_15_RESERVED_15A_LSB 10
  1014. #define RX_MSDU_END_15_RESERVED_15A_MASK 0xfffffc00
  1015. /* Description RX_MSDU_END_16_CUMULATIVE_L4_CHECKSUM
  1016. FISA: checksum for MSDU's that is part of this flow
  1017. aggregated so far
  1018. Set to zero in chips not supporting FISA, e.g. Pine
  1019. <legal all>
  1020. */
  1021. #define RX_MSDU_END_16_CUMULATIVE_L4_CHECKSUM_OFFSET 0x00000040
  1022. #define RX_MSDU_END_16_CUMULATIVE_L4_CHECKSUM_LSB 0
  1023. #define RX_MSDU_END_16_CUMULATIVE_L4_CHECKSUM_MASK 0x0000ffff
  1024. /* Description RX_MSDU_END_16_CUMULATIVE_IP_LENGTH
  1025. FISA: Total MSDU length that is part of this flow
  1026. aggregated so far
  1027. Set to zero in chips not supporting FISA, e.g. Pine
  1028. <legal all>
  1029. */
  1030. #define RX_MSDU_END_16_CUMULATIVE_IP_LENGTH_OFFSET 0x00000040
  1031. #define RX_MSDU_END_16_CUMULATIVE_IP_LENGTH_LSB 16
  1032. #define RX_MSDU_END_16_CUMULATIVE_IP_LENGTH_MASK 0xffff0000
  1033. #endif // _RX_MSDU_END_H_