tcl_entrance_from_ppe_ring.h 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
  2. *
  3. * Permission to use, copy, modify, and/or distribute this software for any
  4. * purpose with or without fee is hereby granted, provided that the above
  5. * copyright notice and this permission notice appear in all copies.
  6. *
  7. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  8. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  9. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  10. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  11. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  12. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  13. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  14. */
  15. #ifndef _TCL_ENTRANCE_FROM_PPE_RING_H_
  16. #define _TCL_ENTRANCE_FROM_PPE_RING_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_TCL_ENTRANCE_FROM_PPE_RING 8
  20. struct tcl_entrance_from_ppe_ring {
  21. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  22. uint32_t buffer_addr_lo : 32; // [31:0]
  23. uint32_t buffer_addr_hi : 8, // [7:0]
  24. drop_prec : 2, // [9:8]
  25. fake_mac_header : 1, // [10:10]
  26. known_ind : 1, // [11:11]
  27. cpu_code_valid : 1, // [12:12]
  28. tunnel_term_ind : 1, // [13:13]
  29. tunnel_type : 1, // [14:14]
  30. wifi_qos_flag : 1, // [15:15]
  31. service_code : 9, // [24:16]
  32. reserved_1b : 1, // [25:25]
  33. int_pri : 4, // [29:26]
  34. more : 1, // [30:30]
  35. reserved_1a : 1; // [31:31]
  36. uint32_t opaque_lo : 32; // [31:0]
  37. uint32_t opaque_hi : 32; // [31:0]
  38. uint32_t src_info : 16, // [15:0]
  39. dst_info : 16; // [31:16]
  40. uint32_t data_length : 18, // [17:0]
  41. pool_id : 6, // [23:18]
  42. wifi_qos : 8; // [31:24]
  43. uint32_t data_offset : 12, // [11:0]
  44. l4_csum_status : 1, // [12:12]
  45. l3_csum_status : 1, // [13:13]
  46. hash_flag : 2, // [15:14]
  47. hash_value : 16; // [31:16]
  48. uint32_t dscp : 8, // [7:0]
  49. valid_toggle : 1, // [8:8]
  50. pppoe_flag : 1, // [9:9]
  51. svlan_flag : 1, // [10:10]
  52. cvlan_flag : 1, // [11:11]
  53. pid : 4, // [15:12]
  54. l3_offset : 8, // [23:16]
  55. l4_offset : 8; // [31:24]
  56. #else
  57. uint32_t buffer_addr_lo : 32; // [31:0]
  58. uint32_t reserved_1a : 1, // [31:31]
  59. more : 1, // [30:30]
  60. int_pri : 4, // [29:26]
  61. reserved_1b : 1, // [25:25]
  62. service_code : 9, // [24:16]
  63. wifi_qos_flag : 1, // [15:15]
  64. tunnel_type : 1, // [14:14]
  65. tunnel_term_ind : 1, // [13:13]
  66. cpu_code_valid : 1, // [12:12]
  67. known_ind : 1, // [11:11]
  68. fake_mac_header : 1, // [10:10]
  69. drop_prec : 2, // [9:8]
  70. buffer_addr_hi : 8; // [7:0]
  71. uint32_t opaque_lo : 32; // [31:0]
  72. uint32_t opaque_hi : 32; // [31:0]
  73. uint32_t dst_info : 16, // [31:16]
  74. src_info : 16; // [15:0]
  75. uint32_t wifi_qos : 8, // [31:24]
  76. pool_id : 6, // [23:18]
  77. data_length : 18; // [17:0]
  78. uint32_t hash_value : 16, // [31:16]
  79. hash_flag : 2, // [15:14]
  80. l3_csum_status : 1, // [13:13]
  81. l4_csum_status : 1, // [12:12]
  82. data_offset : 12; // [11:0]
  83. uint32_t l4_offset : 8, // [31:24]
  84. l3_offset : 8, // [23:16]
  85. pid : 4, // [15:12]
  86. cvlan_flag : 1, // [11:11]
  87. svlan_flag : 1, // [10:10]
  88. pppoe_flag : 1, // [9:9]
  89. valid_toggle : 1, // [8:8]
  90. dscp : 8; // [7:0]
  91. #endif
  92. };
  93. /* Description BUFFER_ADDR_LO
  94. Consumer: TCL
  95. Producer: PPE DMA/SW
  96. Lower 32 bits of the buffer address buffer_addr_31_0.
  97. This is the address of the starting point of the buffer
  98. directly from the PPE Rx Fill descriptor. TCL needs to calculate
  99. the packet data address based on DATA_OFFSET.
  100. <legal all>
  101. */
  102. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_LO_OFFSET 0x00000000
  103. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_LO_LSB 0
  104. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_LO_MSB 31
  105. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_LO_MASK 0xffffffff
  106. /* Description BUFFER_ADDR_HI
  107. Consumer: TCL/TXDMA
  108. Producer: PPE DMA/SW
  109. Higher 8 bits of the buffer address buffer_addr_39_32 (Not
  110. supported in Alder PPE but could be supported by PPE in
  111. future). Also see BUFFER_ADDR_LO.
  112. <legal all>
  113. */
  114. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_HI_OFFSET 0x00000004
  115. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_HI_LSB 0
  116. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_HI_MSB 7
  117. #define TCL_ENTRANCE_FROM_PPE_RING_BUFFER_ADDR_HI_MASK 0x000000ff
  118. /* Description DROP_PREC
  119. Consumer: TCL/TQM
  120. Producer: Switch Core
  121. Packet drop precedence
  122. Waikiki TCL maps DROP_PREC to field msdu_color in structure
  123. 'TX_MSDU_DETAILS' in 'TQM_ENTRANCE_RING' if the internal
  124. parameter 'DROP_PREC_ENABLE' is set (see field DST_INFO)
  125. and DROP_PREC is set to a legal value. Otherwise msdu_color
  126. is set to MSDU_COLORLESS.
  127. <enum 0 PPE_drop_prec_green>
  128. <enum 1 PPE_drop_prec_yellow>
  129. <enum 2 PPE_drop_prec_red>
  130. <legal 0-2>
  131. */
  132. #define TCL_ENTRANCE_FROM_PPE_RING_DROP_PREC_OFFSET 0x00000004
  133. #define TCL_ENTRANCE_FROM_PPE_RING_DROP_PREC_LSB 8
  134. #define TCL_ENTRANCE_FROM_PPE_RING_DROP_PREC_MSB 9
  135. #define TCL_ENTRANCE_FROM_PPE_RING_DROP_PREC_MASK 0x00000300
  136. /* Description FAKE_MAC_HEADER
  137. Consumer: SW
  138. Producer: Switch Core
  139. Indicates the MAC header is fake (Not supported for direct
  140. switch connect)
  141. 0: No fake MAC header
  142. 1: Fake MAC header
  143. <legal 0>
  144. */
  145. #define TCL_ENTRANCE_FROM_PPE_RING_FAKE_MAC_HEADER_OFFSET 0x00000004
  146. #define TCL_ENTRANCE_FROM_PPE_RING_FAKE_MAC_HEADER_LSB 10
  147. #define TCL_ENTRANCE_FROM_PPE_RING_FAKE_MAC_HEADER_MSB 10
  148. #define TCL_ENTRANCE_FROM_PPE_RING_FAKE_MAC_HEADER_MASK 0x00000400
  149. /* Description KNOWN_IND
  150. Consumer: TCL
  151. Producer: Switch Core
  152. Known packet indication (Ignored by Waikiki TCL)
  153. 0: packet is unknown flooding.
  154. 1: packet is forwarded by any known entry.
  155. <legal all>
  156. */
  157. #define TCL_ENTRANCE_FROM_PPE_RING_KNOWN_IND_OFFSET 0x00000004
  158. #define TCL_ENTRANCE_FROM_PPE_RING_KNOWN_IND_LSB 11
  159. #define TCL_ENTRANCE_FROM_PPE_RING_KNOWN_IND_MSB 11
  160. #define TCL_ENTRANCE_FROM_PPE_RING_KNOWN_IND_MASK 0x00000800
  161. /* Description CPU_CODE_VALID
  162. Consumer: SW
  163. Producer: Switch Core
  164. Indicates validity of 'CPU_CODE' (used to indicate the reason
  165. the packet is sent to the CPU) (Not supported for direct
  166. switch connect)
  167. 0: Invalid
  168. 1: Valid
  169. <legal 0>
  170. */
  171. #define TCL_ENTRANCE_FROM_PPE_RING_CPU_CODE_VALID_OFFSET 0x00000004
  172. #define TCL_ENTRANCE_FROM_PPE_RING_CPU_CODE_VALID_LSB 12
  173. #define TCL_ENTRANCE_FROM_PPE_RING_CPU_CODE_VALID_MSB 12
  174. #define TCL_ENTRANCE_FROM_PPE_RING_CPU_CODE_VALID_MASK 0x00001000
  175. /* Description TUNNEL_TERM_IND
  176. Consumer: TCL
  177. Producer: Switch Core
  178. Tunnel termination indication (Ignored by Waikiki TCL)
  179. 0: packet is not decapsulated
  180. 1: packet is decapsulated
  181. <legal all>
  182. */
  183. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TERM_IND_OFFSET 0x00000004
  184. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TERM_IND_LSB 13
  185. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TERM_IND_MSB 13
  186. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TERM_IND_MASK 0x00002000
  187. /* Description TUNNEL_TYPE
  188. Consumer: TCL
  189. Producer: Switch Core
  190. Tunnel Type (Ignored by Waikiki TCL)
  191. 0: Layer 2 tunnel
  192. 1: Layer 3 tunnel
  193. <legal all>
  194. */
  195. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TYPE_OFFSET 0x00000004
  196. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TYPE_LSB 14
  197. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TYPE_MSB 14
  198. #define TCL_ENTRANCE_FROM_PPE_RING_TUNNEL_TYPE_MASK 0x00004000
  199. /* Description WIFI_QOS_FLAG
  200. Consumer: TCL
  201. Producer: Switch Core
  202. Wi-Fi QoS Flag
  203. 0: If WIFI_QOS[7] is set, WIFI_QOS[3:1] provides a 3-bit
  204. HLOS_TID value and HLOS_TID_overwrite is enabled, else
  205. there is no overwrite.
  206. 1: WIFI_QOS[5:0] provides a 6-bit "flow pointer override"
  207. value by using:
  208. who_classify_info_sel = WIFI_QOS[5:4],
  209. HLOS_TID = WIFI_QOS[3:1],
  210. flow_override = WIFI_QOS[0],
  211. and HLOS_TID_overwrite and flow_override_enable are set.
  212. Also see field INT_PRI for another way to enable HLOS_TID_overwrite.
  213. <legal all>
  214. */
  215. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_FLAG_OFFSET 0x00000004
  216. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_FLAG_LSB 15
  217. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_FLAG_MSB 15
  218. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_FLAG_MASK 0x00008000
  219. /* Description SERVICE_CODE
  220. Consumer: TCL
  221. Producer: Switch Core
  222. Opaque service code between engines (Ignored by Waikiki
  223. TCL)
  224. 0: Indicates the end of service path
  225. <legal all>
  226. */
  227. #define TCL_ENTRANCE_FROM_PPE_RING_SERVICE_CODE_OFFSET 0x00000004
  228. #define TCL_ENTRANCE_FROM_PPE_RING_SERVICE_CODE_LSB 16
  229. #define TCL_ENTRANCE_FROM_PPE_RING_SERVICE_CODE_MSB 24
  230. #define TCL_ENTRANCE_FROM_PPE_RING_SERVICE_CODE_MASK 0x01ff0000
  231. /* Description RESERVED_1B
  232. <legal 0, 1>
  233. */
  234. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1B_OFFSET 0x00000004
  235. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1B_LSB 25
  236. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1B_MSB 25
  237. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1B_MASK 0x02000000
  238. /* Description INT_PRI
  239. Consumer: TCL
  240. Producer: Switch Core
  241. Internal/User Priority (Ignored by Waikiki TCL)
  242. Waikiki TCL maps INT_PRI to HLOS_TID using an internal mapping
  243. table if the internal parameter 'USE_PPE_INT_PRI_FOR_TID'
  244. is set (see field DST_INFO) and WIFI_QOS_FLAG is unset and
  245. WIFI_QOS[7] is unset.
  246. <legal all>
  247. */
  248. #define TCL_ENTRANCE_FROM_PPE_RING_INT_PRI_OFFSET 0x00000004
  249. #define TCL_ENTRANCE_FROM_PPE_RING_INT_PRI_LSB 26
  250. #define TCL_ENTRANCE_FROM_PPE_RING_INT_PRI_MSB 29
  251. #define TCL_ENTRANCE_FROM_PPE_RING_INT_PRI_MASK 0x3c000000
  252. /* Description MORE
  253. Consumer: TCL
  254. Producer: PPE DMA
  255. 0: The last segment of packet
  256. 1: More segments to follow, indicating scatter/gather (Not
  257. supported in Waikiki TCL)
  258. <legal all>
  259. */
  260. #define TCL_ENTRANCE_FROM_PPE_RING_MORE_OFFSET 0x00000004
  261. #define TCL_ENTRANCE_FROM_PPE_RING_MORE_LSB 30
  262. #define TCL_ENTRANCE_FROM_PPE_RING_MORE_MSB 30
  263. #define TCL_ENTRANCE_FROM_PPE_RING_MORE_MASK 0x40000000
  264. /* Description RESERVED_1A
  265. <legal 0>
  266. */
  267. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1A_OFFSET 0x00000004
  268. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1A_LSB 31
  269. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1A_MSB 31
  270. #define TCL_ENTRANCE_FROM_PPE_RING_RESERVED_1A_MASK 0x80000000
  271. /* Description OPAQUE_LO
  272. Consumer: TCL/WBM/SW
  273. Producer: PPE DMA/SW
  274. Lower 32 bits of opaque SW value
  275. OPAQUE_LO[19:0] are used for Sw_buffer_cookie with OPAQUE_LO[31:20]
  276. ignored, for direct switch connect.
  277. <legal all>
  278. */
  279. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_LO_OFFSET 0x00000008
  280. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_LO_LSB 0
  281. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_LO_MSB 31
  282. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_LO_MASK 0xffffffff
  283. /* Description OPAQUE_HI
  284. Consumer: SW
  285. Producer: PPE DMA/SW
  286. Higher 32 bits of opaque SW value, ignored completely for
  287. direct switch connect
  288. <legal all>
  289. */
  290. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_HI_OFFSET 0x0000000c
  291. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_HI_LSB 0
  292. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_HI_MSB 31
  293. #define TCL_ENTRANCE_FROM_PPE_RING_OPAQUE_HI_MASK 0xffffffff
  294. /* Description SRC_INFO
  295. Consumer: TCL
  296. Producer: Switch Core
  297. Source port: SRC_INFO[15:12] = 'b0010, SRC_INFO[11:0] is
  298. the PORT_ID (Ignored by Waikiki TCL).
  299. See DST_INFO for PORT_ID values.
  300. <legal 8192-8447>
  301. */
  302. #define TCL_ENTRANCE_FROM_PPE_RING_SRC_INFO_OFFSET 0x00000010
  303. #define TCL_ENTRANCE_FROM_PPE_RING_SRC_INFO_LSB 0
  304. #define TCL_ENTRANCE_FROM_PPE_RING_SRC_INFO_MSB 15
  305. #define TCL_ENTRANCE_FROM_PPE_RING_SRC_INFO_MASK 0x0000ffff
  306. /* Description DST_INFO
  307. Consumer: TCL
  308. Producer: Switch Core
  309. Destination port or next hop information
  310. DST_INFO[15:12] = 'b0000 indicates invalid information.
  311. If DST_INFO[15:12] = 'b0001, DST_INFO[11:0] is the next
  312. hop index (Not supported for direct switch connect).
  313. If DST_INFO[15:12] = 'b0010, DST_INFO[11:0] is the PORT_ID,
  314. which Waikiki TCL can process.
  315. If DST_INFO[15:12] = 'b0011, DST_INFO[11:0] is the destination
  316. port bitmap (Not supported for direct switch connect).
  317. PORT_ID:
  318. 0-31 indicates a physical Ethernet port.
  319. 32-63 indicates a link aggregation group (LAG) of ports (Not
  320. supported for direct switch connect).
  321. 64-255 indicates a virtual port, which Waikiki TCL maps
  322. to Bank_id, PMAC_ID, vdev_id, To_FW and Search_index. Waikiki
  323. TCL also maps this to internal parameters 'USE_PPE_INT_PRI_FOR_TID'
  324. and 'DROP_PREC_ENABLE' (see fields INT_PRI and DROP_PREC).
  325. Other values are reserved.
  326. <legal 0-8447,12288-16383>
  327. */
  328. #define TCL_ENTRANCE_FROM_PPE_RING_DST_INFO_OFFSET 0x00000010
  329. #define TCL_ENTRANCE_FROM_PPE_RING_DST_INFO_LSB 16
  330. #define TCL_ENTRANCE_FROM_PPE_RING_DST_INFO_MSB 31
  331. #define TCL_ENTRANCE_FROM_PPE_RING_DST_INFO_MASK 0xffff0000
  332. /* Description DATA_LENGTH
  333. Consumer: TCL/TXDMA
  334. Producer: PPE DMA
  335. Length of valid packet data in the current buffer in bytes
  336. (Bits [17:16] not supported in Alder PPE and bits [17:14]
  337. not supported in Waikiki)
  338. <legal all>
  339. */
  340. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_LENGTH_OFFSET 0x00000014
  341. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_LENGTH_LSB 0
  342. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_LENGTH_MSB 17
  343. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_LENGTH_MASK 0x0003ffff
  344. /* Description POOL_ID
  345. Consumer: TCL/SW
  346. Producer: PPE DMA/SW
  347. To be used for hardware buffer management (Not supported
  348. in Alder PPE and ignored by Waikiki TCL)
  349. SW must ensure 1:1 mapping between PPE Rx Fill and PPE Rx
  350. completion descriptors.
  351. <legal all>
  352. */
  353. #define TCL_ENTRANCE_FROM_PPE_RING_POOL_ID_OFFSET 0x00000014
  354. #define TCL_ENTRANCE_FROM_PPE_RING_POOL_ID_LSB 18
  355. #define TCL_ENTRANCE_FROM_PPE_RING_POOL_ID_MSB 23
  356. #define TCL_ENTRANCE_FROM_PPE_RING_POOL_ID_MASK 0x00fc0000
  357. /* Description WIFI_QOS
  358. Consumer: TCL
  359. Producer: Switch Core
  360. Wi-Fi QoS Value
  361. Waikiki TCL maps as follows:
  362. who_classify_info_sel = WIFI_QOS[5:4] if WIFI_QOS_FLAG set
  363. HLOS_TID = WIFI_QOS[3:1] if HLOS_TID_overwrite enabled
  364. flow_override = WIFI_QOS [0] if WIFI_QOS_FLAG set
  365. flow_override_enable = WIFI_QOS_FLAG
  366. HLOS_TID_overwrite = WIFI_QOS_FLAG || WIFI_QOS[7]
  367. WIFI_QOS[6] is ignored by Waikiki TCL.
  368. Also see field INT_PRI for another way to enable HLOS_TID_overwrite.
  369. <legal all>
  370. */
  371. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_OFFSET 0x00000014
  372. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_LSB 24
  373. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_MSB 31
  374. #define TCL_ENTRANCE_FROM_PPE_RING_WIFI_QOS_MASK 0xff000000
  375. /* Description DATA_OFFSET
  376. Consumer: TCL
  377. Producer: PPE DMA
  378. Offset to the packet data from the buffer address
  379. <legal all>
  380. */
  381. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_OFFSET_OFFSET 0x00000018
  382. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_OFFSET_LSB 0
  383. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_OFFSET_MSB 11
  384. #define TCL_ENTRANCE_FROM_PPE_RING_DATA_OFFSET_MASK 0x00000fff
  385. /* Description L4_CSUM_STATUS
  386. Consumer: TCL
  387. Producer: PPE DMA/Switch Core
  388. Layer 4 checksum verification result (Ignored by Waikiki
  389. TCL)
  390. 0: Unknown or invalid
  391. 1: Valid
  392. The default value is 0. Only when PPE DMA performs the checksum
  393. calculation and the result is correct, is this bit set.
  394. <legal all>
  395. */
  396. #define TCL_ENTRANCE_FROM_PPE_RING_L4_CSUM_STATUS_OFFSET 0x00000018
  397. #define TCL_ENTRANCE_FROM_PPE_RING_L4_CSUM_STATUS_LSB 12
  398. #define TCL_ENTRANCE_FROM_PPE_RING_L4_CSUM_STATUS_MSB 12
  399. #define TCL_ENTRANCE_FROM_PPE_RING_L4_CSUM_STATUS_MASK 0x00001000
  400. /* Description L3_CSUM_STATUS
  401. Consumer: TCL
  402. Producer: PPE DMA/Switch Core
  403. Layer 3 checksum verification result (Ignored by Waikiki
  404. TCL)
  405. 0: Unknown or invalid
  406. 1: Valid
  407. The default value is 0. Only when PPE DMA performs the checksum
  408. calculation and the result is correct, is this bit set.
  409. <legal all>
  410. */
  411. #define TCL_ENTRANCE_FROM_PPE_RING_L3_CSUM_STATUS_OFFSET 0x00000018
  412. #define TCL_ENTRANCE_FROM_PPE_RING_L3_CSUM_STATUS_LSB 13
  413. #define TCL_ENTRANCE_FROM_PPE_RING_L3_CSUM_STATUS_MSB 13
  414. #define TCL_ENTRANCE_FROM_PPE_RING_L3_CSUM_STATUS_MASK 0x00002000
  415. /* Description HASH_FLAG
  416. Consumer: SW
  417. Producer: Switch Core
  418. Hash type (Ignored by Waikiki TCL)
  419. 00: Hash invalid
  420. 01: 5-tuple hash
  421. 10: 3-tuple hash
  422. 11: Reserved
  423. <legal 0-2>
  424. */
  425. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_FLAG_OFFSET 0x00000018
  426. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_FLAG_LSB 14
  427. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_FLAG_MSB 15
  428. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_FLAG_MASK 0x0000c000
  429. /* Description HASH_VALUE
  430. Consumer: SW
  431. Producer: Switch Core
  432. Hash value (Ignored by Waikiki TCL)
  433. <legal all>
  434. */
  435. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_VALUE_OFFSET 0x00000018
  436. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_VALUE_LSB 16
  437. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_VALUE_MSB 31
  438. #define TCL_ENTRANCE_FROM_PPE_RING_HASH_VALUE_MASK 0xffff0000
  439. /* Description DSCP
  440. Consumer: TCL
  441. Producer: PPE DMA/Switch Core
  442. Differential Services Code Point value (Ignored by Waikiki
  443. TCL)
  444. <legal all>
  445. */
  446. #define TCL_ENTRANCE_FROM_PPE_RING_DSCP_OFFSET 0x0000001c
  447. #define TCL_ENTRANCE_FROM_PPE_RING_DSCP_LSB 0
  448. #define TCL_ENTRANCE_FROM_PPE_RING_DSCP_MSB 7
  449. #define TCL_ENTRANCE_FROM_PPE_RING_DSCP_MASK 0x000000ff
  450. /* Description VALID_TOGGLE
  451. Consumer: TCL
  452. Producer: PPE DMA
  453. Toggle bit to indicate the validity of the descriptor (Ignored
  454. by Waikiki TCL).
  455. The value is toggled when the producer pointer wraps around.
  456. <legal all>
  457. */
  458. #define TCL_ENTRANCE_FROM_PPE_RING_VALID_TOGGLE_OFFSET 0x0000001c
  459. #define TCL_ENTRANCE_FROM_PPE_RING_VALID_TOGGLE_LSB 8
  460. #define TCL_ENTRANCE_FROM_PPE_RING_VALID_TOGGLE_MSB 8
  461. #define TCL_ENTRANCE_FROM_PPE_RING_VALID_TOGGLE_MASK 0x00000100
  462. /* Description PPPOE_FLAG
  463. Consumer: TCL
  464. Producer: Switch Core
  465. Indicates a PPPoE packet (Ignored by Waikiki TCL)
  466. 0: No PPPoE header
  467. 1: PPPoE header exists
  468. <legal all>
  469. */
  470. #define TCL_ENTRANCE_FROM_PPE_RING_PPPOE_FLAG_OFFSET 0x0000001c
  471. #define TCL_ENTRANCE_FROM_PPE_RING_PPPOE_FLAG_LSB 9
  472. #define TCL_ENTRANCE_FROM_PPE_RING_PPPOE_FLAG_MSB 9
  473. #define TCL_ENTRANCE_FROM_PPE_RING_PPPOE_FLAG_MASK 0x00000200
  474. /* Description SVLAN_FLAG
  475. Consumer: TCL
  476. Producer: PPE DMA/Switch Core
  477. Indicates the existence of S-VLAN tag (Ignored by Waikiki
  478. TCL)
  479. 0: No S-VLAN
  480. 1: S-VLAN exists, including priority
  481. <legal all>
  482. */
  483. #define TCL_ENTRANCE_FROM_PPE_RING_SVLAN_FLAG_OFFSET 0x0000001c
  484. #define TCL_ENTRANCE_FROM_PPE_RING_SVLAN_FLAG_LSB 10
  485. #define TCL_ENTRANCE_FROM_PPE_RING_SVLAN_FLAG_MSB 10
  486. #define TCL_ENTRANCE_FROM_PPE_RING_SVLAN_FLAG_MASK 0x00000400
  487. /* Description CVLAN_FLAG
  488. Consumer: TCL
  489. Producer: PPE DMA/Switch Core
  490. Indicates the existence of C-VLAN tag (Ignored by Waikiki
  491. TCL)
  492. 0: No C-VLAN
  493. 1: C-VLAN exists, including priority
  494. <legal all>
  495. */
  496. #define TCL_ENTRANCE_FROM_PPE_RING_CVLAN_FLAG_OFFSET 0x0000001c
  497. #define TCL_ENTRANCE_FROM_PPE_RING_CVLAN_FLAG_LSB 11
  498. #define TCL_ENTRANCE_FROM_PPE_RING_CVLAN_FLAG_MSB 11
  499. #define TCL_ENTRANCE_FROM_PPE_RING_CVLAN_FLAG_MASK 0x00000800
  500. /* Description PID
  501. Consumer: TCL
  502. Producer: Switch Core
  503. Protocol ID, indicating the protocol type of the packet (Ignored
  504. by Waikiki TCL).
  505. 0: IPv4 (no supported L4)
  506. 1: TCP over IPv4
  507. 2: UDP over IPv4
  508. 3: UDP-Lite over IPv4
  509. 4: IPv6 (no supported L4)
  510. 5: TCP over IPv6
  511. 6: UDP over IPv6
  512. 7: UDP-Lite over IPv6
  513. 8: Non-IP
  514. Other values are reserved
  515. <legal 0-8>
  516. */
  517. #define TCL_ENTRANCE_FROM_PPE_RING_PID_OFFSET 0x0000001c
  518. #define TCL_ENTRANCE_FROM_PPE_RING_PID_LSB 12
  519. #define TCL_ENTRANCE_FROM_PPE_RING_PID_MSB 15
  520. #define TCL_ENTRANCE_FROM_PPE_RING_PID_MASK 0x0000f000
  521. /* Description L3_OFFSET
  522. Consumer: TCL
  523. Producer: PPE DMA
  524. Layer 3 header offset from DATA_OFFSET (Ignored by Waikiki
  525. TCL)
  526. <legal all>
  527. */
  528. #define TCL_ENTRANCE_FROM_PPE_RING_L3_OFFSET_OFFSET 0x0000001c
  529. #define TCL_ENTRANCE_FROM_PPE_RING_L3_OFFSET_LSB 16
  530. #define TCL_ENTRANCE_FROM_PPE_RING_L3_OFFSET_MSB 23
  531. #define TCL_ENTRANCE_FROM_PPE_RING_L3_OFFSET_MASK 0x00ff0000
  532. /* Description L4_OFFSET
  533. Consumer: TCL
  534. Producer: PPE DMA
  535. Layer 4 header offset from DATA_OFFSET (Ignored by Waikiki
  536. TCL)
  537. <legal all>
  538. */
  539. #define TCL_ENTRANCE_FROM_PPE_RING_L4_OFFSET_OFFSET 0x0000001c
  540. #define TCL_ENTRANCE_FROM_PPE_RING_L4_OFFSET_LSB 24
  541. #define TCL_ENTRANCE_FROM_PPE_RING_L4_OFFSET_MSB 31
  542. #define TCL_ENTRANCE_FROM_PPE_RING_L4_OFFSET_MASK 0xff000000
  543. #endif // TCL_ENTRANCE_FROM_PPE_RING