1 /*
2  * Copyright (c) 2019 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], tqm_no_drop[10], reserved_2a[11], search_type[13:12], 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], reserved_3a[22], packet_offset[31:23]
37 //	4	buffer_timestamp[18:0], buffer_timestamp_valid[19], reserved_4a[20], hlos_tid_overwrite[21], hlos_tid[25:22], lmac_id[27:26], reserved_4b[31:28]
38 //	5	dscp_tid_table_num[5:0], search_index[25:6], cache_set_num[29:26], mesh_enable[31:30]
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                       tqm_no_drop                     :  1, //[10]
54                       reserved_2a                     :  1, //[11]
55                       search_type                     :  2, //[13:12]
56                       addrx_en                        :  1, //[14]
57                       addry_en                        :  1, //[15]
58                       tcl_cmd_number                  : 16; //[31:16]
59              uint32_t data_length                     : 16, //[15:0]
60                       ipv4_checksum_en                :  1, //[16]
61                       udp_over_ipv4_checksum_en       :  1, //[17]
62                       udp_over_ipv6_checksum_en       :  1, //[18]
63                       tcp_over_ipv4_checksum_en       :  1, //[19]
64                       tcp_over_ipv6_checksum_en       :  1, //[20]
65                       to_fw                           :  1, //[21]
66                       reserved_3a                     :  1, //[22]
67                       packet_offset                   :  9; //[31:23]
68              uint32_t buffer_timestamp                : 19, //[18:0]
69                       buffer_timestamp_valid          :  1, //[19]
70                       reserved_4a                     :  1, //[20]
71                       hlos_tid_overwrite              :  1, //[21]
72                       hlos_tid                        :  4, //[25:22]
73                       lmac_id                         :  2, //[27:26]
74                       reserved_4b                     :  4; //[31:28]
75              uint32_t dscp_tid_table_num              :  6, //[5:0]
76                       search_index                    : 20, //[25:6]
77                       cache_set_num                   :  4, //[29:26]
78                       mesh_enable                     :  2; //[31:30]
79              uint32_t reserved_6a                     : 20, //[19:0]
80                       ring_id                         :  8, //[27:20]
81                       looping_count                   :  4; //[31:28]
82 };
83 
84 /*
85 
86 struct buffer_addr_info buf_addr_info
87 
88 			Details of the physical address for a single buffer
89 
90 			It also contains return ownership info as well as some
91 			meta data for SW related to this buffer.
92 
93 
94 
95 			In case of Buf_or_ext_desc_type indicating
96 			'MSDU_buffer', this address indicates the start of the meta
97 			data that is preceding the actual packet data.
98 
99 			The start of the actual packet data is provided by
100 			field: Packet_offset
101 
102 buf_or_ext_desc_type
103 
104 			<enum 0 MSDU_buffer> The address points to an MSDU
105 			buffer.
106 
107 			<enum 1 extension_descriptor> The address points to an
108 			MSDU link extension descriptor
109 
110 			< legal all>
111 
112 epd
113 
114 			When this bit is set then input packet is an EPD type
115 
116 			<legal all>
117 
118 encap_type
119 
120 			Indicates the encapsulation that HW will perform:
121 
122 			<enum 0 RAW> No encapsulation
123 
124 			<enum 1 Native_WiFi>
125 
126 			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
127 			SNAP/LLC)
128 
129 			<enum 3 802_3> DO NOT USE. Indicate Ethernet
130 
131 
132 
133 			Used by the OLE during encapsulation.
134 
135 			<legal all>
136 
137 encrypt_type
138 
139 			Field only valid for encap_type: RAW
140 
141 
142 
143 			Indicates type of decrypt cipher used (as defined in the
144 			peer entry)
145 
146 			<enum 0 wep_40> WEP 40-bit
147 
148 			<enum 1 wep_104> WEP 104-bit
149 
150 			<enum 2 tkip_no_mic> TKIP without MIC
151 
152 			<enum 3 wep_128> WEP 128-bit
153 
154 			<enum 4 tkip_with_mic> TKIP with MIC
155 
156 			<enum 5 wapi> WAPI
157 
158 			<enum 6 aes_ccmp_128> AES CCMP 128
159 
160 			<enum 7 no_cipher> No crypto
161 
162 			<enum 8 aes_ccmp_256> AES CCMP 256
163 
164 			<enum 9 aes_gcmp_128> AES CCMP 128
165 
166 			<enum 10 aes_gcmp_256> AES CCMP 256
167 
168 			<enum 11 wapi_gcm_sm4> WAPI GCM SM4
169 
170 
171 
172 			<enum 12 wep_varied_width> DO not use... Only for higher
173 			layer modules..
174 
175 			<legal 0-12>
176 
177 src_buffer_swap
178 
179 			Treats source memory (packet buffer) organization as
180 			big-endian. The packets are read and byte swapped.
181 
182 			1'b0: Source memory is little endian
183 
184 			1'b1: Source memory is big endian
185 
186 			<legal all>
187 
188 link_meta_swap
189 
190 			Treats link descriptor and Metadata as big-endian. The
191 			link descriptor/Metadata is read and byte swapped.
192 
193 			1'b0: Memory is little endian
194 
195 			1'b1: Memory is big endian
196 
197 			<legal all>
198 
199 tqm_no_drop
200 
201 			This bit is used to stop TQM from dropping MSDUs while
202 			adding them to MSDU flows1'b1: Do not drop MSDU when any of
203 			the threshold value is met while adding MSDU in a flow1'b1:
204 			Drop MSDU when any of the threshold value is met while
205 			adding MSDU in a flow
206 
207 			<legal all>
208 
209 reserved_2a
210 
211 			<legal 0>
212 
213 search_type
214 
215 			Search type select
216 
217 
218 
219 			<enum 0 Normal_search> Address and flow search will use
220 			packet contents
221 
222 			<enum 1 Index_based_address_search> Address search will
223 
224 			<enum 2 Index_based_flow_search> Flow search will use
225 			'search_index', and address search will use packet contents
226 
227 			<legal 0-2>
228 
229 addrx_en
230 
231 			Address X search enable in ASE
232 
233 			1'b0: Search disable
234 
235 			1'b1: Search Enable
236 
237 			<legal all>
238 
239 addry_en
240 
241 			Address Y search enable in ASE
242 
243 			1'b0: Search disable
244 
245 			1'b1: Search Enable
246 
247 			<legal all>
248 
249 tcl_cmd_number
250 
251 			This number can be used by SW to track, identify and
252 			link the created commands with the command statuses
253 
254 
255 
256 			Is set to the value 'TCL_CMD_Number' of the related
257 			TCL_DATA command
258 
259 			<legal all>
260 
261 data_length
262 
263 			Valid Data length in bytes.
264 
265 
266 
267 			MSDU length in case of direct descriptor.
268 
269 			Length of link extension descriptor in case of Link
270 			extension descriptor. This is used to know the size of
271 			Metadata.
272 
273 			<legal all>
274 
275 ipv4_checksum_en
276 
277 			OLE related control
278 
279 			Enable IPv4 checksum replacement
280 
281 udp_over_ipv4_checksum_en
282 
283 			OLE related control
284 
285 			Enable UDP over IPv4 checksum replacement.  UDP checksum
286 			over IPv4 is optional for TCP/IP stacks.
287 
288 udp_over_ipv6_checksum_en
289 
290 			OLE related control
291 
292 			Enable UDP over IPv6 checksum replacement.  UDP checksum
293 			over IPv6 is mandatory for TCP/IP stacks.
294 
295 tcp_over_ipv4_checksum_en
296 
297 			OLE related control
298 
299 			Enable TCP checksum over IPv4 replacement
300 
301 tcp_over_ipv6_checksum_en
302 
303 			OLE related control
304 
305 			Enable TCP checksum over IPv6 replacement
306 
307 to_fw
308 
309 			Forward packet to FW along with classification result.
310 			The packet will not be forward to TQM when this bit is set
311 
312 
313 
314 			1'b0: Use classification result to forward the packet.
315 
316 			1'b1: Override classification result and forward packet
317 			only to FW.
318 
319 			<legal all>
320 
321 reserved_3a
322 
323 			<legal 0>
324 
325 packet_offset
326 
327 			Packet offset from Metadata in case of direct buffer
328 			descriptor. This field is valid when Buf_or_ext_desc_type is
329 			reset(= 0).
330 
331 			<legal all>
332 
333 buffer_timestamp
334 
335 			Field only valid when 'Buffer_timestamp_valid ' is set.
336 
337 
338 
339 			Frame system entrance timestamp. The timestamp is
340 			related to the global system timer
341 
342 
343 
344 			Generally the first module (SW, TCL or TQM). that sees
345 			this frame and this timestamp field is not valid, shall fill
346 			in this field.
347 
348 
349 
350 			Timestamp in units of 1024 us
351 
352 buffer_timestamp_valid
353 
354 			When set, the Buffer_timestamp field contains valid
355 			info.
356 
357 reserved_4a
358 
359 			<legal 0>
360 
361 hlos_tid_overwrite
362 
363 			When set, TCL shall ignore the IP DSCP and VLAN PCP
364 			fields and use HLOS_TID as the final TID. Otherwise TCL
365 			shall consider the DSCP and PCP fields as well as HLOS_TID
366 			and choose a final TID based on the configured priority
367 
368 			<legal all>
369 
370 hlos_tid
371 
372 			HLOS MSDU priority
373 
374 
375 
376 			Field is used when HLOS_TID_overwrite is set.
377 
378 
379 
380 			Field is also used when HLOS_TID_overwrite is not set
381 			and DSCP/PCP is not available in the packet
382 
383 			<legal all>
384 
385 lmac_id
386 
387 			TCL uses this LMAC_ID in address search, i.e, while
388 			finding matching entry for the packet in AST corresponding
389 			to given LMAC_ID
390 
391 			If LMAC ID is all 1s (=> value 3), it indicates wildcard
392 			match for any MAC
393 
394 			<legal 0-3>
395 
396 reserved_4b
397 
398 			<legal 0>
399 
400 dscp_tid_table_num
401 
402 			DSCP to TID mapping table number that need to be used
403 			for the MSDU, should be specified using this field
404 
405 			<legal all>
406 
407 search_index
408 
409 			The index that will be used for index based address or
410 			flow search. The field is valid when 'search_type' is  1 or
411 			2.
412 
413 			<legal all>
414 
415 cache_set_num
416 
417 			Cache set number that should be used to cache the index
418 			based search results, for address and flow search. This
419 			value should be equal to LSB four bits of the hash value of
420 			match data, in case of search index points to an entry which
421 			may be used in content based search also. The value can be
422 			anything when the entry pointed by search index will not be
423 			used for content based search.
424 
425 			<legal all>
426 
427 mesh_enable
428 
429 			If set to a non-zero value:
430 
431 			* For raw WiFi frames, this indicates transmission to a
432 			mesh STA, enabling the interpretation of the 'Mesh Control
433 			Present' bit (bit 8) of QoS Control (otherwise this bit is
434 			ignored). The interpretation of the A-MSDU 'Length' field is
435 			decided by the e-numerations below.
436 
437 			* For native WiFi frames, this indicates that a 'Mesh
438 			Control' field is present between the header and the LLC.
439 			The three non-zero values are interchangeable.
440 
441 
442 
443 			<enum 0 MESH_DISABLE>
444 
445 			<enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
446 			includes the length of Mesh Control.
447 
448 			<enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
449 			excludes the length of Mesh Control.
450 
451 			<enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
452 			and excludes the length of Mesh Control. This is
453 			802.11s-compliant.
454 
455 			<legal 0-3>
456 
457 reserved_6a
458 
459 			<legal 0>
460 
461 ring_id
462 
463 			The buffer pointer ring ID.
464 
465 			0 refers to the IDLE ring
466 
467 			1 - N refers to other rings
468 
469 
470 
471 			Helps with debugging when dumping ring contents.
472 
473 			<legal all>
474 
475 looping_count
476 
477 			A count value that indicates the number of times the
478 			producer of entries into the Ring has looped around the
479 			ring.
480 
481 			At initialization time, this value is set to 0. On the
482 			first loop, this value is set to 1. After the max value is
483 			reached allowed by the number of bits for this field, the
484 			count value continues with 0 again.
485 
486 
487 
488 			In case SW is the consumer of the ring entries, it can
489 			use this field to figure out up to where the producer of
490 			entries has created new entries. This eliminates the need to
491 			check where the head pointer' of the ring is located once
492 			the SW starts processing an interrupt indicating that new
493 			entries have been put into this ring...
494 
495 
496 
497 			Also note that SW if it wants only needs to look at the
498 			LSB bit of this count value.
499 
500 			<legal all>
501 */
502 
503 
504  /* EXTERNAL REFERENCE : struct buffer_addr_info buf_addr_info */
505 
506 
507 /* Description		TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0
508 
509 			Address (lower 32 bits) of the MSDU buffer OR
510 			MSDU_EXTENSION descriptor OR Link Descriptor
511 
512 
513 
514 			In case of 'NULL' pointer, this field is set to 0
515 
516 			<legal all>
517 */
518 #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET         0x00000000
519 #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_LSB            0
520 #define TCL_DATA_CMD_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MASK           0xffffffff
521 
522 /* Description		TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32
523 
524 			Address (upper 8 bits) of the MSDU buffer OR
525 			MSDU_EXTENSION descriptor OR Link Descriptor
526 
527 
528 
529 			In case of 'NULL' pointer, this field is set to 0
530 
531 			<legal all>
532 */
533 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET        0x00000004
534 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_LSB           0
535 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MASK          0x000000ff
536 
537 /* Description		TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER
538 
539 			Consumer: WBM
540 
541 			Producer: SW/FW
542 
543 
544 
545 			In case of 'NULL' pointer, this field is set to 0
546 
547 
548 
549 			Indicates to which buffer manager the buffer OR
550 			MSDU_EXTENSION descriptor OR link descriptor that is being
551 			pointed to shall be returned after the frame has been
552 			processed. It is used by WBM for routing purposes.
553 
554 
555 
556 			<enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
557 			to the WMB buffer idle list
558 
559 			<enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
560 			returned to the WMB idle link descriptor idle list
561 
562 			<enum 2 FW_BM> This buffer shall be returned to the FW
563 
564 			<enum 3 SW0_BM> This buffer shall be returned to the SW,
565 			ring 0
566 
567 			<enum 4 SW1_BM> This buffer shall be returned to the SW,
568 			ring 1
569 
570 			<enum 5 SW2_BM> This buffer shall be returned to the SW,
571 			ring 2
572 
573 			<enum 6 SW3_BM> This buffer shall be returned to the SW,
574 			ring 3
575 
576 			<enum 7 SW4_BM> This buffer shall be returned to the SW,
577 			ring 4
578 
579 
580 
581 			<legal all>
582 */
583 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET    0x00000004
584 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB       8
585 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK      0x00000700
586 
587 /* Description		TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE
588 
589 			Cookie field exclusively used by SW.
590 
591 
592 
593 			In case of 'NULL' pointer, this field is set to 0
594 
595 
596 
597 			HW ignores the contents, accept that it passes the
598 			programmed value on to other descriptors together with the
599 			physical address
600 
601 
602 
603 			Field can be used by SW to for example associate the
604 			buffers physical address with the virtual address
605 
606 			The bit definitions as used by SW are within SW HLD
607 			specification
608 
609 
610 
611 			NOTE:
612 
613 			The three most significant bits can have a special
614 			meaning in case this struct is embedded in a TX_MPDU_DETAILS
615 			STRUCT, and field transmit_bw_restriction is set
616 
617 
618 
619 			In case of NON punctured transmission:
620 
621 			Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
622 
623 			Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
624 
625 			Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
626 
627 			Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
628 
629 
630 
631 			In case of punctured transmission:
632 
633 			Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
634 
635 			Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
636 
637 			Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
638 
639 			Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
640 
641 			Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
642 
643 			Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
644 
645 			Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
646 
647 			Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
648 
649 
650 
651 			Note: a punctured transmission is indicated by the
652 			presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
653 			TLV
654 
655 
656 
657 			<legal all>
658 */
659 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET         0x00000004
660 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_LSB            11
661 #define TCL_DATA_CMD_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MASK           0xfffff800
662 
663 /* Description		TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE
664 
665 			<enum 0 MSDU_buffer> The address points to an MSDU
666 			buffer.
667 
668 			<enum 1 extension_descriptor> The address points to an
669 			MSDU link extension descriptor
670 
671 			< legal all>
672 */
673 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_OFFSET                   0x00000008
674 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_LSB                      0
675 #define TCL_DATA_CMD_2_BUF_OR_EXT_DESC_TYPE_MASK                     0x00000001
676 
677 /* Description		TCL_DATA_CMD_2_EPD
678 
679 			When this bit is set then input packet is an EPD type
680 
681 			<legal all>
682 */
683 #define TCL_DATA_CMD_2_EPD_OFFSET                                    0x00000008
684 #define TCL_DATA_CMD_2_EPD_LSB                                       1
685 #define TCL_DATA_CMD_2_EPD_MASK                                      0x00000002
686 
687 /* Description		TCL_DATA_CMD_2_ENCAP_TYPE
688 
689 			Indicates the encapsulation that HW will perform:
690 
691 			<enum 0 RAW> No encapsulation
692 
693 			<enum 1 Native_WiFi>
694 
695 			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
696 			SNAP/LLC)
697 
698 			<enum 3 802_3> DO NOT USE. Indicate Ethernet
699 
700 
701 
702 			Used by the OLE during encapsulation.
703 
704 			<legal all>
705 */
706 #define TCL_DATA_CMD_2_ENCAP_TYPE_OFFSET                             0x00000008
707 #define TCL_DATA_CMD_2_ENCAP_TYPE_LSB                                2
708 #define TCL_DATA_CMD_2_ENCAP_TYPE_MASK                               0x0000000c
709 
710 /* Description		TCL_DATA_CMD_2_ENCRYPT_TYPE
711 
712 			Field only valid for encap_type: RAW
713 
714 
715 
716 			Indicates type of decrypt cipher used (as defined in the
717 			peer entry)
718 
719 			<enum 0 wep_40> WEP 40-bit
720 
721 			<enum 1 wep_104> WEP 104-bit
722 
723 			<enum 2 tkip_no_mic> TKIP without MIC
724 
725 			<enum 3 wep_128> WEP 128-bit
726 
727 			<enum 4 tkip_with_mic> TKIP with MIC
728 
729 			<enum 5 wapi> WAPI
730 
731 			<enum 6 aes_ccmp_128> AES CCMP 128
732 
733 			<enum 7 no_cipher> No crypto
734 
735 			<enum 8 aes_ccmp_256> AES CCMP 256
736 
737 			<enum 9 aes_gcmp_128> AES CCMP 128
738 
739 			<enum 10 aes_gcmp_256> AES CCMP 256
740 
741 			<enum 11 wapi_gcm_sm4> WAPI GCM SM4
742 
743 
744 
745 			<enum 12 wep_varied_width> DO not use... Only for higher
746 			layer modules..
747 
748 			<legal 0-12>
749 */
750 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_OFFSET                           0x00000008
751 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_LSB                              4
752 #define TCL_DATA_CMD_2_ENCRYPT_TYPE_MASK                             0x000000f0
753 
754 /* Description		TCL_DATA_CMD_2_SRC_BUFFER_SWAP
755 
756 			Treats source memory (packet buffer) organization as
757 			big-endian. The packets are read and byte swapped.
758 
759 			1'b0: Source memory is little endian
760 
761 			1'b1: Source memory is big endian
762 
763 			<legal all>
764 */
765 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_OFFSET                        0x00000008
766 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_LSB                           8
767 #define TCL_DATA_CMD_2_SRC_BUFFER_SWAP_MASK                          0x00000100
768 
769 /* Description		TCL_DATA_CMD_2_LINK_META_SWAP
770 
771 			Treats link descriptor and Metadata as big-endian. The
772 			link descriptor/Metadata is read and byte swapped.
773 
774 			1'b0: Memory is little endian
775 
776 			1'b1: Memory is big endian
777 
778 			<legal all>
779 */
780 #define TCL_DATA_CMD_2_LINK_META_SWAP_OFFSET                         0x00000008
781 #define TCL_DATA_CMD_2_LINK_META_SWAP_LSB                            9
782 #define TCL_DATA_CMD_2_LINK_META_SWAP_MASK                           0x00000200
783 
784 /* Description		TCL_DATA_CMD_2_TQM_NO_DROP
785 
786 			This bit is used to stop TQM from dropping MSDUs while
787 			adding them to MSDU flows1'b1: Do not drop MSDU when any of
788 			the threshold value is met while adding MSDU in a flow1'b1:
789 			Drop MSDU when any of the threshold value is met while
790 			adding MSDU in a flow
791 
792 			<legal all>
793 */
794 #define TCL_DATA_CMD_2_TQM_NO_DROP_OFFSET                            0x00000008
795 #define TCL_DATA_CMD_2_TQM_NO_DROP_LSB                               10
796 #define TCL_DATA_CMD_2_TQM_NO_DROP_MASK                              0x00000400
797 
798 /* Description		TCL_DATA_CMD_2_RESERVED_2A
799 
800 			<legal 0>
801 */
802 #define TCL_DATA_CMD_2_RESERVED_2A_OFFSET                            0x00000008
803 #define TCL_DATA_CMD_2_RESERVED_2A_LSB                               11
804 #define TCL_DATA_CMD_2_RESERVED_2A_MASK                              0x00000800
805 
806 /* Description		TCL_DATA_CMD_2_SEARCH_TYPE
807 
808 			Search type select
809 
810 
811 
812 			<enum 0 Normal_search> Address and flow search will use
813 			packet contents
814 
815 			<enum 1 Index_based_address_search> Address search will
816 
817 			<enum 2 Index_based_flow_search> Flow search will use
818 			'search_index', and address search will use packet contents
819 
820 			<legal 0-2>
821 */
822 #define TCL_DATA_CMD_2_SEARCH_TYPE_OFFSET                            0x00000008
823 #define TCL_DATA_CMD_2_SEARCH_TYPE_LSB                               12
824 #define TCL_DATA_CMD_2_SEARCH_TYPE_MASK                              0x00003000
825 
826 /* Description		TCL_DATA_CMD_2_ADDRX_EN
827 
828 			Address X search enable in ASE
829 
830 			1'b0: Search disable
831 
832 			1'b1: Search Enable
833 
834 			<legal all>
835 */
836 #define TCL_DATA_CMD_2_ADDRX_EN_OFFSET                               0x00000008
837 #define TCL_DATA_CMD_2_ADDRX_EN_LSB                                  14
838 #define TCL_DATA_CMD_2_ADDRX_EN_MASK                                 0x00004000
839 
840 /* Description		TCL_DATA_CMD_2_ADDRY_EN
841 
842 			Address Y search enable in ASE
843 
844 			1'b0: Search disable
845 
846 			1'b1: Search Enable
847 
848 			<legal all>
849 */
850 #define TCL_DATA_CMD_2_ADDRY_EN_OFFSET                               0x00000008
851 #define TCL_DATA_CMD_2_ADDRY_EN_LSB                                  15
852 #define TCL_DATA_CMD_2_ADDRY_EN_MASK                                 0x00008000
853 
854 /* Description		TCL_DATA_CMD_2_TCL_CMD_NUMBER
855 
856 			This number can be used by SW to track, identify and
857 			link the created commands with the command statuses
858 
859 
860 
861 			Is set to the value 'TCL_CMD_Number' of the related
862 			TCL_DATA command
863 
864 			<legal all>
865 */
866 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_OFFSET                         0x00000008
867 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_LSB                            16
868 #define TCL_DATA_CMD_2_TCL_CMD_NUMBER_MASK                           0xffff0000
869 
870 /* Description		TCL_DATA_CMD_3_DATA_LENGTH
871 
872 			Valid Data length in bytes.
873 
874 
875 
876 			MSDU length in case of direct descriptor.
877 
878 			Length of link extension descriptor in case of Link
879 			extension descriptor. This is used to know the size of
880 			Metadata.
881 
882 			<legal all>
883 */
884 #define TCL_DATA_CMD_3_DATA_LENGTH_OFFSET                            0x0000000c
885 #define TCL_DATA_CMD_3_DATA_LENGTH_LSB                               0
886 #define TCL_DATA_CMD_3_DATA_LENGTH_MASK                              0x0000ffff
887 
888 /* Description		TCL_DATA_CMD_3_IPV4_CHECKSUM_EN
889 
890 			OLE related control
891 
892 			Enable IPv4 checksum replacement
893 */
894 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_OFFSET                       0x0000000c
895 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_LSB                          16
896 #define TCL_DATA_CMD_3_IPV4_CHECKSUM_EN_MASK                         0x00010000
897 
898 /* Description		TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN
899 
900 			OLE related control
901 
902 			Enable UDP over IPv4 checksum replacement.  UDP checksum
903 			over IPv4 is optional for TCP/IP stacks.
904 */
905 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
906 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_LSB                 17
907 #define TCL_DATA_CMD_3_UDP_OVER_IPV4_CHECKSUM_EN_MASK                0x00020000
908 
909 /* Description		TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN
910 
911 			OLE related control
912 
913 			Enable UDP over IPv6 checksum replacement.  UDP checksum
914 			over IPv6 is mandatory for TCP/IP stacks.
915 */
916 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
917 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_LSB                 18
918 #define TCL_DATA_CMD_3_UDP_OVER_IPV6_CHECKSUM_EN_MASK                0x00040000
919 
920 /* Description		TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN
921 
922 			OLE related control
923 
924 			Enable TCP checksum over IPv4 replacement
925 */
926 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_OFFSET              0x0000000c
927 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_LSB                 19
928 #define TCL_DATA_CMD_3_TCP_OVER_IPV4_CHECKSUM_EN_MASK                0x00080000
929 
930 /* Description		TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN
931 
932 			OLE related control
933 
934 			Enable TCP checksum over IPv6 replacement
935 */
936 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_OFFSET              0x0000000c
937 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_LSB                 20
938 #define TCL_DATA_CMD_3_TCP_OVER_IPV6_CHECKSUM_EN_MASK                0x00100000
939 
940 /* Description		TCL_DATA_CMD_3_TO_FW
941 
942 			Forward packet to FW along with classification result.
943 			The packet will not be forward to TQM when this bit is set
944 
945 
946 
947 			1'b0: Use classification result to forward the packet.
948 
949 			1'b1: Override classification result and forward packet
950 			only to FW.
951 
952 			<legal all>
953 */
954 #define TCL_DATA_CMD_3_TO_FW_OFFSET                                  0x0000000c
955 #define TCL_DATA_CMD_3_TO_FW_LSB                                     21
956 #define TCL_DATA_CMD_3_TO_FW_MASK                                    0x00200000
957 
958 /* Description		TCL_DATA_CMD_3_RESERVED_3A
959 
960 			<legal 0>
961 */
962 #define TCL_DATA_CMD_3_RESERVED_3A_OFFSET                            0x0000000c
963 #define TCL_DATA_CMD_3_RESERVED_3A_LSB                               22
964 #define TCL_DATA_CMD_3_RESERVED_3A_MASK                              0x00400000
965 
966 /* Description		TCL_DATA_CMD_3_PACKET_OFFSET
967 
968 			Packet offset from Metadata in case of direct buffer
969 			descriptor. This field is valid when Buf_or_ext_desc_type is
970 			reset(= 0).
971 
972 			<legal all>
973 */
974 #define TCL_DATA_CMD_3_PACKET_OFFSET_OFFSET                          0x0000000c
975 #define TCL_DATA_CMD_3_PACKET_OFFSET_LSB                             23
976 #define TCL_DATA_CMD_3_PACKET_OFFSET_MASK                            0xff800000
977 
978 /* Description		TCL_DATA_CMD_4_BUFFER_TIMESTAMP
979 
980 			Field only valid when 'Buffer_timestamp_valid ' is set.
981 
982 
983 
984 			Frame system entrance timestamp. The timestamp is
985 			related to the global system timer
986 
987 
988 
989 			Generally the first module (SW, TCL or TQM). that sees
990 			this frame and this timestamp field is not valid, shall fill
991 			in this field.
992 
993 
994 
995 			Timestamp in units of 1024 us
996 */
997 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_OFFSET                       0x00000010
998 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_LSB                          0
999 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_MASK                         0x0007ffff
1000 
1001 /* Description		TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID
1002 
1003 			When set, the Buffer_timestamp field contains valid
1004 			info.
1005 */
1006 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_OFFSET                 0x00000010
1007 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_LSB                    19
1008 #define TCL_DATA_CMD_4_BUFFER_TIMESTAMP_VALID_MASK                   0x00080000
1009 
1010 /* Description		TCL_DATA_CMD_4_RESERVED_4A
1011 
1012 			<legal 0>
1013 */
1014 #define TCL_DATA_CMD_4_RESERVED_4A_OFFSET                            0x00000010
1015 #define TCL_DATA_CMD_4_RESERVED_4A_LSB                               20
1016 #define TCL_DATA_CMD_4_RESERVED_4A_MASK                              0x00100000
1017 
1018 /* Description		TCL_DATA_CMD_4_HLOS_TID_OVERWRITE
1019 
1020 			When set, TCL shall ignore the IP DSCP and VLAN PCP
1021 			fields and use HLOS_TID as the final TID. Otherwise TCL
1022 			shall consider the DSCP and PCP fields as well as HLOS_TID
1023 			and choose a final TID based on the configured priority
1024 
1025 			<legal all>
1026 */
1027 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_OFFSET                     0x00000010
1028 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_LSB                        21
1029 #define TCL_DATA_CMD_4_HLOS_TID_OVERWRITE_MASK                       0x00200000
1030 
1031 /* Description		TCL_DATA_CMD_4_HLOS_TID
1032 
1033 			HLOS MSDU priority
1034 
1035 
1036 
1037 			Field is used when HLOS_TID_overwrite is set.
1038 
1039 
1040 
1041 			Field is also used when HLOS_TID_overwrite is not set
1042 			and DSCP/PCP is not available in the packet
1043 
1044 			<legal all>
1045 */
1046 #define TCL_DATA_CMD_4_HLOS_TID_OFFSET                               0x00000010
1047 #define TCL_DATA_CMD_4_HLOS_TID_LSB                                  22
1048 #define TCL_DATA_CMD_4_HLOS_TID_MASK                                 0x03c00000
1049 
1050 /* Description		TCL_DATA_CMD_4_LMAC_ID
1051 
1052 			TCL uses this LMAC_ID in address search, i.e, while
1053 			finding matching entry for the packet in AST corresponding
1054 			to given LMAC_ID
1055 
1056 			If LMAC ID is all 1s (=> value 3), it indicates wildcard
1057 			match for any MAC
1058 
1059 			<legal 0-3>
1060 */
1061 #define TCL_DATA_CMD_4_LMAC_ID_OFFSET                                0x00000010
1062 #define TCL_DATA_CMD_4_LMAC_ID_LSB                                   26
1063 #define TCL_DATA_CMD_4_LMAC_ID_MASK                                  0x0c000000
1064 
1065 /* Description		TCL_DATA_CMD_4_RESERVED_4B
1066 
1067 			<legal 0>
1068 */
1069 #define TCL_DATA_CMD_4_RESERVED_4B_OFFSET                            0x00000010
1070 #define TCL_DATA_CMD_4_RESERVED_4B_LSB                               28
1071 #define TCL_DATA_CMD_4_RESERVED_4B_MASK                              0xf0000000
1072 
1073 /* Description		TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM
1074 
1075 			DSCP to TID mapping table number that need to be used
1076 			for the MSDU, should be specified using this field
1077 
1078 			<legal all>
1079 */
1080 #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_OFFSET                     0x00000014
1081 #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_LSB                        0
1082 #define TCL_DATA_CMD_5_DSCP_TID_TABLE_NUM_MASK                       0x0000003f
1083 
1084 /* Description		TCL_DATA_CMD_5_SEARCH_INDEX
1085 
1086 			The index that will be used for index based address or
1087 			flow search. The field is valid when 'search_type' is  1 or
1088 			2.
1089 
1090 			<legal all>
1091 */
1092 #define TCL_DATA_CMD_5_SEARCH_INDEX_OFFSET                           0x00000014
1093 #define TCL_DATA_CMD_5_SEARCH_INDEX_LSB                              6
1094 #define TCL_DATA_CMD_5_SEARCH_INDEX_MASK                             0x03ffffc0
1095 
1096 /* Description		TCL_DATA_CMD_5_CACHE_SET_NUM
1097 
1098 			Cache set number that should be used to cache the index
1099 			based search results, for address and flow search. This
1100 			value should be equal to LSB four bits of the hash value of
1101 			match data, in case of search index points to an entry which
1102 			may be used in content based search also. The value can be
1103 			anything when the entry pointed by search index will not be
1104 			used for content based search.
1105 
1106 			<legal all>
1107 */
1108 #define TCL_DATA_CMD_5_CACHE_SET_NUM_OFFSET                          0x00000014
1109 #define TCL_DATA_CMD_5_CACHE_SET_NUM_LSB                             26
1110 #define TCL_DATA_CMD_5_CACHE_SET_NUM_MASK                            0x3c000000
1111 
1112 /* Description		TCL_DATA_CMD_5_MESH_ENABLE
1113 
1114 			If set to a non-zero value:
1115 
1116 			* For raw WiFi frames, this indicates transmission to a
1117 			mesh STA, enabling the interpretation of the 'Mesh Control
1118 			Present' bit (bit 8) of QoS Control (otherwise this bit is
1119 			ignored). The interpretation of the A-MSDU 'Length' field is
1120 			decided by the e-numerations below.
1121 
1122 			* For native WiFi frames, this indicates that a 'Mesh
1123 			Control' field is present between the header and the LLC.
1124 			The three non-zero values are interchangeable.
1125 
1126 
1127 
1128 			<enum 0 MESH_DISABLE>
1129 
1130 			<enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
1131 			includes the length of Mesh Control.
1132 
1133 			<enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
1134 			excludes the length of Mesh Control.
1135 
1136 			<enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
1137 			and excludes the length of Mesh Control. This is
1138 			802.11s-compliant.
1139 
1140 			<legal 0-3>
1141 */
1142 #define TCL_DATA_CMD_5_MESH_ENABLE_OFFSET                            0x00000014
1143 #define TCL_DATA_CMD_5_MESH_ENABLE_LSB                               30
1144 #define TCL_DATA_CMD_5_MESH_ENABLE_MASK                              0xc0000000
1145 
1146 /* Description		TCL_DATA_CMD_6_RESERVED_6A
1147 
1148 			<legal 0>
1149 */
1150 #define TCL_DATA_CMD_6_RESERVED_6A_OFFSET                            0x00000018
1151 #define TCL_DATA_CMD_6_RESERVED_6A_LSB                               0
1152 #define TCL_DATA_CMD_6_RESERVED_6A_MASK                              0x000fffff
1153 
1154 /* Description		TCL_DATA_CMD_6_RING_ID
1155 
1156 			The buffer pointer ring ID.
1157 
1158 			0 refers to the IDLE ring
1159 
1160 			1 - N refers to other rings
1161 
1162 
1163 
1164 			Helps with debugging when dumping ring contents.
1165 
1166 			<legal all>
1167 */
1168 #define TCL_DATA_CMD_6_RING_ID_OFFSET                                0x00000018
1169 #define TCL_DATA_CMD_6_RING_ID_LSB                                   20
1170 #define TCL_DATA_CMD_6_RING_ID_MASK                                  0x0ff00000
1171 
1172 /* Description		TCL_DATA_CMD_6_LOOPING_COUNT
1173 
1174 			A count value that indicates the number of times the
1175 			producer of entries into the Ring has looped around the
1176 			ring.
1177 
1178 			At initialization time, this value is set to 0. On the
1179 			first loop, this value is set to 1. After the max value is
1180 			reached allowed by the number of bits for this field, the
1181 			count value continues with 0 again.
1182 
1183 
1184 
1185 			In case SW is the consumer of the ring entries, it can
1186 			use this field to figure out up to where the producer of
1187 			entries has created new entries. This eliminates the need to
1188 			check where the head pointer' of the ring is located once
1189 			the SW starts processing an interrupt indicating that new
1190 			entries have been put into this ring...
1191 
1192 
1193 
1194 			Also note that SW if it wants only needs to look at the
1195 			LSB bit of this count value.
1196 
1197 			<legal all>
1198 */
1199 #define TCL_DATA_CMD_6_LOOPING_COUNT_OFFSET                          0x00000018
1200 #define TCL_DATA_CMD_6_LOOPING_COUNT_LSB                             28
1201 #define TCL_DATA_CMD_6_LOOPING_COUNT_MASK                            0xf0000000
1202 
1203 
1204 #endif // _TCL_DATA_CMD_H_
1205