summaryrefslogtreecommitdiff
path: root/hw/wcn6450/v1/tcl_data_cmd.h
blob: bc7a04c6cd523f7ea046ac7a47a3713f1ef8029b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231

/*
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */



#ifndef _TCL_DATA_CMD_H_
#define _TCL_DATA_CMD_H_
#if !defined(__ASSEMBLER__)
#endif

#include "buffer_addr_info.h"

#define NUM_OF_DWORDS_TCL_DATA_CMD 7

struct tcl_data_cmd {
    struct            buffer_addr_info                       buf_addr_info;
             uint32_t buf_or_ext_desc_type            :  1,
                      epd                             :  1,
                      encap_type                      :  2,
                      encrypt_type                    :  4,
                      src_buffer_swap                 :  1,
                      link_meta_swap                  :  1,
                      tqm_no_drop                     :  1,
                      reserved_2a                     :  1,
                      search_type                     :  2,
                      addrx_en                        :  1,
                      addry_en                        :  1,
                      tcl_cmd_number                  : 16;
             uint32_t data_length                     : 16,
                      ipv4_checksum_en                :  1,
                      udp_over_ipv4_checksum_en       :  1,
                      udp_over_ipv6_checksum_en       :  1,
                      tcp_over_ipv4_checksum_en       :  1,
                      tcp_over_ipv6_checksum_en       :  1,
                      to_fw                           :  1,
                      reserved_3a                     :  1,
                      packet_offset                   :  9;
             uint32_t buffer_timestamp                : 19,
                      buffer_timestamp_valid          :  1,
                      reserved_4a                     :  1,
                      hlos_tid_overwrite              :  1,
                      hlos_tid                        :  4,
                      lmac_id                         :  2,
                      udp_flow_override               :  2,
                      reserved_4b                     :  2;
             uint32_t dscp_tid_table_num              :  6,
                      search_index                    : 20,
                      cache_set_num                   :  4,
                      mesh_enable                     :  2;
             uint32_t reserved_6a                     : 20,
                      ring_id                         :  8,
                      looping_count                   :  4;
};

#define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET         0x00000000
#define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_LSB            0
#define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MASK           0xffffffff

#define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET        0x00000004
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_LSB           0
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MASK          0x000000ff

#define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET    0x00000004
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB       8
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK      0x00000700

#define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET         0x00000004
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_LSB            11
#define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MASK           0xfffff800

#define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_OFFSET                   0x00000008
#define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_LSB                      0
#define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_MASK                     0x00000001

#define TCL_DATA_CMD_2_EPD_OFFSET                                    0x00000008
#define TCL_DATA_CMD_2_EPD_LSB                                       1
#define TCL_DATA_CMD_2_EPD_MASK                                      0x00000002

#define TCL_DATA_CMD_2_ENCAP_TYPE_OFFSET                             0x00000008
#define TCL_DATA_CMD_2_ENCAP_TYPE_LSB                                2
#define TCL_DATA_CMD_2_ENCAP_TYPE_MASK                               0x0000000c

#define TCL_DATA_CMD_2_ENCRYPT_TYPE_OFFSET                           0x00000008
#define TCL_DATA_CMD_2_ENCRYPT_TYPE_LSB                              4
#define TCL_DATA_CMD_2_ENCRYPT_TYPE_MASK                             0x000000f0

#define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_OFFSET                        0x00000008
#define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_LSB                           8
#define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_MASK                          0x00000100

#define TCL_DATA_CMD_2_LINK_META_SWAP_OFFSET                         0x00000008
#define TCL_DATA_CMD_2_LINK_META_SWAP_LSB                            9
#define TCL_DATA_CMD_2_LINK_META_SWAP_MASK                           0x00000200

#define TCL_DATA_CMD_2_TQM_NO_DROP_OFFSET                            0x00000008
#define TCL_DATA_CMD_2_TQM_NO_DROP_LSB                               10
#define TCL_DATA_CMD_2_TQM_NO_DROP_MASK                              0x00000400

#define TCL_DATA_CMD_2_RESERVED_2A_OFFSET                            0x00000008
#define TCL_DATA_CMD_2_RESERVED_2A_LSB                               11
#define TCL_DATA_CMD_2_RESERVED_2A_MASK                              0x00000800

#define TCL_DATA_CMD_2_SEARCH_TYPE_OFFSET                            0x00000008
#define TCL_DATA_CMD_2_SEARCH_TYPE_LSB                               12
#define TCL_DATA_CMD_2_SEARCH_TYPE_MASK                              0x00003000

#define TCL_DATA_CMD_2_ADDRX_EN_OFFSET                               0x00000008
#define TCL_DATA_CMD_2_ADDRX_EN_LSB                                  14
#define TCL_DATA_CMD_2_ADDRX_EN_MASK                                 0x00004000

#define TCL_DATA_CMD_2_ADDRY_EN_OFFSET                               0x00000008
#define TCL_DATA_CMD_2_ADDRY_EN_LSB                                  15
#define TCL_DATA_CMD_2_ADDRY_EN_MASK                                 0x00008000

#define TCL_DATA_CMD_2_TCL_CMD_NUMBER_OFFSET                         0x00000008
#define TCL_DATA_CMD_2_TCL_CMD_NUMBER_LSB                            16
#define TCL_DATA_CMD_2_TCL_CMD_NUMBER_MASK                           0xffff0000

#define TCL_DATA_CMD_3_DATA_LENGTH_OFFSET                            0x0000000c
#define TCL_DATA_CMD_3_DATA_LENGTH_LSB                               0
#define TCL_DATA_CMD_3_DATA_LENGTH_MASK                              0x0000ffff

#define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_OFFSET                       0x0000000c
#define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_LSB                          16
#define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_MASK                         0x00010000

#define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
#define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_LSB                 17
#define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_MASK                0x00020000

#define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
#define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_LSB                 18
#define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_MASK                0x00040000

#define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
#define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_LSB                 19
#define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_MASK                0x00080000

#define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
#define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_LSB                 20
#define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_MASK                0x00100000

#define TCL_DATA_CMD_3_TO_FW_OFFSET                                  0x0000000c
#define TCL_DATA_CMD_3_TO_FW_LSB                                     21
#define TCL_DATA_CMD_3_TO_FW_MASK                                    0x00200000

#define TCL_DATA_CMD_3_RESERVED_3A_OFFSET                            0x0000000c
#define TCL_DATA_CMD_3_RESERVED_3A_LSB                               22
#define TCL_DATA_CMD_3_RESERVED_3A_MASK                              0x00400000

#define TCL_DATA_CMD_3_PACKET_OFFSET_OFFSET                          0x0000000c
#define TCL_DATA_CMD_3_PACKET_OFFSET_LSB                             23
#define TCL_DATA_CMD_3_PACKET_OFFSET_MASK                            0xff800000

#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_OFFSET                       0x00000010
#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_LSB                          0
#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_MASK                         0x0007ffff

#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_OFFSET                 0x00000010
#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_LSB                    19
#define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_MASK                   0x00080000

#define TCL_DATA_CMD_4_RESERVED_4A_OFFSET                            0x00000010
#define TCL_DATA_CMD_4_RESERVED_4A_LSB                               20
#define TCL_DATA_CMD_4_RESERVED_4A_MASK                              0x00100000

#define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_OFFSET                     0x00000010
#define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_LSB                        21
#define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_MASK                       0x00200000

#define TCL_DATA_CMD_4_HLOS_TID_OFFSET                               0x00000010
#define TCL_DATA_CMD_4_HLOS_TID_LSB                                  22
#define TCL_DATA_CMD_4_HLOS_TID_MASK                                 0x03c00000

#define TCL_DATA_CMD_4_LMAC_ID_OFFSET                                0x00000010
#define TCL_DATA_CMD_4_LMAC_ID_LSB                                   26
#define TCL_DATA_CMD_4_LMAC_ID_MASK                                  0x0c000000

#define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_OFFSET                      0x00000010
#define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_LSB                         28
#define TCL_DATA_CMD_4_UDP_FLOW_OVERRIDE_MASK                        0x30000000

#define TCL_DATA_CMD_4_RESERVED_4B_OFFSET                            0x00000010
#define TCL_DATA_CMD_4_RESERVED_4B_LSB                               30
#define TCL_DATA_CMD_4_RESERVED_4B_MASK                              0xc0000000

#define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_OFFSET                     0x00000014
#define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_LSB                        0
#define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_MASK                       0x0000003f

#define TCL_DATA_CMD_5_SEARCH_INDEX_OFFSET                           0x00000014
#define TCL_DATA_CMD_5_SEARCH_INDEX_LSB                              6
#define TCL_DATA_CMD_5_SEARCH_INDEX_MASK                             0x03ffffc0

#define TCL_DATA_CMD_5_CACHE_SET_NUM_OFFSET                          0x00000014
#define TCL_DATA_CMD_5_CACHE_SET_NUM_LSB                             26
#define TCL_DATA_CMD_5_CACHE_SET_NUM_MASK                            0x3c000000

#define TCL_DATA_CMD_5_MESH_ENABLE_OFFSET                            0x00000014
#define TCL_DATA_CMD_5_MESH_ENABLE_LSB                               30
#define TCL_DATA_CMD_5_MESH_ENABLE_MASK                              0xc0000000

#define TCL_DATA_CMD_6_RESERVED_6A_OFFSET                            0x00000018
#define TCL_DATA_CMD_6_RESERVED_6A_LSB                               0
#define TCL_DATA_CMD_6_RESERVED_6A_MASK                              0x000fffff

#define TCL_DATA_CMD_6_RING_ID_OFFSET                                0x00000018
#define TCL_DATA_CMD_6_RING_ID_LSB                                   20
#define TCL_DATA_CMD_6_RING_ID_MASK                                  0x0ff00000

#define TCL_DATA_CMD_6_LOOPING_COUNT_OFFSET                          0x00000018
#define TCL_DATA_CMD_6_LOOPING_COUNT_LSB                             28
#define TCL_DATA_CMD_6_LOOPING_COUNT_MASK                            0xf0000000

#endif