rx_msdu_end.h 50 KB

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