xref: /wlan-driver/fw-api/hw/qcn6432/tcl_data_cmd.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name #ifndef _TCL_DATA_CMD_H_
18*5113495bSYour Name #define _TCL_DATA_CMD_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #include "buffer_addr_info.h"
23*5113495bSYour Name #define NUM_OF_DWORDS_TCL_DATA_CMD 8
24*5113495bSYour Name 
25*5113495bSYour Name 
26*5113495bSYour Name struct tcl_data_cmd {
27*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
28*5113495bSYour Name              struct   buffer_addr_info                                          buf_addr_info;
29*5113495bSYour Name              uint32_t tcl_cmd_type                                            :  1, // [0:0]
30*5113495bSYour Name                       buf_or_ext_desc_type                                    :  1, // [1:1]
31*5113495bSYour Name                       bank_id                                                 :  6, // [7:2]
32*5113495bSYour Name                       tx_notify_frame                                         :  3, // [10:8]
33*5113495bSYour Name                       header_length_read_sel                                  :  1, // [11:11]
34*5113495bSYour Name                       buffer_timestamp                                        : 19, // [30:12]
35*5113495bSYour Name                       buffer_timestamp_valid                                  :  1; // [31:31]
36*5113495bSYour Name              uint32_t reserved_3a                                             : 16, // [15:0]
37*5113495bSYour Name                       tcl_cmd_number                                          : 16; // [31:16]
38*5113495bSYour Name              uint32_t data_length                                             : 16, // [15:0]
39*5113495bSYour Name                       ipv4_checksum_en                                        :  1, // [16:16]
40*5113495bSYour Name                       udp_over_ipv4_checksum_en                               :  1, // [17:17]
41*5113495bSYour Name                       udp_over_ipv6_checksum_en                               :  1, // [18:18]
42*5113495bSYour Name                       tcp_over_ipv4_checksum_en                               :  1, // [19:19]
43*5113495bSYour Name                       tcp_over_ipv6_checksum_en                               :  1, // [20:20]
44*5113495bSYour Name                       to_fw                                                   :  1, // [21:21]
45*5113495bSYour Name                       reserved_4a                                             :  1, // [22:22]
46*5113495bSYour Name                       packet_offset                                           :  9; // [31:23]
47*5113495bSYour Name              uint32_t hlos_tid_overwrite                                      :  1, // [0:0]
48*5113495bSYour Name                       flow_override_enable                                    :  1, // [1:1]
49*5113495bSYour Name                       who_classify_info_sel                                   :  2, // [3:2]
50*5113495bSYour Name                       hlos_tid                                                :  4, // [7:4]
51*5113495bSYour Name                       flow_override                                           :  1, // [8:8]
52*5113495bSYour Name                       pmac_id                                                 :  2, // [10:9]
53*5113495bSYour Name                       msdu_color                                              :  2, // [12:11]
54*5113495bSYour Name                       reserved_5a                                             : 11, // [23:13]
55*5113495bSYour Name                       vdev_id                                                 :  8; // [31:24]
56*5113495bSYour Name              uint32_t search_index                                            : 20, // [19:0]
57*5113495bSYour Name                       cache_set_num                                           :  4, // [23:20]
58*5113495bSYour Name                       index_lookup_override                                   :  1, // [24:24]
59*5113495bSYour Name                       reserved_6a                                             :  7; // [31:25]
60*5113495bSYour Name              uint32_t reserved_7a                                             : 20, // [19:0]
61*5113495bSYour Name                       ring_id                                                 :  8, // [27:20]
62*5113495bSYour Name                       looping_count                                           :  4; // [31:28]
63*5113495bSYour Name #else
64*5113495bSYour Name              struct   buffer_addr_info                                          buf_addr_info;
65*5113495bSYour Name              uint32_t buffer_timestamp_valid                                  :  1, // [31:31]
66*5113495bSYour Name                       buffer_timestamp                                        : 19, // [30:12]
67*5113495bSYour Name                       header_length_read_sel                                  :  1, // [11:11]
68*5113495bSYour Name                       tx_notify_frame                                         :  3, // [10:8]
69*5113495bSYour Name                       bank_id                                                 :  6, // [7:2]
70*5113495bSYour Name                       buf_or_ext_desc_type                                    :  1, // [1:1]
71*5113495bSYour Name                       tcl_cmd_type                                            :  1; // [0:0]
72*5113495bSYour Name              uint32_t tcl_cmd_number                                          : 16, // [31:16]
73*5113495bSYour Name                       reserved_3a                                             : 16; // [15:0]
74*5113495bSYour Name              uint32_t packet_offset                                           :  9, // [31:23]
75*5113495bSYour Name                       reserved_4a                                             :  1, // [22:22]
76*5113495bSYour Name                       to_fw                                                   :  1, // [21:21]
77*5113495bSYour Name                       tcp_over_ipv6_checksum_en                               :  1, // [20:20]
78*5113495bSYour Name                       tcp_over_ipv4_checksum_en                               :  1, // [19:19]
79*5113495bSYour Name                       udp_over_ipv6_checksum_en                               :  1, // [18:18]
80*5113495bSYour Name                       udp_over_ipv4_checksum_en                               :  1, // [17:17]
81*5113495bSYour Name                       ipv4_checksum_en                                        :  1, // [16:16]
82*5113495bSYour Name                       data_length                                             : 16; // [15:0]
83*5113495bSYour Name              uint32_t vdev_id                                                 :  8, // [31:24]
84*5113495bSYour Name                       reserved_5a                                             : 11, // [23:13]
85*5113495bSYour Name                       msdu_color                                              :  2, // [12:11]
86*5113495bSYour Name                       pmac_id                                                 :  2, // [10:9]
87*5113495bSYour Name                       flow_override                                           :  1, // [8:8]
88*5113495bSYour Name                       hlos_tid                                                :  4, // [7:4]
89*5113495bSYour Name                       who_classify_info_sel                                   :  2, // [3:2]
90*5113495bSYour Name                       flow_override_enable                                    :  1, // [1:1]
91*5113495bSYour Name                       hlos_tid_overwrite                                      :  1; // [0:0]
92*5113495bSYour Name              uint32_t reserved_6a                                             :  7, // [31:25]
93*5113495bSYour Name                       index_lookup_override                                   :  1, // [24:24]
94*5113495bSYour Name                       cache_set_num                                           :  4, // [23:20]
95*5113495bSYour Name                       search_index                                            : 20; // [19:0]
96*5113495bSYour Name              uint32_t looping_count                                           :  4, // [31:28]
97*5113495bSYour Name                       ring_id                                                 :  8, // [27:20]
98*5113495bSYour Name                       reserved_7a                                             : 20; // [19:0]
99*5113495bSYour Name #endif
100*5113495bSYour Name };
101*5113495bSYour Name 
102*5113495bSYour Name 
103*5113495bSYour Name /* Description		BUF_ADDR_INFO
104*5113495bSYour Name 
105*5113495bSYour Name 			Details of the physical address for a single buffer containing
106*5113495bSYour Name 			 the entire MSDU or an MSDU extension descriptor.
107*5113495bSYour Name 			It also contains return ownership info as well as some meta
108*5113495bSYour Name 			 data for SW related to this buffer.
109*5113495bSYour Name 
110*5113495bSYour Name 			In case of Buf_or_ext_desc_type indicating 'MSDU_buffer',
111*5113495bSYour Name 			this address indicates the start of the meta data that is
112*5113495bSYour Name 			 preceding the actual packet data.
113*5113495bSYour Name 			The start of the actual packet data is provided by field:
114*5113495bSYour Name 			Packet_offset
115*5113495bSYour Name */
116*5113495bSYour Name 
117*5113495bSYour Name 
118*5113495bSYour Name /* Description		BUFFER_ADDR_31_0
119*5113495bSYour Name 
120*5113495bSYour Name 			Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
121*5113495bSYour Name 			 descriptor OR Link Descriptor
122*5113495bSYour Name 
123*5113495bSYour Name 			In case of 'NULL' pointer, this field is set to 0
124*5113495bSYour Name 			<legal all>
125*5113495bSYour Name */
126*5113495bSYour Name 
127*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET                          0x00000000
128*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_31_0_LSB                             0
129*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MSB                             31
130*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MASK                            0xffffffff
131*5113495bSYour Name 
132*5113495bSYour Name 
133*5113495bSYour Name /* Description		BUFFER_ADDR_39_32
134*5113495bSYour Name 
135*5113495bSYour Name 			Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
136*5113495bSYour Name 			 descriptor OR Link Descriptor
137*5113495bSYour Name 
138*5113495bSYour Name 			In case of 'NULL' pointer, this field is set to 0
139*5113495bSYour Name 			<legal all>
140*5113495bSYour Name */
141*5113495bSYour Name 
142*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET                         0x00000004
143*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_39_32_LSB                            0
144*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MSB                            7
145*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MASK                           0x000000ff
146*5113495bSYour Name 
147*5113495bSYour Name 
148*5113495bSYour Name /* Description		RETURN_BUFFER_MANAGER
149*5113495bSYour Name 
150*5113495bSYour Name 			Consumer: WBM
151*5113495bSYour Name 			Producer: SW/FW
152*5113495bSYour Name 
153*5113495bSYour Name 			In case of 'NULL' pointer, this field is set to 0
154*5113495bSYour Name 
155*5113495bSYour Name 			Indicates to which buffer manager the buffer OR MSDU_EXTENSION
156*5113495bSYour Name 			 descriptor OR link descriptor that is being pointed to
157*5113495bSYour Name 			shall be returned after the frame has been processed. It
158*5113495bSYour Name 			 is used by WBM for routing purposes.
159*5113495bSYour Name 
160*5113495bSYour Name 			<enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
161*5113495bSYour Name 			 to the WMB buffer idle list
162*5113495bSYour Name 			<enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
163*5113495bSYour Name 			 to the WBM idle link descriptor idle list, where the chip
164*5113495bSYour Name 			 0 WBM is chosen in case of a multi-chip config
165*5113495bSYour Name 			<enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
166*5113495bSYour Name 			 to the chip 1 WBM idle link descriptor idle list
167*5113495bSYour Name 			<enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
168*5113495bSYour Name 			 to the chip 2 WBM idle link descriptor idle list
169*5113495bSYour Name 			<enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
170*5113495bSYour Name 			returned to chip 3 WBM idle link descriptor idle list
171*5113495bSYour Name 			<enum 4 FW_BM> This buffer shall be returned to the FW
172*5113495bSYour Name 			<enum 5 SW0_BM> This buffer shall be returned to the SW,
173*5113495bSYour Name 			ring 0
174*5113495bSYour Name 			<enum 6 SW1_BM> This buffer shall be returned to the SW,
175*5113495bSYour Name 			ring 1
176*5113495bSYour Name 			<enum 7 SW2_BM> This buffer shall be returned to the SW,
177*5113495bSYour Name 			ring 2
178*5113495bSYour Name 			<enum 8 SW3_BM> This buffer shall be returned to the SW,
179*5113495bSYour Name 			ring 3
180*5113495bSYour Name 			<enum 9 SW4_BM> This buffer shall be returned to the SW,
181*5113495bSYour Name 			ring 4
182*5113495bSYour Name 			<enum 10 SW5_BM> This buffer shall be returned to the SW,
183*5113495bSYour Name 			ring 5
184*5113495bSYour Name 			<enum 11 SW6_BM> This buffer shall be returned to the SW,
185*5113495bSYour Name 			ring 6
186*5113495bSYour Name 
187*5113495bSYour Name 			<legal 0-12>
188*5113495bSYour Name */
189*5113495bSYour Name 
190*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET                     0x00000004
191*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB                        8
192*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB                        11
193*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK                       0x00000f00
194*5113495bSYour Name 
195*5113495bSYour Name 
196*5113495bSYour Name /* Description		SW_BUFFER_COOKIE
197*5113495bSYour Name 
198*5113495bSYour Name 			Cookie field exclusively used by SW.
199*5113495bSYour Name 
200*5113495bSYour Name 			In case of 'NULL' pointer, this field is set to 0
201*5113495bSYour Name 
202*5113495bSYour Name 			HW ignores the contents, accept that it passes the programmed
203*5113495bSYour Name 			 value on to other descriptors together with the physical
204*5113495bSYour Name 			 address
205*5113495bSYour Name 
206*5113495bSYour Name 			Field can be used by SW to for example associate the buffers
207*5113495bSYour Name 			 physical address with the virtual address
208*5113495bSYour Name 			The bit definitions as used by SW are within SW HLD specification
209*5113495bSYour Name 
210*5113495bSYour Name 
211*5113495bSYour Name 			NOTE1:
212*5113495bSYour Name 			The three most significant bits can have a special meaning
213*5113495bSYour Name 			 in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
214*5113495bSYour Name 			and field transmit_bw_restriction is set
215*5113495bSYour Name 
216*5113495bSYour Name 			In case of NON punctured transmission:
217*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
218*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
219*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
220*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
221*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
222*5113495bSYour Name 			Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
223*5113495bSYour Name 			Sw_buffer_cookie[19:18] = 2'b11: reserved
224*5113495bSYour Name 
225*5113495bSYour Name 			In case of punctured transmission:
226*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
227*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
228*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
229*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
230*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
231*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
232*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
233*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
234*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
235*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
236*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
237*5113495bSYour Name 			Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
238*5113495bSYour Name 			Sw_buffer_cookie[19:18] = 2'b11: reserved
239*5113495bSYour Name 
240*5113495bSYour Name 			Note: a punctured transmission is indicated by the presence
241*5113495bSYour Name 			 of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
242*5113495bSYour Name 
243*5113495bSYour Name 			<legal all>
244*5113495bSYour Name */
245*5113495bSYour Name 
246*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET                          0x00000004
247*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_SW_BUFFER_COOKIE_LSB                             12
248*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MSB                             31
249*5113495bSYour Name #define TCL_DATA_CMD_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MASK                            0xfffff000
250*5113495bSYour Name 
251*5113495bSYour Name 
252*5113495bSYour Name /* Description		TCL_CMD_TYPE
253*5113495bSYour Name 
254*5113495bSYour Name 			This field is used to select the type of TCL Command decriptor
255*5113495bSYour Name 			 that is queued by SW/FW. For 'TCL_DATA_CMD' this has to
256*5113495bSYour Name 			 be 0.
257*5113495bSYour Name 			<legal 0>
258*5113495bSYour Name */
259*5113495bSYour Name 
260*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_TYPE_OFFSET                                            0x00000008
261*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_TYPE_LSB                                               0
262*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_TYPE_MSB                                               0
263*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_TYPE_MASK                                              0x00000001
264*5113495bSYour Name 
265*5113495bSYour Name 
266*5113495bSYour Name /* Description		BUF_OR_EXT_DESC_TYPE
267*5113495bSYour Name 
268*5113495bSYour Name 			<enum 0 MSDU_buffer> The address points to an MSDU buffer.
269*5113495bSYour Name 
270*5113495bSYour Name 			<enum 1 extension_descriptor> The address points to an MSDU
271*5113495bSYour Name 			 link extension descriptor
272*5113495bSYour Name 			< legal all>
273*5113495bSYour Name */
274*5113495bSYour Name 
275*5113495bSYour Name #define TCL_DATA_CMD_BUF_OR_EXT_DESC_TYPE_OFFSET                                    0x00000008
276*5113495bSYour Name #define TCL_DATA_CMD_BUF_OR_EXT_DESC_TYPE_LSB                                       1
277*5113495bSYour Name #define TCL_DATA_CMD_BUF_OR_EXT_DESC_TYPE_MSB                                       1
278*5113495bSYour Name #define TCL_DATA_CMD_BUF_OR_EXT_DESC_TYPE_MASK                                      0x00000002
279*5113495bSYour Name 
280*5113495bSYour Name 
281*5113495bSYour Name /* Description		BANK_ID
282*5113495bSYour Name 
283*5113495bSYour Name 			This is used to select one of the TCL register banks for
284*5113495bSYour Name 			 fields removed from 'TCL_DATA_CMD' that do not change often
285*5113495bSYour Name 			 within one virtual device or a set of virtual devices:
286*5113495bSYour Name 			EPD
287*5113495bSYour Name 			encap_type
288*5113495bSYour Name 			Encrypt_type
289*5113495bSYour Name 			src_buffer_swap
290*5113495bSYour Name 			Link_meta_swap
291*5113495bSYour Name 			Search_type
292*5113495bSYour Name 			AddrX_en
293*5113495bSYour Name 			AddrY_en
294*5113495bSYour Name 			DSCP_TID_TABLE_NUM
295*5113495bSYour Name 			mesh_enable
296*5113495bSYour Name */
297*5113495bSYour Name 
298*5113495bSYour Name #define TCL_DATA_CMD_BANK_ID_OFFSET                                                 0x00000008
299*5113495bSYour Name #define TCL_DATA_CMD_BANK_ID_LSB                                                    2
300*5113495bSYour Name #define TCL_DATA_CMD_BANK_ID_MSB                                                    7
301*5113495bSYour Name #define TCL_DATA_CMD_BANK_ID_MASK                                                   0x000000fc
302*5113495bSYour Name 
303*5113495bSYour Name 
304*5113495bSYour Name /* Description		TX_NOTIFY_FRAME
305*5113495bSYour Name 
306*5113495bSYour Name 			TCL copies this value to 'TQM_ENTRANCE_RING' field FW_tx_notify_frame.
307*5113495bSYour Name 
308*5113495bSYour Name 			Note: TCL can also have CCE/LCE rules to set 'Tx_notify_frame.'
309*5113495bSYour Name 			TCL shall have a register to choose the notify type in case
310*5113495bSYour Name 			 of a conflict between the two settings.
311*5113495bSYour Name */
312*5113495bSYour Name 
313*5113495bSYour Name #define TCL_DATA_CMD_TX_NOTIFY_FRAME_OFFSET                                         0x00000008
314*5113495bSYour Name #define TCL_DATA_CMD_TX_NOTIFY_FRAME_LSB                                            8
315*5113495bSYour Name #define TCL_DATA_CMD_TX_NOTIFY_FRAME_MSB                                            10
316*5113495bSYour Name #define TCL_DATA_CMD_TX_NOTIFY_FRAME_MASK                                           0x00000700
317*5113495bSYour Name 
318*5113495bSYour Name 
319*5113495bSYour Name /* Description		HEADER_LENGTH_READ_SEL
320*5113495bSYour Name 
321*5113495bSYour Name 			This field is used to select the per 'encap_type' register
322*5113495bSYour Name 			 set for MSDU header read length.
323*5113495bSYour Name 			0: set 0 header read length register
324*5113495bSYour Name 			1: set 1 header read length register
325*5113495bSYour Name 			<legal all>
326*5113495bSYour Name */
327*5113495bSYour Name 
328*5113495bSYour Name #define TCL_DATA_CMD_HEADER_LENGTH_READ_SEL_OFFSET                                  0x00000008
329*5113495bSYour Name #define TCL_DATA_CMD_HEADER_LENGTH_READ_SEL_LSB                                     11
330*5113495bSYour Name #define TCL_DATA_CMD_HEADER_LENGTH_READ_SEL_MSB                                     11
331*5113495bSYour Name #define TCL_DATA_CMD_HEADER_LENGTH_READ_SEL_MASK                                    0x00000800
332*5113495bSYour Name 
333*5113495bSYour Name 
334*5113495bSYour Name /* Description		BUFFER_TIMESTAMP
335*5113495bSYour Name 
336*5113495bSYour Name 			Field only valid when 'Buffer_timestamp_valid ' is set.
337*5113495bSYour Name 
338*5113495bSYour Name 			Frame system entrance timestamp. The timestamp is related
339*5113495bSYour Name 			 to the global system timer
340*5113495bSYour Name 
341*5113495bSYour Name 			Generally the first module (SW, TCL or TQM). that sees this
342*5113495bSYour Name 			 frame and this timestamp field is not valid, shall fill
343*5113495bSYour Name 			 in this field.
344*5113495bSYour Name 
345*5113495bSYour Name 			Timestamp in units determined by the UMCMN 'TX_TIMESTAMP_RESOLUTION_SELECT'
346*5113495bSYour Name 			register
347*5113495bSYour Name 
348*5113495bSYour Name */
349*5113495bSYour Name 
350*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_OFFSET                                        0x00000008
351*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_LSB                                           12
352*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_MSB                                           30
353*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_MASK                                          0x7ffff000
354*5113495bSYour Name 
355*5113495bSYour Name 
356*5113495bSYour Name /* Description		BUFFER_TIMESTAMP_VALID
357*5113495bSYour Name 
358*5113495bSYour Name 			When set, the Buffer_timestamp field contains valid info.
359*5113495bSYour Name 
360*5113495bSYour Name */
361*5113495bSYour Name 
362*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_VALID_OFFSET                                  0x00000008
363*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_VALID_LSB                                     31
364*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_VALID_MSB                                     31
365*5113495bSYour Name #define TCL_DATA_CMD_BUFFER_TIMESTAMP_VALID_MASK                                    0x80000000
366*5113495bSYour Name 
367*5113495bSYour Name 
368*5113495bSYour Name /* Description		RESERVED_3A
369*5113495bSYour Name 
370*5113495bSYour Name 			<legal 0>
371*5113495bSYour Name */
372*5113495bSYour Name 
373*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_3A_OFFSET                                             0x0000000c
374*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_3A_LSB                                                0
375*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_3A_MSB                                                15
376*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_3A_MASK                                               0x0000ffff
377*5113495bSYour Name 
378*5113495bSYour Name 
379*5113495bSYour Name /* Description		TCL_CMD_NUMBER
380*5113495bSYour Name 
381*5113495bSYour Name 			This number can be used by SW to track, identify and link
382*5113495bSYour Name 			 the created commands with the command statuses
383*5113495bSYour Name 
384*5113495bSYour Name 			Is set to the value 'TCL_CMD_Number' of the related TCL_DATA
385*5113495bSYour Name 			 command
386*5113495bSYour Name 			<legal all>
387*5113495bSYour Name */
388*5113495bSYour Name 
389*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_NUMBER_OFFSET                                          0x0000000c
390*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_NUMBER_LSB                                             16
391*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_NUMBER_MSB                                             31
392*5113495bSYour Name #define TCL_DATA_CMD_TCL_CMD_NUMBER_MASK                                            0xffff0000
393*5113495bSYour Name 
394*5113495bSYour Name 
395*5113495bSYour Name /* Description		DATA_LENGTH
396*5113495bSYour Name 
397*5113495bSYour Name 			Valid Data length in bytes.
398*5113495bSYour Name 
399*5113495bSYour Name 			MSDU length in case of direct descriptor.
400*5113495bSYour Name 			Length of link extension descriptor in case of Link extension
401*5113495bSYour Name 			 descriptor. This is used to know the size of Metadata.
402*5113495bSYour Name 			<legal all>
403*5113495bSYour Name */
404*5113495bSYour Name 
405*5113495bSYour Name #define TCL_DATA_CMD_DATA_LENGTH_OFFSET                                             0x00000010
406*5113495bSYour Name #define TCL_DATA_CMD_DATA_LENGTH_LSB                                                0
407*5113495bSYour Name #define TCL_DATA_CMD_DATA_LENGTH_MSB                                                15
408*5113495bSYour Name #define TCL_DATA_CMD_DATA_LENGTH_MASK                                               0x0000ffff
409*5113495bSYour Name 
410*5113495bSYour Name 
411*5113495bSYour Name /* Description		IPV4_CHECKSUM_EN
412*5113495bSYour Name 
413*5113495bSYour Name 			OLE related control
414*5113495bSYour Name 			Enable IPv4 checksum replacement
415*5113495bSYour Name */
416*5113495bSYour Name 
417*5113495bSYour Name #define TCL_DATA_CMD_IPV4_CHECKSUM_EN_OFFSET                                        0x00000010
418*5113495bSYour Name #define TCL_DATA_CMD_IPV4_CHECKSUM_EN_LSB                                           16
419*5113495bSYour Name #define TCL_DATA_CMD_IPV4_CHECKSUM_EN_MSB                                           16
420*5113495bSYour Name #define TCL_DATA_CMD_IPV4_CHECKSUM_EN_MASK                                          0x00010000
421*5113495bSYour Name 
422*5113495bSYour Name 
423*5113495bSYour Name /* Description		UDP_OVER_IPV4_CHECKSUM_EN
424*5113495bSYour Name 
425*5113495bSYour Name 			OLE related control
426*5113495bSYour Name 			Enable UDP over IPv4 checksum replacement.  UDP checksum
427*5113495bSYour Name 			 over IPv4 is optional for TCP/IP stacks.
428*5113495bSYour Name */
429*5113495bSYour Name 
430*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV4_CHECKSUM_EN_OFFSET                               0x00000010
431*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV4_CHECKSUM_EN_LSB                                  17
432*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV4_CHECKSUM_EN_MSB                                  17
433*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV4_CHECKSUM_EN_MASK                                 0x00020000
434*5113495bSYour Name 
435*5113495bSYour Name 
436*5113495bSYour Name /* Description		UDP_OVER_IPV6_CHECKSUM_EN
437*5113495bSYour Name 
438*5113495bSYour Name 			OLE related control
439*5113495bSYour Name 			Enable UDP over IPv6 checksum replacement.  UDP checksum
440*5113495bSYour Name 			 over IPv6 is mandatory for TCP/IP stacks.
441*5113495bSYour Name */
442*5113495bSYour Name 
443*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV6_CHECKSUM_EN_OFFSET                               0x00000010
444*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV6_CHECKSUM_EN_LSB                                  18
445*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV6_CHECKSUM_EN_MSB                                  18
446*5113495bSYour Name #define TCL_DATA_CMD_UDP_OVER_IPV6_CHECKSUM_EN_MASK                                 0x00040000
447*5113495bSYour Name 
448*5113495bSYour Name 
449*5113495bSYour Name /* Description		TCP_OVER_IPV4_CHECKSUM_EN
450*5113495bSYour Name 
451*5113495bSYour Name 			OLE related control
452*5113495bSYour Name 			Enable TCP checksum over IPv4 replacement
453*5113495bSYour Name */
454*5113495bSYour Name 
455*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV4_CHECKSUM_EN_OFFSET                               0x00000010
456*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV4_CHECKSUM_EN_LSB                                  19
457*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV4_CHECKSUM_EN_MSB                                  19
458*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV4_CHECKSUM_EN_MASK                                 0x00080000
459*5113495bSYour Name 
460*5113495bSYour Name 
461*5113495bSYour Name /* Description		TCP_OVER_IPV6_CHECKSUM_EN
462*5113495bSYour Name 
463*5113495bSYour Name 			OLE related control
464*5113495bSYour Name 			Enable TCP checksum over IPv6 replacement
465*5113495bSYour Name */
466*5113495bSYour Name 
467*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV6_CHECKSUM_EN_OFFSET                               0x00000010
468*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV6_CHECKSUM_EN_LSB                                  20
469*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV6_CHECKSUM_EN_MSB                                  20
470*5113495bSYour Name #define TCL_DATA_CMD_TCP_OVER_IPV6_CHECKSUM_EN_MASK                                 0x00100000
471*5113495bSYour Name 
472*5113495bSYour Name 
473*5113495bSYour Name /* Description		TO_FW
474*5113495bSYour Name 
475*5113495bSYour Name 			Forward packet to FW along with classification result. The
476*5113495bSYour Name 			 packet will not be forward to TQM when this bit is set
477*5113495bSYour Name 
478*5113495bSYour Name 			1'b0: Use classification result to forward the packet.
479*5113495bSYour Name 			1'b1: Override classification result and forward packet
480*5113495bSYour Name 			only to FW.
481*5113495bSYour Name 			<legal all>
482*5113495bSYour Name */
483*5113495bSYour Name 
484*5113495bSYour Name #define TCL_DATA_CMD_TO_FW_OFFSET                                                   0x00000010
485*5113495bSYour Name #define TCL_DATA_CMD_TO_FW_LSB                                                      21
486*5113495bSYour Name #define TCL_DATA_CMD_TO_FW_MSB                                                      21
487*5113495bSYour Name #define TCL_DATA_CMD_TO_FW_MASK                                                     0x00200000
488*5113495bSYour Name 
489*5113495bSYour Name 
490*5113495bSYour Name /* Description		RESERVED_4A
491*5113495bSYour Name 
492*5113495bSYour Name 			<legal 0>
493*5113495bSYour Name */
494*5113495bSYour Name 
495*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_4A_OFFSET                                             0x00000010
496*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_4A_LSB                                                22
497*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_4A_MSB                                                22
498*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_4A_MASK                                               0x00400000
499*5113495bSYour Name 
500*5113495bSYour Name 
501*5113495bSYour Name /* Description		PACKET_OFFSET
502*5113495bSYour Name 
503*5113495bSYour Name 			Packet offset from Metadata in case of direct buffer descriptor.
504*5113495bSYour Name 			This field is valid when Buf_or_ext_desc_type is reset(=
505*5113495bSYour Name 			0).
506*5113495bSYour Name 			<legal all>
507*5113495bSYour Name */
508*5113495bSYour Name 
509*5113495bSYour Name #define TCL_DATA_CMD_PACKET_OFFSET_OFFSET                                           0x00000010
510*5113495bSYour Name #define TCL_DATA_CMD_PACKET_OFFSET_LSB                                              23
511*5113495bSYour Name #define TCL_DATA_CMD_PACKET_OFFSET_MSB                                              31
512*5113495bSYour Name #define TCL_DATA_CMD_PACKET_OFFSET_MASK                                             0xff800000
513*5113495bSYour Name 
514*5113495bSYour Name 
515*5113495bSYour Name /* Description		HLOS_TID_OVERWRITE
516*5113495bSYour Name 
517*5113495bSYour Name 			When set, TCL shall ignore the IP DSCP and VLAN PCP fields
518*5113495bSYour Name 			 and use HLOS_TID as the final TID. Otherwise TCL shall
519*5113495bSYour Name 			consider the DSCP and PCP fields as well as HLOS_TID and
520*5113495bSYour Name 			 choose a final TID based on the configured priority
521*5113495bSYour Name 			<legal all>
522*5113495bSYour Name */
523*5113495bSYour Name 
524*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_OVERWRITE_OFFSET                                      0x00000014
525*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_OVERWRITE_LSB                                         0
526*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_OVERWRITE_MSB                                         0
527*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_OVERWRITE_MASK                                        0x00000001
528*5113495bSYour Name 
529*5113495bSYour Name 
530*5113495bSYour Name /* Description		FLOW_OVERRIDE_ENABLE
531*5113495bSYour Name 
532*5113495bSYour Name 			TCL uses this to select the flow pointer from the peer table,
533*5113495bSYour Name 			which can be overridden by SW for pre-encrypted raw WiFi
534*5113495bSYour Name 			 packets that cannot be parsed for UDP or for other MLO
535*5113495bSYour Name 			or enterprise use cases:
536*5113495bSYour Name 			<enum 0 FP_PARSE_IP> Use the flow-pointer based on parsing
537*5113495bSYour Name 			 the IPv4 or IPv6 header.
538*5113495bSYour Name 			<enum 1 FP_USE_OVERRIDE> Use the who_classify_info_sel and
539*5113495bSYour Name 			 flow_override fields to select the flow-pointer.
540*5113495bSYour Name 			<legal all>
541*5113495bSYour Name */
542*5113495bSYour Name 
543*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_ENABLE_OFFSET                                    0x00000014
544*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_ENABLE_LSB                                       1
545*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_ENABLE_MSB                                       1
546*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_ENABLE_MASK                                      0x00000002
547*5113495bSYour Name 
548*5113495bSYour Name 
549*5113495bSYour Name /* Description		WHO_CLASSIFY_INFO_SEL
550*5113495bSYour Name 
551*5113495bSYour Name 			Field only valid when flow_override_enable is set to FP_USE_OVERRIDE.
552*5113495bSYour Name 
553*5113495bSYour Name 
554*5113495bSYour Name 			This field is used to select  one of the 'WHO_CLASSIFY_INFO's
555*5113495bSYour Name 			 in the peer table in case more than 2 flows are mapped
556*5113495bSYour Name 			to a single TID.
557*5113495bSYour Name 			0: To choose Flow 0 and 1 of any TID use this value.
558*5113495bSYour Name 			1: To choose Flow 2 and 3 of any TID use this value.
559*5113495bSYour Name 			2: To choose Flow 4 and 5 of any TID use this value.
560*5113495bSYour Name 			3: To choose Flow 6 and 7 of any TID use this value.
561*5113495bSYour Name 
562*5113495bSYour Name 			If who_classify_info sel is not in sync with the num_tx_classify_info
563*5113495bSYour Name 			 field from address search, then TCL will set 'who_classify_info_sel'
564*5113495bSYour Name 			to 0 use flows 0 and 1.
565*5113495bSYour Name 			<legal all>
566*5113495bSYour Name */
567*5113495bSYour Name 
568*5113495bSYour Name #define TCL_DATA_CMD_WHO_CLASSIFY_INFO_SEL_OFFSET                                   0x00000014
569*5113495bSYour Name #define TCL_DATA_CMD_WHO_CLASSIFY_INFO_SEL_LSB                                      2
570*5113495bSYour Name #define TCL_DATA_CMD_WHO_CLASSIFY_INFO_SEL_MSB                                      3
571*5113495bSYour Name #define TCL_DATA_CMD_WHO_CLASSIFY_INFO_SEL_MASK                                     0x0000000c
572*5113495bSYour Name 
573*5113495bSYour Name 
574*5113495bSYour Name /* Description		HLOS_TID
575*5113495bSYour Name 
576*5113495bSYour Name 			HLOS MSDU priority
577*5113495bSYour Name 
578*5113495bSYour Name 			Field is used when HLOS_TID_overwrite is set or flow_override_enable
579*5113495bSYour Name 			 is set to FP_USE_OVERRIDE.
580*5113495bSYour Name 
581*5113495bSYour Name 			Field is also used when HLOS_TID_overwrite is not set and
582*5113495bSYour Name 			 DSCP/PCP is not available in the packet.
583*5113495bSYour Name 			<legal all>
584*5113495bSYour Name */
585*5113495bSYour Name 
586*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_OFFSET                                                0x00000014
587*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_LSB                                                   4
588*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_MSB                                                   7
589*5113495bSYour Name #define TCL_DATA_CMD_HLOS_TID_MASK                                                  0x000000f0
590*5113495bSYour Name 
591*5113495bSYour Name 
592*5113495bSYour Name /* Description		FLOW_OVERRIDE
593*5113495bSYour Name 
594*5113495bSYour Name 			Field only valid when flow_override_enable is set to FP_USE_OVERRIDE.
595*5113495bSYour Name 
596*5113495bSYour Name 
597*5113495bSYour Name 			TCL uses this to select the flow pointer from the peer table,
598*5113495bSYour Name 			which can be overridden by SW for pre-encrypted raw WiFi
599*5113495bSYour Name 			 packets that cannot be parsed for UDP or for other MLO
600*5113495bSYour Name 			or enterprise use cases:
601*5113495bSYour Name 			<enum 0 FP_USE_NON_UDP> Use the non-UDP flow pointer (flow
602*5113495bSYour Name 			 0)
603*5113495bSYour Name 			<enum 1 FP_USE_UDP> Use the UDP flow pointer (flow 1)
604*5113495bSYour Name 
605*5113495bSYour Name 			<legal all>
606*5113495bSYour Name */
607*5113495bSYour Name 
608*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_OFFSET                                           0x00000014
609*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_LSB                                              8
610*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_MSB                                              8
611*5113495bSYour Name #define TCL_DATA_CMD_FLOW_OVERRIDE_MASK                                             0x00000100
612*5113495bSYour Name 
613*5113495bSYour Name 
614*5113495bSYour Name /* Description		PMAC_ID
615*5113495bSYour Name 
616*5113495bSYour Name 			TCL uses this PMAC_ID in address search, i.e, while finding
617*5113495bSYour Name 			 matching entry for the packet in AST corresponding to given
618*5113495bSYour Name 			 PMAC_ID
619*5113495bSYour Name 			If PMAC ID is all 1s (=> value 3), it indicates wildcard
620*5113495bSYour Name 			 match for any PMAC
621*5113495bSYour Name 			<legal 0-3>
622*5113495bSYour Name */
623*5113495bSYour Name 
624*5113495bSYour Name #define TCL_DATA_CMD_PMAC_ID_OFFSET                                                 0x00000014
625*5113495bSYour Name #define TCL_DATA_CMD_PMAC_ID_LSB                                                    9
626*5113495bSYour Name #define TCL_DATA_CMD_PMAC_ID_MSB                                                    10
627*5113495bSYour Name #define TCL_DATA_CMD_PMAC_ID_MASK                                                   0x00000600
628*5113495bSYour Name 
629*5113495bSYour Name 
630*5113495bSYour Name /* Description		MSDU_COLOR
631*5113495bSYour Name 
632*5113495bSYour Name 			Consumer: TQM
633*5113495bSYour Name 			Producer: SW
634*5113495bSYour Name 
635*5113495bSYour Name 			TCL copies this value to 'TQM_ENTRANCE_RING' in the structure
636*5113495bSYour Name 			 'TX_MSDU_DETAILS' field msdu_color.
637*5113495bSYour Name 
638*5113495bSYour Name 			When set, TQM will check the color and choose the color
639*5113495bSYour Name 			based threshold with which it will decide if the MSDU has
640*5113495bSYour Name 			 to be dropped.
641*5113495bSYour Name 
642*5113495bSYour Name 			<enum 0 MSDU_COLORLESS> MSDUs which have no color and TQM
643*5113495bSYour Name 			 uses legacy drop thresholds for these MSDUs.
644*5113495bSYour Name 			<enum 1 MSDU_COLOR_GREEN>
645*5113495bSYour Name 			<enum 2 MSDU_COLOR_YELLOW>
646*5113495bSYour Name 			<enum 3 MSDU_COLOR_RED>
647*5113495bSYour Name 			<legal 0-3>
648*5113495bSYour Name */
649*5113495bSYour Name 
650*5113495bSYour Name #define TCL_DATA_CMD_MSDU_COLOR_OFFSET                                              0x00000014
651*5113495bSYour Name #define TCL_DATA_CMD_MSDU_COLOR_LSB                                                 11
652*5113495bSYour Name #define TCL_DATA_CMD_MSDU_COLOR_MSB                                                 12
653*5113495bSYour Name #define TCL_DATA_CMD_MSDU_COLOR_MASK                                                0x00001800
654*5113495bSYour Name 
655*5113495bSYour Name 
656*5113495bSYour Name /* Description		RESERVED_5A
657*5113495bSYour Name 
658*5113495bSYour Name 			<legal 0>
659*5113495bSYour Name */
660*5113495bSYour Name 
661*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_5A_OFFSET                                             0x00000014
662*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_5A_LSB                                                13
663*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_5A_MSB                                                23
664*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_5A_MASK                                               0x00ffe000
665*5113495bSYour Name 
666*5113495bSYour Name 
667*5113495bSYour Name /* Description		VDEV_ID
668*5113495bSYour Name 
669*5113495bSYour Name 			Virtual device ID to check against the address search entry
670*5113495bSYour Name 			 to avoid security issues from transmitting packets from
671*5113495bSYour Name 			 an incorrect virtual device
672*5113495bSYour Name 			<legal all>
673*5113495bSYour Name */
674*5113495bSYour Name 
675*5113495bSYour Name #define TCL_DATA_CMD_VDEV_ID_OFFSET                                                 0x00000014
676*5113495bSYour Name #define TCL_DATA_CMD_VDEV_ID_LSB                                                    24
677*5113495bSYour Name #define TCL_DATA_CMD_VDEV_ID_MSB                                                    31
678*5113495bSYour Name #define TCL_DATA_CMD_VDEV_ID_MASK                                                   0xff000000
679*5113495bSYour Name 
680*5113495bSYour Name 
681*5113495bSYour Name /* Description		SEARCH_INDEX
682*5113495bSYour Name 
683*5113495bSYour Name 			The index that will be used for index based address or flow
684*5113495bSYour Name 			 search. The field is valid when 'search_type' is  1 or
685*5113495bSYour Name 			2.
686*5113495bSYour Name 			<legal all>
687*5113495bSYour Name */
688*5113495bSYour Name 
689*5113495bSYour Name #define TCL_DATA_CMD_SEARCH_INDEX_OFFSET                                            0x00000018
690*5113495bSYour Name #define TCL_DATA_CMD_SEARCH_INDEX_LSB                                               0
691*5113495bSYour Name #define TCL_DATA_CMD_SEARCH_INDEX_MSB                                               19
692*5113495bSYour Name #define TCL_DATA_CMD_SEARCH_INDEX_MASK                                              0x000fffff
693*5113495bSYour Name 
694*5113495bSYour Name 
695*5113495bSYour Name /* Description		CACHE_SET_NUM
696*5113495bSYour Name 
697*5113495bSYour Name 			Cache set number that should be used to cache the index
698*5113495bSYour Name 			based search results, for address and flow search. This
699*5113495bSYour Name 			value should be equal to LSB four bits of the hash value
700*5113495bSYour Name 			 of match data, in case of search index points to an entry
701*5113495bSYour Name 			 which may be used in content based search also. The value
702*5113495bSYour Name 			 can be anything when the entry pointed by search index
703*5113495bSYour Name 			will not be used for content based search.
704*5113495bSYour Name 			<legal all>
705*5113495bSYour Name */
706*5113495bSYour Name 
707*5113495bSYour Name #define TCL_DATA_CMD_CACHE_SET_NUM_OFFSET                                           0x00000018
708*5113495bSYour Name #define TCL_DATA_CMD_CACHE_SET_NUM_LSB                                              20
709*5113495bSYour Name #define TCL_DATA_CMD_CACHE_SET_NUM_MSB                                              23
710*5113495bSYour Name #define TCL_DATA_CMD_CACHE_SET_NUM_MASK                                             0x00f00000
711*5113495bSYour Name 
712*5113495bSYour Name 
713*5113495bSYour Name /* Description		INDEX_LOOKUP_OVERRIDE
714*5113495bSYour Name 
715*5113495bSYour Name 			When set, address search and packet routing is forced to
716*5113495bSYour Name 			 use 'search_index' instead of following the register configuration
717*5113495bSYour Name 			 seleced by Bank_id.
718*5113495bSYour Name 			<legal all>
719*5113495bSYour Name */
720*5113495bSYour Name 
721*5113495bSYour Name #define TCL_DATA_CMD_INDEX_LOOKUP_OVERRIDE_OFFSET                                   0x00000018
722*5113495bSYour Name #define TCL_DATA_CMD_INDEX_LOOKUP_OVERRIDE_LSB                                      24
723*5113495bSYour Name #define TCL_DATA_CMD_INDEX_LOOKUP_OVERRIDE_MSB                                      24
724*5113495bSYour Name #define TCL_DATA_CMD_INDEX_LOOKUP_OVERRIDE_MASK                                     0x01000000
725*5113495bSYour Name 
726*5113495bSYour Name 
727*5113495bSYour Name /* Description		RESERVED_6A
728*5113495bSYour Name 
729*5113495bSYour Name 			<legal 0>
730*5113495bSYour Name */
731*5113495bSYour Name 
732*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_6A_OFFSET                                             0x00000018
733*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_6A_LSB                                                25
734*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_6A_MSB                                                31
735*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_6A_MASK                                               0xfe000000
736*5113495bSYour Name 
737*5113495bSYour Name 
738*5113495bSYour Name /* Description		RESERVED_7A
739*5113495bSYour Name 
740*5113495bSYour Name 			<legal 0>
741*5113495bSYour Name */
742*5113495bSYour Name 
743*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_7A_OFFSET                                             0x0000001c
744*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_7A_LSB                                                0
745*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_7A_MSB                                                19
746*5113495bSYour Name #define TCL_DATA_CMD_RESERVED_7A_MASK                                               0x000fffff
747*5113495bSYour Name 
748*5113495bSYour Name 
749*5113495bSYour Name /* Description		RING_ID
750*5113495bSYour Name 
751*5113495bSYour Name 			The buffer pointer ring ID.
752*5113495bSYour Name 			0 refers to the IDLE ring
753*5113495bSYour Name 			1 - N refers to other rings
754*5113495bSYour Name 
755*5113495bSYour Name 			Helps with debugging when dumping ring contents.
756*5113495bSYour Name 			<legal all>
757*5113495bSYour Name */
758*5113495bSYour Name 
759*5113495bSYour Name #define TCL_DATA_CMD_RING_ID_OFFSET                                                 0x0000001c
760*5113495bSYour Name #define TCL_DATA_CMD_RING_ID_LSB                                                    20
761*5113495bSYour Name #define TCL_DATA_CMD_RING_ID_MSB                                                    27
762*5113495bSYour Name #define TCL_DATA_CMD_RING_ID_MASK                                                   0x0ff00000
763*5113495bSYour Name 
764*5113495bSYour Name 
765*5113495bSYour Name /* Description		LOOPING_COUNT
766*5113495bSYour Name 
767*5113495bSYour Name 			A count value that indicates the number of times the producer
768*5113495bSYour Name 			 of entries into the Ring has looped around the ring.
769*5113495bSYour Name 			At initialization time, this value is set to 0. On the first
770*5113495bSYour Name 			 loop, this value is set to 1. After the max value is reached
771*5113495bSYour Name 			 allowed by the number of bits for this field, the count
772*5113495bSYour Name 			 value continues with 0 again.
773*5113495bSYour Name 
774*5113495bSYour Name 			In case SW is the consumer of the ring entries, it can use
775*5113495bSYour Name 			 this field to figure out up to where the producer of entries
776*5113495bSYour Name 			 has created new entries. This eliminates the need to check
777*5113495bSYour Name 			 where the "head pointer' of the ring is located once the
778*5113495bSYour Name 			 SW starts processing an interrupt indicating that new entries
779*5113495bSYour Name 			 have been put into this ring...
780*5113495bSYour Name 
781*5113495bSYour Name 			Also note that SW if it wants only needs to look at the
782*5113495bSYour Name 			LSB bit of this count value.
783*5113495bSYour Name 			<legal all>
784*5113495bSYour Name */
785*5113495bSYour Name 
786*5113495bSYour Name #define TCL_DATA_CMD_LOOPING_COUNT_OFFSET                                           0x0000001c
787*5113495bSYour Name #define TCL_DATA_CMD_LOOPING_COUNT_LSB                                              28
788*5113495bSYour Name #define TCL_DATA_CMD_LOOPING_COUNT_MSB                                              31
789*5113495bSYour Name #define TCL_DATA_CMD_LOOPING_COUNT_MASK                                             0xf0000000
790*5113495bSYour Name 
791*5113495bSYour Name 
792*5113495bSYour Name 
793*5113495bSYour Name #endif   // TCL_DATA_CMD
794