1 /*
2  * Copyright (c) 2016-2017 The Linux Foundation. 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 
19 //
20 // DO NOT EDIT!  This file is automatically generated
21 //               These definitions are tied to a particular hardware layout
22 
23 
24 #ifndef _TCL_DATA_CMD_H_
25 #define _TCL_DATA_CMD_H_
26 #if !defined(__ASSEMBLER__)
27 #endif
28 
29 #include "buffer_addr_info.h"
30 
31 // ################ START SUMMARY #################
32 //
33 //	Dword	Fields
34 //	0-1	struct buffer_addr_info buf_addr_info;
35 //	2	buf_or_ext_desc_type[0], epd[1], encap_type[3:2], encrypt_type[7:4], src_buffer_swap[8], link_meta_swap[9], reserved[13:10], addrx_en[14], addry_en[15], tcl_cmd_number[31:16]
36 //	3	data_length[15:0], ipv4_checksum_en[16], udp_over_ipv4_checksum_en[17], udp_over_ipv6_checksum_en[18], tcp_over_ipv4_checksum_en[19], tcp_over_ipv6_checksum_en[20], to_fw[21], dscp_to_tid_priority_table_id[22], packet_offset[31:23]
37 //	4	buffer_timestamp[18:0], buffer_timestamp_valid[19], mesh_enable[20], hlos_tid_overwrite[21], hlos_tid[25:22], reserved_4[31:26]
38 //	5	reserved_5[31:0]
39 //	6	reserved_6a[19:0], ring_id[27:20], looping_count[31:28]
40 //
41 // ################ END SUMMARY #################
42 
43 #define NUM_OF_DWORDS_TCL_DATA_CMD 7
44 
45 struct tcl_data_cmd {
46     struct            buffer_addr_info                       buf_addr_info;
47              uint32_t buf_or_ext_desc_type            :  1, //[0]
48                       epd                             :  1, //[1]
49                       encap_type                      :  2, //[3:2]
50                       encrypt_type                    :  4, //[7:4]
51                       src_buffer_swap                 :  1, //[8]
52                       link_meta_swap                  :  1, //[9]
53                       reserved                        :  4, //[13:10]
54                       addrx_en                        :  1, //[14]
55                       addry_en                        :  1, //[15]
56                       tcl_cmd_number                  : 16; //[31:16]
57              uint32_t data_length                     : 16, //[15:0]
58                       ipv4_checksum_en                :  1, //[16]
59                       udp_over_ipv4_checksum_en       :  1, //[17]
60                       udp_over_ipv6_checksum_en       :  1, //[18]
61                       tcp_over_ipv4_checksum_en       :  1, //[19]
62                       tcp_over_ipv6_checksum_en       :  1, //[20]
63                       to_fw                           :  1, //[21]
64                       dscp_to_tid_priority_table_id   :  1, //[22]
65                       packet_offset                   :  9; //[31:23]
66              uint32_t buffer_timestamp                : 19, //[18:0]
67                       buffer_timestamp_valid          :  1, //[19]
68                       mesh_enable                     :  1, //[20]
69                       hlos_tid_overwrite              :  1, //[21]
70                       hlos_tid                        :  4, //[25:22]
71                       reserved_4                      :  6; //[31:26]
72              uint32_t reserved_5                      : 32; //[31:0]
73              uint32_t reserved_6a                     : 20, //[19:0]
74                       ring_id                         :  8, //[27:20]
75                       looping_count                   :  4; //[31:28]
76 };
77 
78 /*
79 
80 struct buffer_addr_info buf_addr_info
81 
82 			Details of the physical address for a single buffer
83 
84 			It also contains return ownership info as well as some
85 			meta data for SW related to this buffer.
86 
87 
88 
89 			In case of Buf_or_ext_desc_type indicating
90 			'MSDU_buffer', this address indicates the start of the meta
91 			data that is preceding the actual packet data.
92 
93 			The start of the actual packet data is provided by
94 			field: Packet_offset
95 
96 buf_or_ext_desc_type
97 
98 			<enum 0 MSDU_buffer> The address points to an MSDU
99 			buffer.
100 
101 			<enum 1 extension_descriptor> The address points to an
102 			MSDU link extension descriptor
103 
104 			< legal all>
105 
106 epd
107 
108 			When this bit is set then input packet is an EPD type
109 
110 			<legal all>
111 
112 encap_type
113 
114 			Indicates the encapsulation that HW will perform:
115 
116 			<enum 0 RAW> No encapsulation
117 
118 			<enum 1 Native_WiFi>
119 
120 			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
121 			SNAP/LLC)
122 
123 			<enum 3 802_3> DO NOT USE. Indicate Ethernet
124 
125 
126 
127 			Used by the OLE during encapsulation.
128 
129 			<legal all>
130 
131 encrypt_type
132 
133 			Field only valid for encap_type: RAW
134 
135 
136 
137 			Indicates type of decrypt cipher used (as defined in the
138 			peer entry)
139 
140 			<enum 0 wep_40> WEP 40-bit
141 
142 			<enum 1 wep_104> WEP 104-bit
143 
144 			<enum 2 tkip_no_mic> TKIP without MIC
145 
146 			<enum 3 wep_128> WEP 128-bit
147 
148 			<enum 4 tkip_with_mic> TKIP with MIC
149 
150 			<enum 5 wapi> WAPI
151 
152 			<enum 6 aes_ccmp_128> AES CCMP 128
153 
154 			<enum 7 no_cipher> No crypto
155 
156 			<enum 8 aes_ccmp_256> AES CCMP 256
157 
158 			<enum 9 aes_gcmp_128> AES CCMP 128
159 
160 			<enum 10 aes_gcmp_256> AES CCMP 256
161 
162 			<enum 11 wapi_gcm_sm4> WAPI GCM SM4
163 
164 			<legal 0-11>
165 
166 src_buffer_swap
167 
168 			Treats source memory (packet buffer) organization as
169 			big-endian. The packets are read and byte swapped.
170 
171 			1'b0: Source memory is little endian
172 
173 			1'b1: Source memory is big endian
174 
175 			<legal all>
176 
177 link_meta_swap
178 
179 			Treats link descriptor and Metadata as big-endian. The
180 			link descriptor/Metadata is read and byte swapped.
181 
182 			1'b0: Memory is little endian
183 
184 			1'b1: Memory is big endian
185 
186 			<legal all>
187 
188 reserved
189 
190 			<legal 0>
191 
192 addrx_en
193 
194 			Address X search enable in ASE
195 
196 			1'b0: Search disable
197 
198 			1'b1: Search Enable
199 
200 			<legal all>
201 
202 addry_en
203 
204 			Address Y search enable in ASE
205 
206 			1'b0: Search disable
207 
208 			1'b1: Search Enable
209 
210 			<legal all>
211 
212 tcl_cmd_number
213 
214 			This number can be used by SW to track, identify and
215 			link the created commands with the command statuses
216 
217 
218 
219 			Is set to the value 'TCL_CMD_Number' of the related
220 			TCL_DATA command
221 
222 			<legal all>
223 
224 data_length
225 
226 			Valid Data length in bytes.
227 
228 
229 
230 			MSDU length in case of direct descriptor.
231 
232 			Length of link extension descriptor in case of Link
233 			extension descriptor. This is used to know the size of
234 			Metadata.
235 
236 			<legal all>
237 
238 ipv4_checksum_en
239 
240 			OLE related control
241 
242 			Enable IPv4 checksum replacement
243 
244 udp_over_ipv4_checksum_en
245 
246 			OLE related control
247 
248 			Enable UDP over IPv4 checksum replacement.  UDP checksum
249 			over IPv4 is optional for TCP/IP stacks.
250 
251 udp_over_ipv6_checksum_en
252 
253 			OLE related control
254 
255 			Enable UDP over IPv6 checksum replacement.  UDP checksum
256 			over IPv6 is mandatory for TCP/IP stacks.
257 
258 tcp_over_ipv4_checksum_en
259 
260 			OLE related control
261 
262 			Enable TCP checksum over IPv4 replacement
263 
264 tcp_over_ipv6_checksum_en
265 
266 			OLE related control
267 
268 			Enable TCP checksum over IPv6 replacement
269 
270 to_fw
271 
272 			Forward packet to FW along with classification result.
273 			The packet will not be forward to TQM when this bit is set
274 
275 			1'b0: Use classification result to forward the packet.
276 
277 			1'b1: Override classification result and forward packet
278 			only to FW.
279 
280 dscp_to_tid_priority_table_id
281 
282 			The DSCP to tid conversion table to be used for this
283 			frame
284 
285 			<legal all>
286 
287 packet_offset
288 
289 			Packet offset from Metadata in case of direct buffer
290 			descriptor. This field is valid when Buf_or_ext_desc_type is
291 			reset(= 0).
292 
293 			<legal all>
294 
295 buffer_timestamp
296 
297 			Field only valid when 'Buffer_timestamp_valid ' is set.
298 
299 
300 
301 			Frame system entrance timestamp. The timestamp is
302 			related to the global system timer
303 
304 
305 
306 			Generally the first module (SW, TCL or TQM). that sees
307 			this frame and this timestamp field is not valid, shall fill
308 			in this field.
309 
310 
311 
312 			Timestamp in units of 1024 us
313 
314 buffer_timestamp_valid
315 
316 			When set, the Buffer_timestamp field contains valid
317 			info.
318 
319 mesh_enable
320 
321 			If set to 1:
322 
323 			* For raw WiFi frames, this indicates transmission to a
324 			mesh STA, enabling the interpretation of the 'Mesh Control
325 			Present' bit (bit 8) of QoS Control (otherwise this bit is
326 			ignored),
327 
328 			* For native WiFi frames, this indicates that a 'Mesh
329 			Control' field is present between the header and the LLC.
330 
331 hlos_tid_overwrite
332 
333 			When set, TCL shall ignore the IP DSCP and VLAN PCP
334 			fields and use HLOS_TID as the final TID. Otherwise TCL
335 			shall consider the DSCP and PCP fields as well as HLOS_TID
336 			and choose a final TID based on the configured priority
337 
338 			<legal all>
339 
340 hlos_tid
341 
342 			HLOS MSDU priority
343 
344 
345 
346 			Field is used when HLOS_TID_overwrite is set.
347 
348 
349 
350 			Field is also used when HLOS_TID_overwrite is not set
351 			and DSCP/PCP is not available in the packet
352 
353 			<legal all>
354 
355 reserved_4
356 
357 			<legal 0>
358 
359 reserved_5
360 
361 			<legal 0>
362 
363 reserved_6a
364 
365 			<legal 0>
366 
367 ring_id
368 
369 			The buffer pointer ring ID.
370 
371 			0 refers to the IDLE ring
372 
373 			1 - N refers to other rings
374 
375 
376 
377 			Helps with debugging when dumping ring contents.
378 
379 			<legal all>
380 
381 looping_count
382 
383 			A count value that indicates the number of times the
384 			producer of entries into the Ring has looped around the
385 			ring.
386 
387 			At initialization time, this value is set to 0. On the
388 			first loop, this value is set to 1. After the max value is
389 			reached allowed by the number of bits for this field, the
390 			count value continues with 0 again.
391 
392 
393 
394 			In case SW is the consumer of the ring entries, it can
395 			use this field to figure out up to where the producer of
396 			entries has created new entries. This eliminates the need to
397 			check where the head pointer' of the ring is located once
398 			the SW starts processing an interrupt indicating that new
399 			entries have been put into this ring...
400 
401 
402 
403 			Also note that SW if it wants only needs to look at the
404 			LSB bit of this count value.
405 
406 			<legal all>
407 */
408 
409 #define TCL_DATA_CMD_0_BUFFER_ADDR_INFO_BUF_ADDR_INFO_OFFSET         0x00000000
410 #define TCL_DATA_CMD_0_BUFFER_ADDR_INFO_BUF_ADDR_INFO_LSB            28
411 #define TCL_DATA_CMD_0_BUFFER_ADDR_INFO_BUF_ADDR_INFO_MASK           0xffffffff
412 #define TCL_DATA_CMD_1_BUFFER_ADDR_INFO_BUF_ADDR_INFO_OFFSET         0x00000004
413 #define TCL_DATA_CMD_1_BUFFER_ADDR_INFO_BUF_ADDR_INFO_LSB            28
414 #define TCL_DATA_CMD_1_BUFFER_ADDR_INFO_BUF_ADDR_INFO_MASK           0xffffffff
415 
416 /* Description		TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE
417 
418 			<enum 0 MSDU_buffer> The address points to an MSDU
419 			buffer.
420 
421 			<enum 1 extension_descriptor> The address points to an
422 			MSDU link extension descriptor
423 
424 			< legal all>
425 */
426 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_OFFSET                   0x00000008
427 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_LSB                      0
428 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_MASK                     0x00000001
429 
430 /* Description		TCL_DATA_CMD_2_EPD
431 
432 			When this bit is set then input packet is an EPD type
433 
434 			<legal all>
435 */
436 #define TCL_DATA_CMD_2_EPD_OFFSET                                    0x00000008
437 #define TCL_DATA_CMD_2_EPD_LSB                                       1
438 #define TCL_DATA_CMD_2_EPD_MASK                                      0x00000002
439 
440 /* Description		TCL_DATA_CMD_2_ENCAP_TYPE
441 
442 			Indicates the encapsulation that HW will perform:
443 
444 			<enum 0 RAW> No encapsulation
445 
446 			<enum 1 Native_WiFi>
447 
448 			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
449 			SNAP/LLC)
450 
451 			<enum 3 802_3> DO NOT USE. Indicate Ethernet
452 
453 
454 
455 			Used by the OLE during encapsulation.
456 
457 			<legal all>
458 */
459 #define TCL_DATA_CMD_2_ENCAP_TYPE_OFFSET                             0x00000008
460 #define TCL_DATA_CMD_2_ENCAP_TYPE_LSB                                2
461 #define TCL_DATA_CMD_2_ENCAP_TYPE_MASK                               0x0000000c
462 
463 /* Description		TCL_DATA_CMD_2_ENCRYPT_TYPE
464 
465 			Field only valid for encap_type: RAW
466 
467 
468 
469 			Indicates type of decrypt cipher used (as defined in the
470 			peer entry)
471 
472 			<enum 0 wep_40> WEP 40-bit
473 
474 			<enum 1 wep_104> WEP 104-bit
475 
476 			<enum 2 tkip_no_mic> TKIP without MIC
477 
478 			<enum 3 wep_128> WEP 128-bit
479 
480 			<enum 4 tkip_with_mic> TKIP with MIC
481 
482 			<enum 5 wapi> WAPI
483 
484 			<enum 6 aes_ccmp_128> AES CCMP 128
485 
486 			<enum 7 no_cipher> No crypto
487 
488 			<enum 8 aes_ccmp_256> AES CCMP 256
489 
490 			<enum 9 aes_gcmp_128> AES CCMP 128
491 
492 			<enum 10 aes_gcmp_256> AES CCMP 256
493 
494 			<enum 11 wapi_gcm_sm4> WAPI GCM SM4
495 
496 			<legal 0-11>
497 */
498 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_OFFSET                           0x00000008
499 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_LSB                              4
500 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_MASK                             0x000000f0
501 
502 /* Description		TCL_DATA_CMD_2_SRC_BUFFER_SWAP
503 
504 			Treats source memory (packet buffer) organization as
505 			big-endian. The packets are read and byte swapped.
506 
507 			1'b0: Source memory is little endian
508 
509 			1'b1: Source memory is big endian
510 
511 			<legal all>
512 */
513 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_OFFSET                        0x00000008
514 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_LSB                           8
515 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_MASK                          0x00000100
516 
517 /* Description		TCL_DATA_CMD_2_LINK_META_SWAP
518 
519 			Treats link descriptor and Metadata as big-endian. The
520 			link descriptor/Metadata is read and byte swapped.
521 
522 			1'b0: Memory is little endian
523 
524 			1'b1: Memory is big endian
525 
526 			<legal all>
527 */
528 #define TCL_DATA_CMD_2_LINK_META_SWAP_OFFSET                         0x00000008
529 #define TCL_DATA_CMD_2_LINK_META_SWAP_LSB                            9
530 #define TCL_DATA_CMD_2_LINK_META_SWAP_MASK                           0x00000200
531 
532 /* Description		TCL_DATA_CMD_2_RESERVED
533 
534 			<legal 0>
535 */
536 #define TCL_DATA_CMD_2_RESERVED_OFFSET                               0x00000008
537 #define TCL_DATA_CMD_2_RESERVED_LSB                                  10
538 #define TCL_DATA_CMD_2_RESERVED_MASK                                 0x00003c00
539 
540 /* Description		TCL_DATA_CMD_2_ADDRX_EN
541 
542 			Address X search enable in ASE
543 
544 			1'b0: Search disable
545 
546 			1'b1: Search Enable
547 
548 			<legal all>
549 */
550 #define TCL_DATA_CMD_2_ADDRX_EN_OFFSET                               0x00000008
551 #define TCL_DATA_CMD_2_ADDRX_EN_LSB                                  14
552 #define TCL_DATA_CMD_2_ADDRX_EN_MASK                                 0x00004000
553 
554 /* Description		TCL_DATA_CMD_2_ADDRY_EN
555 
556 			Address Y search enable in ASE
557 
558 			1'b0: Search disable
559 
560 			1'b1: Search Enable
561 
562 			<legal all>
563 */
564 #define TCL_DATA_CMD_2_ADDRY_EN_OFFSET                               0x00000008
565 #define TCL_DATA_CMD_2_ADDRY_EN_LSB                                  15
566 #define TCL_DATA_CMD_2_ADDRY_EN_MASK                                 0x00008000
567 
568 /* Description		TCL_DATA_CMD_2_TCL_CMD_NUMBER
569 
570 			This number can be used by SW to track, identify and
571 			link the created commands with the command statuses
572 
573 
574 
575 			Is set to the value 'TCL_CMD_Number' of the related
576 			TCL_DATA command
577 
578 			<legal all>
579 */
580 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_OFFSET                         0x00000008
581 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_LSB                            16
582 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_MASK                           0xffff0000
583 
584 /* Description		TCL_DATA_CMD_3_DATA_LENGTH
585 
586 			Valid Data length in bytes.
587 
588 
589 
590 			MSDU length in case of direct descriptor.
591 
592 			Length of link extension descriptor in case of Link
593 			extension descriptor. This is used to know the size of
594 			Metadata.
595 
596 			<legal all>
597 */
598 #define TCL_DATA_CMD_3_DATA_LENGTH_OFFSET                            0x0000000c
599 #define TCL_DATA_CMD_3_DATA_LENGTH_LSB                               0
600 #define TCL_DATA_CMD_3_DATA_LENGTH_MASK                              0x0000ffff
601 
602 /* Description		TCL_DATA_CMD_3_IPV4_CHECKSUM_EN
603 
604 			OLE related control
605 
606 			Enable IPv4 checksum replacement
607 */
608 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_OFFSET                       0x0000000c
609 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_LSB                          16
610 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_MASK                         0x00010000
611 
612 /* Description		TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN
613 
614 			OLE related control
615 
616 			Enable UDP over IPv4 checksum replacement.  UDP checksum
617 			over IPv4 is optional for TCP/IP stacks.
618 */
619 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
620 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_LSB                 17
621 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_MASK                0x00020000
622 
623 /* Description		TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN
624 
625 			OLE related control
626 
627 			Enable UDP over IPv6 checksum replacement.  UDP checksum
628 			over IPv6 is mandatory for TCP/IP stacks.
629 */
630 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
631 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_LSB                 18
632 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_MASK                0x00040000
633 
634 /* Description		TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN
635 
636 			OLE related control
637 
638 			Enable TCP checksum over IPv4 replacement
639 */
640 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
641 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_LSB                 19
642 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_MASK                0x00080000
643 
644 /* Description		TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN
645 
646 			OLE related control
647 
648 			Enable TCP checksum over IPv6 replacement
649 */
650 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
651 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_LSB                 20
652 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_MASK                0x00100000
653 
654 /* Description		TCL_DATA_CMD_3_TO_FW
655 
656 			Forward packet to FW along with classification result.
657 			The packet will not be forward to TQM when this bit is set
658 
659 			1'b0: Use classification result to forward the packet.
660 
661 			1'b1: Override classification result and forward packet
662 			only to FW.
663 */
664 #define TCL_DATA_CMD_3_TO_FW_OFFSET                                  0x0000000c
665 #define TCL_DATA_CMD_3_TO_FW_LSB                                     21
666 #define TCL_DATA_CMD_3_TO_FW_MASK                                    0x00200000
667 
668 /* Description		TCL_DATA_CMD_3_DSCP_TO_TID_PRIORITY_TABLE_ID
669 
670 			The DSCP to tid conversion table to be used for this
671 			frame
672 
673 			<legal all>
674 */
675 #define TCL_DATA_CMD_3_DSCP_TO_TID_PRIORITY_TABLE_ID_OFFSET          0x0000000c
676 #define TCL_DATA_CMD_3_DSCP_TO_TID_PRIORITY_TABLE_ID_LSB             22
677 #define TCL_DATA_CMD_3_DSCP_TO_TID_PRIORITY_TABLE_ID_MASK            0x00400000
678 
679 /* Description		TCL_DATA_CMD_3_PACKET_OFFSET
680 
681 			Packet offset from Metadata in case of direct buffer
682 			descriptor. This field is valid when Buf_or_ext_desc_type is
683 			reset(= 0).
684 
685 			<legal all>
686 */
687 #define TCL_DATA_CMD_3_PACKET_OFFSET_OFFSET                          0x0000000c
688 #define TCL_DATA_CMD_3_PACKET_OFFSET_LSB                             23
689 #define TCL_DATA_CMD_3_PACKET_OFFSET_MASK                            0xff800000
690 
691 /* Description		TCL_DATA_CMD_4_BUFFER_TIMESTAMP
692 
693 			Field only valid when 'Buffer_timestamp_valid ' is set.
694 
695 
696 
697 			Frame system entrance timestamp. The timestamp is
698 			related to the global system timer
699 
700 
701 
702 			Generally the first module (SW, TCL or TQM). that sees
703 			this frame and this timestamp field is not valid, shall fill
704 			in this field.
705 
706 
707 
708 			Timestamp in units of 1024 us
709 */
710 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_OFFSET                       0x00000010
711 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_LSB                          0
712 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_MASK                         0x0007ffff
713 
714 /* Description		TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID
715 
716 			When set, the Buffer_timestamp field contains valid
717 			info.
718 */
719 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_OFFSET                 0x00000010
720 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_LSB                    19
721 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_MASK                   0x00080000
722 
723 /* Description		TCL_DATA_CMD_4_MESH_ENABLE
724 
725 			If set to 1:
726 
727 			* For raw WiFi frames, this indicates transmission to a
728 			mesh STA, enabling the interpretation of the 'Mesh Control
729 			Present' bit (bit 8) of QoS Control (otherwise this bit is
730 			ignored),
731 
732 			* For native WiFi frames, this indicates that a 'Mesh
733 			Control' field is present between the header and the LLC.
734 */
735 #define TCL_DATA_CMD_4_MESH_ENABLE_OFFSET                            0x00000010
736 #define TCL_DATA_CMD_4_MESH_ENABLE_LSB                               20
737 #define TCL_DATA_CMD_4_MESH_ENABLE_MASK                              0x00100000
738 
739 /* Description		TCL_DATA_CMD_4_HLOS_TID_OVERWRITE
740 
741 			When set, TCL shall ignore the IP DSCP and VLAN PCP
742 			fields and use HLOS_TID as the final TID. Otherwise TCL
743 			shall consider the DSCP and PCP fields as well as HLOS_TID
744 			and choose a final TID based on the configured priority
745 
746 			<legal all>
747 */
748 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_OFFSET                     0x00000010
749 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_LSB                        21
750 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_MASK                       0x00200000
751 
752 /* Description		TCL_DATA_CMD_4_HLOS_TID
753 
754 			HLOS MSDU priority
755 
756 
757 
758 			Field is used when HLOS_TID_overwrite is set.
759 
760 
761 
762 			Field is also used when HLOS_TID_overwrite is not set
763 			and DSCP/PCP is not available in the packet
764 
765 			<legal all>
766 */
767 #define TCL_DATA_CMD_4_HLOS_TID_OFFSET                               0x00000010
768 #define TCL_DATA_CMD_4_HLOS_TID_LSB                                  22
769 #define TCL_DATA_CMD_4_HLOS_TID_MASK                                 0x03c00000
770 
771 /* Description		TCL_DATA_CMD_4_RESERVED_4
772 
773 			<legal 0>
774 */
775 #define TCL_DATA_CMD_4_RESERVED_4_OFFSET                             0x00000010
776 #define TCL_DATA_CMD_4_RESERVED_4_LSB                                26
777 #define TCL_DATA_CMD_4_RESERVED_4_MASK                               0xfc000000
778 
779 /* Description		TCL_DATA_CMD_5_RESERVED_5
780 
781 			<legal 0>
782 */
783 #define TCL_DATA_CMD_5_RESERVED_5_OFFSET                             0x00000014
784 #define TCL_DATA_CMD_5_RESERVED_5_LSB                                0
785 #define TCL_DATA_CMD_5_RESERVED_5_MASK                               0xffffffff
786 
787 /* Description		TCL_DATA_CMD_6_RESERVED_6A
788 
789 			<legal 0>
790 */
791 #define TCL_DATA_CMD_6_RESERVED_6A_OFFSET                            0x00000018
792 #define TCL_DATA_CMD_6_RESERVED_6A_LSB                               0
793 #define TCL_DATA_CMD_6_RESERVED_6A_MASK                              0x000fffff
794 
795 /* Description		TCL_DATA_CMD_6_RING_ID
796 
797 			The buffer pointer ring ID.
798 
799 			0 refers to the IDLE ring
800 
801 			1 - N refers to other rings
802 
803 
804 
805 			Helps with debugging when dumping ring contents.
806 
807 			<legal all>
808 */
809 #define TCL_DATA_CMD_6_RING_ID_OFFSET                                0x00000018
810 #define TCL_DATA_CMD_6_RING_ID_LSB                                   20
811 #define TCL_DATA_CMD_6_RING_ID_MASK                                  0x0ff00000
812 
813 /* Description		TCL_DATA_CMD_6_LOOPING_COUNT
814 
815 			A count value that indicates the number of times the
816 			producer of entries into the Ring has looped around the
817 			ring.
818 
819 			At initialization time, this value is set to 0. On the
820 			first loop, this value is set to 1. After the max value is
821 			reached allowed by the number of bits for this field, the
822 			count value continues with 0 again.
823 
824 
825 
826 			In case SW is the consumer of the ring entries, it can
827 			use this field to figure out up to where the producer of
828 			entries has created new entries. This eliminates the need to
829 			check where the head pointer' of the ring is located once
830 			the SW starts processing an interrupt indicating that new
831 			entries have been put into this ring...
832 
833 
834 
835 			Also note that SW if it wants only needs to look at the
836 			LSB bit of this count value.
837 
838 			<legal all>
839 */
840 #define TCL_DATA_CMD_6_LOOPING_COUNT_OFFSET                          0x00000018
841 #define TCL_DATA_CMD_6_LOOPING_COUNT_LSB                             28
842 #define TCL_DATA_CMD_6_LOOPING_COUNT_MASK                            0xf0000000
843 
844 
845 #endif // _TCL_DATA_CMD_H_
846