tcl_entrance_from_ppe_ring.h 28 KB

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