tcl_data_cmd.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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
  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. #ifndef _TCL_DATA_CMD_H_
  19. #define _TCL_DATA_CMD_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. #include "buffer_addr_info.h"
  23. #define NUM_OF_DWORDS_TCL_DATA_CMD 7
  24. struct tcl_data_cmd {
  25. struct buffer_addr_info buf_addr_info;
  26. uint32_t buf_or_ext_desc_type : 1,
  27. epd : 1,
  28. encap_type : 2,
  29. encrypt_type : 4,
  30. src_buffer_swap : 1,
  31. link_meta_swap : 1,
  32. tqm_no_drop : 1,
  33. reserved_2a : 1,
  34. search_type : 2,
  35. addrx_en : 1,
  36. addry_en : 1,
  37. tcl_cmd_number : 16;
  38. uint32_t data_length : 16,
  39. ipv4_checksum_en : 1,
  40. udp_over_ipv4_checksum_en : 1,
  41. udp_over_ipv6_checksum_en : 1,
  42. tcp_over_ipv4_checksum_en : 1,
  43. tcp_over_ipv6_checksum_en : 1,
  44. to_fw : 1,
  45. reserved_3a : 1,
  46. packet_offset : 9;
  47. uint32_t buffer_timestamp : 19,
  48. buffer_timestamp_valid : 1,
  49. reserved_4a : 1,
  50. hlos_tid_overwrite : 1,
  51. hlos_tid : 4,
  52. lmac_id : 2,
  53. udp_flow_override : 2,
  54. reserved_4b : 2;
  55. uint32_t dscp_tid_table_num : 6,
  56. search_index : 20,
  57. cache_set_num : 4,
  58. mesh_enable : 2;
  59. uint32_t reserved_6a : 20,
  60. ring_id : 8,
  61. looping_count : 4;
  62. };
  63. #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
  64. #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  65. #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  66. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
  67. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  68. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  69. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
  70. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  71. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  72. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
  73. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  74. #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  75. #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_OFFSET 0x00000008
  76. #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_LSB 0
  77. #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_MASK 0x00000001
  78. #define TCL_DATA_CMD_2_EPD_OFFSET 0x00000008
  79. #define TCL_DATA_CMD_2_EPD_LSB 1
  80. #define TCL_DATA_CMD_2_EPD_MASK 0x00000002
  81. #define TCL_DATA_CMD_2_ENCAP_TYPE_OFFSET 0x00000008
  82. #define TCL_DATA_CMD_2_ENCAP_TYPE_LSB 2
  83. #define TCL_DATA_CMD_2_ENCAP_TYPE_MASK 0x0000000c
  84. #define TCL_DATA_CMD_2_ENCRYPT_TYPE_OFFSET 0x00000008
  85. #define TCL_DATA_CMD_2_ENCRYPT_TYPE_LSB 4
  86. #define TCL_DATA_CMD_2_ENCRYPT_TYPE_MASK 0x000000f0
  87. #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_OFFSET 0x00000008
  88. #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_LSB 8
  89. #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_MASK 0x00000100
  90. #define TCL_DATA_CMD_2_LINK_META_SWAP_OFFSET 0x00000008
  91. #define TCL_DATA_CMD_2_LINK_META_SWAP_LSB 9
  92. #define TCL_DATA_CMD_2_LINK_META_SWAP_MASK 0x00000200
  93. #define TCL_DATA_CMD_2_TQM_NO_DROP_OFFSET 0x00000008
  94. #define TCL_DATA_CMD_2_TQM_NO_DROP_LSB 10
  95. #define TCL_DATA_CMD_2_TQM_NO_DROP_MASK 0x00000400
  96. #define TCL_DATA_CMD_2_RESERVED_2A_OFFSET 0x00000008
  97. #define TCL_DATA_CMD_2_RESERVED_2A_LSB 11
  98. #define TCL_DATA_CMD_2_RESERVED_2A_MASK 0x00000800
  99. #define TCL_DATA_CMD_2_SEARCH_TYPE_OFFSET 0x00000008
  100. #define TCL_DATA_CMD_2_SEARCH_TYPE_LSB 12
  101. #define TCL_DATA_CMD_2_SEARCH_TYPE_MASK 0x00003000
  102. #define TCL_DATA_CMD_2_ADDRX_EN_OFFSET 0x00000008
  103. #define TCL_DATA_CMD_2_ADDRX_EN_LSB 14
  104. #define TCL_DATA_CMD_2_ADDRX_EN_MASK 0x00004000
  105. #define TCL_DATA_CMD_2_ADDRY_EN_OFFSET 0x00000008
  106. #define TCL_DATA_CMD_2_ADDRY_EN_LSB 15
  107. #define TCL_DATA_CMD_2_ADDRY_EN_MASK 0x00008000
  108. #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_OFFSET 0x00000008
  109. #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_LSB 16
  110. #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_MASK 0xffff0000
  111. #define TCL_DATA_CMD_3_DATA_LENGTH_OFFSET 0x0000000c
  112. #define TCL_DATA_CMD_3_DATA_LENGTH_LSB 0
  113. #define TCL_DATA_CMD_3_DATA_LENGTH_MASK 0x0000ffff
  114. #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_OFFSET 0x0000000c
  115. #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_LSB 16
  116. #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_MASK 0x00010000
  117. #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_OFFSET 0x0000000c
  118. #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_LSB 17
  119. #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_MASK 0x00020000
  120. #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_OFFSET 0x0000000c
  121. #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_LSB 18
  122. #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_MASK 0x00040000
  123. #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_OFFSET 0x0000000c
  124. #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_LSB 19
  125. #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_MASK 0x00080000
  126. #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_OFFSET 0x0000000c
  127. #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_LSB 20
  128. #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_MASK 0x00100000
  129. #define TCL_DATA_CMD_3_TO_FW_OFFSET 0x0000000c
  130. #define TCL_DATA_CMD_3_TO_FW_LSB 21
  131. #define TCL_DATA_CMD_3_TO_FW_MASK 0x00200000
  132. #define TCL_DATA_CMD_3_RESERVED_3A_OFFSET 0x0000000c
  133. #define TCL_DATA_CMD_3_RESERVED_3A_LSB 22
  134. #define TCL_DATA_CMD_3_RESERVED_3A_MASK 0x00400000
  135. #define TCL_DATA_CMD_3_PACKET_OFFSET_OFFSET 0x0000000c
  136. #define TCL_DATA_CMD_3_PACKET_OFFSET_LSB 23
  137. #define TCL_DATA_CMD_3_PACKET_OFFSET_MASK 0xff800000
  138. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_OFFSET 0x00000010
  139. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_LSB 0
  140. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_MASK 0x0007ffff
  141. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_OFFSET 0x00000010
  142. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_LSB 19
  143. #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_MASK 0x00080000
  144. #define TCL_DATA_CMD_4_RESERVED_4A_OFFSET 0x00000010
  145. #define TCL_DATA_CMD_4_RESERVED_4A_LSB 20
  146. #define TCL_DATA_CMD_4_RESERVED_4A_MASK 0x00100000
  147. #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_OFFSET 0x00000010
  148. #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_LSB 21
  149. #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_MASK 0x00200000
  150. #define TCL_DATA_CMD_4_HLOS_TID_OFFSET 0x00000010
  151. #define TCL_DATA_CMD_4_HLOS_TID_LSB 22
  152. #define TCL_DATA_CMD_4_HLOS_TID_MASK 0x03c00000
  153. #define TCL_DATA_CMD_4_LMAC_ID_OFFSET 0x00000010
  154. #define TCL_DATA_CMD_4_LMAC_ID_LSB 26
  155. #define TCL_DATA_CMD_4_LMAC_ID_MASK 0x0c000000
  156. #define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_OFFSET 0x00000010
  157. #define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_LSB 28
  158. #define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_MASK 0x30000000
  159. #define TCL_DATA_CMD_4_RESERVED_4B_OFFSET 0x00000010
  160. #define TCL_DATA_CMD_4_RESERVED_4B_LSB 30
  161. #define TCL_DATA_CMD_4_RESERVED_4B_MASK 0xc0000000
  162. #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_OFFSET 0x00000014
  163. #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_LSB 0
  164. #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_MASK 0x0000003f
  165. #define TCL_DATA_CMD_5_SEARCH_INDEX_OFFSET 0x00000014
  166. #define TCL_DATA_CMD_5_SEARCH_INDEX_LSB 6
  167. #define TCL_DATA_CMD_5_SEARCH_INDEX_MASK 0x03ffffc0
  168. #define TCL_DATA_CMD_5_CACHE_SET_NUM_OFFSET 0x00000014
  169. #define TCL_DATA_CMD_5_CACHE_SET_NUM_LSB 26
  170. #define TCL_DATA_CMD_5_CACHE_SET_NUM_MASK 0x3c000000
  171. #define TCL_DATA_CMD_5_MESH_ENABLE_OFFSET 0x00000014
  172. #define TCL_DATA_CMD_5_MESH_ENABLE_LSB 30
  173. #define TCL_DATA_CMD_5_MESH_ENABLE_MASK 0xc0000000
  174. #define TCL_DATA_CMD_6_RESERVED_6A_OFFSET 0x00000018
  175. #define TCL_DATA_CMD_6_RESERVED_6A_LSB 0
  176. #define TCL_DATA_CMD_6_RESERVED_6A_MASK 0x000fffff
  177. #define TCL_DATA_CMD_6_RING_ID_OFFSET 0x00000018
  178. #define TCL_DATA_CMD_6_RING_ID_LSB 20
  179. #define TCL_DATA_CMD_6_RING_ID_MASK 0x0ff00000
  180. #define TCL_DATA_CMD_6_LOOPING_COUNT_OFFSET 0x00000018
  181. #define TCL_DATA_CMD_6_LOOPING_COUNT_LSB 28
  182. #define TCL_DATA_CMD_6_LOOPING_COUNT_MASK 0xf0000000
  183. #endif