xref: /wlan-driver/fw-api/hw/qcn6432/tx_queue_extension.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 _TX_QUEUE_EXTENSION_H_
18*5113495bSYour Name #define _TX_QUEUE_EXTENSION_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #define NUM_OF_DWORDS_TX_QUEUE_EXTENSION 14
23*5113495bSYour Name 
24*5113495bSYour Name #define NUM_OF_QWORDS_TX_QUEUE_EXTENSION 7
25*5113495bSYour Name 
26*5113495bSYour Name 
27*5113495bSYour Name struct tx_queue_extension {
28*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29*5113495bSYour Name              uint32_t frame_ctl                                               : 16, // [15:0]
30*5113495bSYour Name                       qos_ctl                                                 : 16; // [31:16]
31*5113495bSYour Name              uint32_t ampdu_flag                                              :  1, // [0:0]
32*5113495bSYour Name                       tx_notify_no_htc_override                               :  1, // [1:1]
33*5113495bSYour Name                       reserved_1a                                             :  7, // [8:2]
34*5113495bSYour Name                       checksum_tso_disable_for_frag                           :  1, // [9:9]
35*5113495bSYour Name                       key_id                                                  :  8, // [17:10]
36*5113495bSYour Name                       qos_buf_state_overwrite                                 :  1, // [18:18]
37*5113495bSYour Name                       buf_state_sta_id                                        :  1, // [19:19]
38*5113495bSYour Name                       buf_state_source                                        :  1, // [20:20]
39*5113495bSYour Name                       ht_control_overwrite_enable                             :  1, // [21:21]
40*5113495bSYour Name                       ht_control_overwrite_source                             :  4, // [25:22]
41*5113495bSYour Name                       reserved_1b                                             :  6; // [31:26]
42*5113495bSYour Name              uint32_t ul_headroom_insertion_enable                            :  1, // [0:0]
43*5113495bSYour Name                       ul_headroom_offset                                      :  5, // [5:1]
44*5113495bSYour Name                       bqrp_insertion_enable                                   :  1, // [6:6]
45*5113495bSYour Name                       bqrp_offset                                             :  5, // [11:7]
46*5113495bSYour Name                       ul_headroom_rsvd_7_6                                    :  2, // [13:12]
47*5113495bSYour Name                       bqr_rsvd_9_8                                            :  2, // [15:14]
48*5113495bSYour Name                       base_pn_63_48                                           : 16; // [31:16]
49*5113495bSYour Name              uint32_t base_pn_95_64                                           : 32; // [31:0]
50*5113495bSYour Name              uint32_t base_pn_127_96                                          : 32; // [31:0]
51*5113495bSYour Name              uint32_t ht_control_field_bw20                                   : 32; // [31:0]
52*5113495bSYour Name              uint32_t ht_control_field_bw40                                   : 32; // [31:0]
53*5113495bSYour Name              uint32_t ht_control_field_bw80                                   : 32; // [31:0]
54*5113495bSYour Name              uint32_t ht_control_field_bw160                                  : 32; // [31:0]
55*5113495bSYour Name              uint32_t ht_control_overwrite_mask                               : 32; // [31:0]
56*5113495bSYour Name              uint32_t cas_control_info                                        :  8, // [7:0]
57*5113495bSYour Name                       cas_offset                                              :  5, // [12:8]
58*5113495bSYour Name                       cas_insertion_enable                                    :  1, // [13:13]
59*5113495bSYour Name                       reserved_10a                                            :  2, // [15:14]
60*5113495bSYour Name                       ht_control_overwrite_source_for_srp                     :  4, // [19:16]
61*5113495bSYour Name                       ht_control_overwrite_source_for_bsrp                    :  4, // [23:20]
62*5113495bSYour Name                       reserved_10b                                            :  6, // [29:24]
63*5113495bSYour Name                       mpdu_hdr_len_override_en                                :  1, // [30:30]
64*5113495bSYour Name                       bar_ssn_overwrite_enable                                :  1; // [31:31]
65*5113495bSYour Name              uint32_t bar_ssn_offset                                          : 12, // [11:0]
66*5113495bSYour Name                       mpdu_hdr_len_override_val                               :  9, // [20:12]
67*5113495bSYour Name                       reserved_11a                                            : 11; // [31:21]
68*5113495bSYour Name              uint32_t ht_control_field_bw320                                  : 32; // [31:0]
69*5113495bSYour Name              uint32_t fw2sw_info                                              : 32; // [31:0]
70*5113495bSYour Name #else
71*5113495bSYour Name              uint32_t qos_ctl                                                 : 16, // [31:16]
72*5113495bSYour Name                       frame_ctl                                               : 16; // [15:0]
73*5113495bSYour Name              uint32_t reserved_1b                                             :  6, // [31:26]
74*5113495bSYour Name                       ht_control_overwrite_source                             :  4, // [25:22]
75*5113495bSYour Name                       ht_control_overwrite_enable                             :  1, // [21:21]
76*5113495bSYour Name                       buf_state_source                                        :  1, // [20:20]
77*5113495bSYour Name                       buf_state_sta_id                                        :  1, // [19:19]
78*5113495bSYour Name                       qos_buf_state_overwrite                                 :  1, // [18:18]
79*5113495bSYour Name                       key_id                                                  :  8, // [17:10]
80*5113495bSYour Name                       checksum_tso_disable_for_frag                           :  1, // [9:9]
81*5113495bSYour Name                       reserved_1a                                             :  7, // [8:2]
82*5113495bSYour Name                       tx_notify_no_htc_override                               :  1, // [1:1]
83*5113495bSYour Name                       ampdu_flag                                              :  1; // [0:0]
84*5113495bSYour Name              uint32_t base_pn_63_48                                           : 16, // [31:16]
85*5113495bSYour Name                       bqr_rsvd_9_8                                            :  2, // [15:14]
86*5113495bSYour Name                       ul_headroom_rsvd_7_6                                    :  2, // [13:12]
87*5113495bSYour Name                       bqrp_offset                                             :  5, // [11:7]
88*5113495bSYour Name                       bqrp_insertion_enable                                   :  1, // [6:6]
89*5113495bSYour Name                       ul_headroom_offset                                      :  5, // [5:1]
90*5113495bSYour Name                       ul_headroom_insertion_enable                            :  1; // [0:0]
91*5113495bSYour Name              uint32_t base_pn_95_64                                           : 32; // [31:0]
92*5113495bSYour Name              uint32_t base_pn_127_96                                          : 32; // [31:0]
93*5113495bSYour Name              uint32_t ht_control_field_bw20                                   : 32; // [31:0]
94*5113495bSYour Name              uint32_t ht_control_field_bw40                                   : 32; // [31:0]
95*5113495bSYour Name              uint32_t ht_control_field_bw80                                   : 32; // [31:0]
96*5113495bSYour Name              uint32_t ht_control_field_bw160                                  : 32; // [31:0]
97*5113495bSYour Name              uint32_t ht_control_overwrite_mask                               : 32; // [31:0]
98*5113495bSYour Name              uint32_t bar_ssn_overwrite_enable                                :  1, // [31:31]
99*5113495bSYour Name                       mpdu_hdr_len_override_en                                :  1, // [30:30]
100*5113495bSYour Name                       reserved_10b                                            :  6, // [29:24]
101*5113495bSYour Name                       ht_control_overwrite_source_for_bsrp                    :  4, // [23:20]
102*5113495bSYour Name                       ht_control_overwrite_source_for_srp                     :  4, // [19:16]
103*5113495bSYour Name                       reserved_10a                                            :  2, // [15:14]
104*5113495bSYour Name                       cas_insertion_enable                                    :  1, // [13:13]
105*5113495bSYour Name                       cas_offset                                              :  5, // [12:8]
106*5113495bSYour Name                       cas_control_info                                        :  8; // [7:0]
107*5113495bSYour Name              uint32_t reserved_11a                                            : 11, // [31:21]
108*5113495bSYour Name                       mpdu_hdr_len_override_val                               :  9, // [20:12]
109*5113495bSYour Name                       bar_ssn_offset                                          : 12; // [11:0]
110*5113495bSYour Name              uint32_t ht_control_field_bw320                                  : 32; // [31:0]
111*5113495bSYour Name              uint32_t fw2sw_info                                              : 32; // [31:0]
112*5113495bSYour Name #endif
113*5113495bSYour Name };
114*5113495bSYour Name 
115*5113495bSYour Name 
116*5113495bSYour Name /* Description		FRAME_CTL
117*5113495bSYour Name 
118*5113495bSYour Name 			Consumer: TXOLE
119*5113495bSYour Name 			Producer: SW
120*5113495bSYour Name 
121*5113495bSYour Name 
122*5113495bSYour Name 			802.11 Frame control field:
123*5113495bSYour Name 			fc [1:0]: Protocol Version
124*5113495bSYour Name 			fc[7:2]: type/subtypeFor non-11ah  fc[3:2] = Type  fc[7:4] =
125*5113495bSYour Name 			Subtype For 11ah  fc[4:2] = Typefc[7:5] = PTID/SubType
126*5113495bSYour Name 			fc [8]: To DS ( for Non-11ah)  From DS ( for 11ah )
127*5113495bSYour Name 			fc [9]: From DS ( for Non-11ah )
128*5113495bSYour Name 			  More Frag ( for 11ah )
129*5113495bSYour Name 			fc [10]: More Frag ( for Non-11ah )
130*5113495bSYour Name 			  Power Management ( for 11ah)
131*5113495bSYour Name 			fc [11]: Retry ( for Non-11ah )
132*5113495bSYour Name 			  More Data ( for 11ah )
133*5113495bSYour Name 			fc [12]: Pwr Mgt ( for Non-11ah )
134*5113495bSYour Name 			  Protected Frame ( for 11ah )
135*5113495bSYour Name 			fc [13]: More Data( for Non-11ah )
136*5113495bSYour Name 			  EOSP ( for 11ah )
137*5113495bSYour Name 			fc [14]: Protected Frame ( for Non-11ah)
138*5113495bSYour Name 			  Relayed Frame ( for 11ah )
139*5113495bSYour Name 			fc [15]: Order ( for Non-11ah )
140*5113495bSYour Name 			Ack Policy ( for 11ah )
141*5113495bSYour Name 			Used by OLE during the encapsulation process for Native
142*5113495bSYour Name 			WiFi, Ethernet II, and 802.3.
143*5113495bSYour Name 			When the Order field is set, TXOLE shall insert 4 placeholder
144*5113495bSYour Name 			 bytes for the HE-control field in the frame. TXPCU will
145*5113495bSYour Name 			 overwrite them with the final actual value...
146*5113495bSYour Name */
147*5113495bSYour Name 
148*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_OFFSET                                         0x0000000000000000
149*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_LSB                                            0
150*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_MSB                                            15
151*5113495bSYour Name #define TX_QUEUE_EXTENSION_FRAME_CTL_MASK                                           0x000000000000ffff
152*5113495bSYour Name 
153*5113495bSYour Name 
154*5113495bSYour Name /* Description		QOS_CTL
155*5113495bSYour Name 
156*5113495bSYour Name 			Consumer: TXOLE
157*5113495bSYour Name 			Producer: SW
158*5113495bSYour Name 
159*5113495bSYour Name 			QoS control field is valid if the type field is data and
160*5113495bSYour Name 			 the upper bit of the subtype field is set.  The field decode
161*5113495bSYour Name 			 is as below:
162*5113495bSYour Name 			qos_ctl[3:0]: TID
163*5113495bSYour Name 			qos_ctl[4]: EOSP (with some exceptions)
164*5113495bSYour Name 			qos_ctl[6:5]: Ack Policy
165*5113495bSYour Name 			0x0: Normal Ack or Implicit BAR
166*5113495bSYour Name 			0x1: No Ack
167*5113495bSYour Name 			0x2: No explicit Ack or PSMP Ack (not supported)
168*5113495bSYour Name 			0x3: Block Ack (Not supported)
169*5113495bSYour Name 			Qos_ctl[7]: A-MSDU Present (with some exceptions)
170*5113495bSYour Name 			Qos_ctl[15:8]: TXOP limit, AP PS buffer state, TXOP duration
171*5113495bSYour Name 			 requested or queue size
172*5113495bSYour Name 			This field is inserted into the 802.11 header during the
173*5113495bSYour Name 			 encapsulation process
174*5113495bSYour Name 			<legal all>
175*5113495bSYour Name */
176*5113495bSYour Name 
177*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_OFFSET                                           0x0000000000000000
178*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_LSB                                              16
179*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_MSB                                              31
180*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_CTL_MASK                                             0x00000000ffff0000
181*5113495bSYour Name 
182*5113495bSYour Name 
183*5113495bSYour Name /* Description		AMPDU_FLAG
184*5113495bSYour Name 
185*5113495bSYour Name 			Consumer: PDG/TXPCU
186*5113495bSYour Name 			Producer: SW
187*5113495bSYour Name 
188*5113495bSYour Name 			Note:
189*5113495bSYour Name 			For legacy rate transmissions (11 b and 11a, an 11g), this
190*5113495bSYour Name 			 bit shall always be set to zero.
191*5113495bSYour Name 
192*5113495bSYour Name 			0:
193*5113495bSYour Name 			For legacy and .11n rates:
194*5113495bSYour Name 			MPDUs are only allowed to be sent out 1 at a time in NON
195*5113495bSYour Name 			 A-MPDU format.
196*5113495bSYour Name 			For .11ac and .11ax rates:
197*5113495bSYour Name 			MPDUs are sent out in S-MPDU format (TXPCU sets the 'EOF'
198*5113495bSYour Name 			bit in the MPDU delimiter).
199*5113495bSYour Name 			1: All MPDUs should be sent out using the A-MPDU format,
200*5113495bSYour Name 			even if there is only one MPDU.
201*5113495bSYour Name 
202*5113495bSYour Name 			Note that this bit should be set to 0 in order to construct
203*5113495bSYour Name 			 an S-MPDU frame. VHT and HE frames are all A-MPDU format
204*5113495bSYour Name 			 but if this bit is clear, EOF bit is set to 1 for the MPDU
205*5113495bSYour Name 			 delimiter in A-MPDU, which is the indicator of S-MPDU and
206*5113495bSYour Name 			 solicits ACK rather than BA as response frame.
207*5113495bSYour Name 
208*5113495bSYour Name 			This bit shall be set to 1 for any MD (Multi Destination)
209*5113495bSYour Name 			transmission.
210*5113495bSYour Name */
211*5113495bSYour Name 
212*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_OFFSET                                        0x0000000000000000
213*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_LSB                                           32
214*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MSB                                           32
215*5113495bSYour Name #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MASK                                          0x0000000100000000
216*5113495bSYour Name 
217*5113495bSYour Name 
218*5113495bSYour Name /* Description		TX_NOTIFY_NO_HTC_OVERRIDE
219*5113495bSYour Name 
220*5113495bSYour Name 			When set, and a 'TX_MPDU_START' TLV has Tx_notify_frame
221*5113495bSYour Name 			set to TX_HARD_NOTIFY or TX_SOFT_NOTIFY or TX_SEMI_HARD_NOTIFY,
222*5113495bSYour Name 			then PDG would have updated the rate fields for a legacy
223*5113495bSYour Name 			 PPDU which may not support HT Control.
224*5113495bSYour Name 
225*5113495bSYour Name 			In this case TXOLE shall not:
226*5113495bSYour Name 			set the Order/+HTC bit in the 'Frame Control,'
227*5113495bSYour Name 			include 4 bytes for TXPCU to fill the HT Control, or
228*5113495bSYour Name 			set vht_control_present in 'TX_MPDU_START,'
229*5113495bSYour Name 			even if requested, and instead shall subtract '4' from the
230*5113495bSYour Name 			 mpdu_length in 'TX_MPDU_START' and overwrite it.
231*5113495bSYour Name 
232*5113495bSYour Name 			<legal all>
233*5113495bSYour Name */
234*5113495bSYour Name 
235*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_OFFSET                         0x0000000000000000
236*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_LSB                            33
237*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MSB                            33
238*5113495bSYour Name #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MASK                           0x0000000200000000
239*5113495bSYour Name 
240*5113495bSYour Name 
241*5113495bSYour Name 
242*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_OFFSET                                       0x0000000000000000
243*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_LSB                                          34
244*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_MSB                                          40
245*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1A_MASK                                         0x000001fc00000000
246*5113495bSYour Name 
247*5113495bSYour Name 
248*5113495bSYour Name /* Description		CHECKSUM_TSO_DISABLE_FOR_FRAG
249*5113495bSYour Name 
250*5113495bSYour Name 			Field only valid in case of level-1 fragmentation, identified
251*5113495bSYour Name 			 by TXOLE getting the 'TX_FRAG_STATE' TLV
252*5113495bSYour Name 
253*5113495bSYour Name 			If set, TXOLE disables all checksum and TSO overwrites for
254*5113495bSYour Name 			 the fragment(s) being transmitted.
255*5113495bSYour Name 
256*5113495bSYour Name 			This is useful if it is known that the checksum and TSO
257*5113495bSYour Name 			overwrites affect only the first fragment (or first few
258*5113495bSYour Name 			fragments) and for the rest these can be safely disabled.
259*5113495bSYour Name 
260*5113495bSYour Name 
261*5113495bSYour Name 			<legal all>
262*5113495bSYour Name */
263*5113495bSYour Name 
264*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_OFFSET                     0x0000000000000000
265*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_LSB                        41
266*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MSB                        41
267*5113495bSYour Name #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MASK                       0x0000020000000000
268*5113495bSYour Name 
269*5113495bSYour Name 
270*5113495bSYour Name /* Description		KEY_ID
271*5113495bSYour Name 
272*5113495bSYour Name 			Field only valid in case of encryption, and TXOLE being
273*5113495bSYour Name 			instructured to insert the IV.
274*5113495bSYour Name 
275*5113495bSYour Name 			TXOLE blindly copies this field into the key ID octet (which
276*5113495bSYour Name 			 is part of the IV) of the encrypted frame.
277*5113495bSYour Name 
278*5113495bSYour Name 			For AES/TKIP the encoding is:
279*5113495bSYour Name 			key_id_octet[7:6]: key ID
280*5113495bSYour Name 			key_id_octet[5]: extended IV:
281*5113495bSYour Name 			key_id_octet[4:0]: Reserved bits
282*5113495bSYour Name 
283*5113495bSYour Name 			For WEP the encoding is:
284*5113495bSYour Name 			key_id_octet[7:6]: key ID
285*5113495bSYour Name 			key_id_octet[5]: extended IV:
286*5113495bSYour Name 			key_id_octet[4:0]: Reserved bits
287*5113495bSYour Name 
288*5113495bSYour Name 			For WAPI the encoding is:
289*5113495bSYour Name 			key_id_octet[7:2]: Reserved bits
290*5113495bSYour Name 			key_id_octet[1:0]: key ID
291*5113495bSYour Name 
292*5113495bSYour Name 			<legal all>
293*5113495bSYour Name */
294*5113495bSYour Name 
295*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_OFFSET                                            0x0000000000000000
296*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_LSB                                               42
297*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_MSB                                               49
298*5113495bSYour Name #define TX_QUEUE_EXTENSION_KEY_ID_MASK                                              0x0003fc0000000000
299*5113495bSYour Name 
300*5113495bSYour Name 
301*5113495bSYour Name /* Description		QOS_BUF_STATE_OVERWRITE
302*5113495bSYour Name 
303*5113495bSYour Name 			When clear, TXPCU shall not overwrite buffer state field
304*5113495bSYour Name 			 in the QoS frame control field.
305*5113495bSYour Name 
306*5113495bSYour Name 			When set, TXPCU shall overwrite the buffer state field in
307*5113495bSYour Name 			 the QoS frame control field, with info that SW has programmed
308*5113495bSYour Name 			 in TXPCU registers. Note that TXPCU shall pick up the values
309*5113495bSYour Name 			 related to this TID.
310*5113495bSYour Name 			<legal all>
311*5113495bSYour Name */
312*5113495bSYour Name 
313*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_OFFSET                           0x0000000000000000
314*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_LSB                              50
315*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MSB                              50
316*5113495bSYour Name #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MASK                             0x0004000000000000
317*5113495bSYour Name 
318*5113495bSYour Name 
319*5113495bSYour Name /* Description		BUF_STATE_STA_ID
320*5113495bSYour Name 
321*5113495bSYour Name 			Field only valid when QoS_Buf_state_overwrite is set.
322*5113495bSYour Name 
323*5113495bSYour Name 			This field indicates what the STA ID register source is
324*5113495bSYour Name 			of the buffer status.
325*5113495bSYour Name 
326*5113495bSYour Name 			1'b0: TXPCU registers: STA0_buf_status_...
327*5113495bSYour Name 			1'b1: TXPCU registers: STA1_buf_status_...
328*5113495bSYour Name 			<legal all>
329*5113495bSYour Name */
330*5113495bSYour Name 
331*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_OFFSET                                  0x0000000000000000
332*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_LSB                                     51
333*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MSB                                     51
334*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MASK                                    0x0008000000000000
335*5113495bSYour Name 
336*5113495bSYour Name 
337*5113495bSYour Name /* Description		BUF_STATE_SOURCE
338*5113495bSYour Name 
339*5113495bSYour Name 			Field only valid when QoS_Buf_state_overwrite is set.
340*5113495bSYour Name 
341*5113495bSYour Name 			This field indicates what the source is of the actual value
342*5113495bSYour Name 			 TXPCU will insert
343*5113495bSYour Name 
344*5113495bSYour Name 			<enum 0 BUF_STATE_TID_BASED> TXPCU looks at the TID field
345*5113495bSYour Name 			 in the QoS control frame and based on this TID, selects
346*5113495bSYour Name 			 the buffer source value from the corresponding TID register.
347*5113495bSYour Name 
348*5113495bSYour Name 			<enum 1 BUF_STATE_SUM_BASED> TXPCU inserts the value from
349*5113495bSYour Name 			 the buffer_state_sum register
350*5113495bSYour Name 
351*5113495bSYour Name 			<legal all>
352*5113495bSYour Name */
353*5113495bSYour Name 
354*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_OFFSET                                  0x0000000000000000
355*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_LSB                                     52
356*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MSB                                     52
357*5113495bSYour Name #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MASK                                    0x0010000000000000
358*5113495bSYour Name 
359*5113495bSYour Name 
360*5113495bSYour Name /* Description		HT_CONTROL_OVERWRITE_ENABLE
361*5113495bSYour Name 
362*5113495bSYour Name 			When set, TXPCU shall overwrite some (or all) of the HT_CONTROL
363*5113495bSYour Name 			 field with values that are programmed in TXPCU registers:
364*5113495bSYour Name 			HT_CONTROL_OVERWRITE_IX???
365*5113495bSYour Name 
366*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
367*5113495bSYour Name 
368*5113495bSYour Name 			<legal all>
369*5113495bSYour Name */
370*5113495bSYour Name 
371*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_OFFSET                       0x0000000000000000
372*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_LSB                          53
373*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MSB                          53
374*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MASK                         0x0020000000000000
375*5113495bSYour Name 
376*5113495bSYour Name 
377*5113495bSYour Name /* Description		HT_CONTROL_OVERWRITE_SOURCE
378*5113495bSYour Name 
379*5113495bSYour Name 			Field only valid when HT_control_overwrite_enable  is set.
380*5113495bSYour Name 
381*5113495bSYour Name 
382*5113495bSYour Name 			This field indicates the index of the TXPCU register HT_CONTROL_OVERWRITE_IX???
383*5113495bSYour Name 			That is the source of the overwrite data.
384*5113495bSYour Name 			<legal all>
385*5113495bSYour Name */
386*5113495bSYour Name 
387*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_OFFSET                       0x0000000000000000
388*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_LSB                          54
389*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MSB                          57
390*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MASK                         0x03c0000000000000
391*5113495bSYour Name 
392*5113495bSYour Name 
393*5113495bSYour Name 
394*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_OFFSET                                       0x0000000000000000
395*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_LSB                                          58
396*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_MSB                                          63
397*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_1B_MASK                                         0xfc00000000000000
398*5113495bSYour Name 
399*5113495bSYour Name 
400*5113495bSYour Name /* Description		UL_HEADROOM_INSERTION_ENABLE
401*5113495bSYour Name 
402*5113495bSYour Name 			When set, and this transmission services a trigger response
403*5113495bSYour Name 			 transmission, TXPCU shall create and insert the UL headroom
404*5113495bSYour Name 			 info in the HE control field, starting at offset indicated
405*5113495bSYour Name 			 by field: UL_headroom_offset
406*5113495bSYour Name 
407*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
408*5113495bSYour Name 			<legal all>
409*5113495bSYour Name */
410*5113495bSYour Name 
411*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_OFFSET                      0x0000000000000008
412*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_LSB                         0
413*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MSB                         0
414*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MASK                        0x0000000000000001
415*5113495bSYour Name 
416*5113495bSYour Name 
417*5113495bSYour Name /* Description		UL_HEADROOM_OFFSET
418*5113495bSYour Name 
419*5113495bSYour Name 			Field only valid when UL_headroom_insertion_enable is set.
420*5113495bSYour Name 
421*5113495bSYour Name 
422*5113495bSYour Name 			The bit location in HE_CONTROL Field where TXPCU will start
423*5113495bSYour Name 			 writing the the 4 bit Control ID field that needs to be
424*5113495bSYour Name 			 inserted, followed by the lower 6 bits of the 8 bit bit
425*5113495bSYour Name 			 UL_headroom info (UPH Control).
426*5113495bSYour Name 
427*5113495bSYour Name 			NOTE: currently on 6 bits are defined in the UPH control
428*5113495bSYour Name 			 field. The upper two bits are provided by SW in UL_headroom_rsvd_7_6.
429*5113495bSYour Name 
430*5113495bSYour Name 
431*5113495bSYour Name 			<legal 2-20>
432*5113495bSYour Name */
433*5113495bSYour Name 
434*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_OFFSET                                0x0000000000000008
435*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_LSB                                   1
436*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MSB                                   5
437*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MASK                                  0x000000000000003e
438*5113495bSYour Name 
439*5113495bSYour Name 
440*5113495bSYour Name /* Description		BQRP_INSERTION_ENABLE
441*5113495bSYour Name 
442*5113495bSYour Name 			When set, and this transmission services a BQRP trigger
443*5113495bSYour Name 			response transmission, TXPCU shall create and insert the
444*5113495bSYour Name 			 BQR control field into the HE control field, as well as
445*5113495bSYour Name 			 the 4 bit preceding Control ID field.
446*5113495bSYour Name 
447*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
448*5113495bSYour Name 			<legal all>
449*5113495bSYour Name */
450*5113495bSYour Name 
451*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_OFFSET                             0x0000000000000008
452*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_LSB                                6
453*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MSB                                6
454*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MASK                               0x0000000000000040
455*5113495bSYour Name 
456*5113495bSYour Name 
457*5113495bSYour Name /* Description		BQRP_OFFSET
458*5113495bSYour Name 
459*5113495bSYour Name 			Field only valid when BQRP_insertion_enable is set.
460*5113495bSYour Name 
461*5113495bSYour Name 			The bit location in HE_CONTROL Field where TXPCU will start
462*5113495bSYour Name 			 writing the 4 bit Control ID field that needs to be inserted,
463*5113495bSYour Name 			followed by the lower 8 bits of the 10 bit BQR control field.
464*5113495bSYour Name 
465*5113495bSYour Name 
466*5113495bSYour Name 			NOTE: currently only 8 bits are defined in the 10 bit BQR
467*5113495bSYour Name 			 control field. The upper two bits are provided by SW in
468*5113495bSYour Name 			 BQR_rsvd_9_8.
469*5113495bSYour Name 
470*5113495bSYour Name 			<legal 2-20>
471*5113495bSYour Name */
472*5113495bSYour Name 
473*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_OFFSET                                       0x0000000000000008
474*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_LSB                                          7
475*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MSB                                          11
476*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MASK                                         0x0000000000000f80
477*5113495bSYour Name 
478*5113495bSYour Name 
479*5113495bSYour Name /* Description		UL_HEADROOM_RSVD_7_6
480*5113495bSYour Name 
481*5113495bSYour Name 			These will be used by TXPCU to fill the upper two bits of
482*5113495bSYour Name 			 the UPH control field.
483*5113495bSYour Name 			<legal all>
484*5113495bSYour Name */
485*5113495bSYour Name 
486*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_OFFSET                              0x0000000000000008
487*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_LSB                                 12
488*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MSB                                 13
489*5113495bSYour Name #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MASK                                0x0000000000003000
490*5113495bSYour Name 
491*5113495bSYour Name 
492*5113495bSYour Name /* Description		BQR_RSVD_9_8
493*5113495bSYour Name 
494*5113495bSYour Name 			These will be used by TXPCU to fill the upper two bits of
495*5113495bSYour Name 			 the BQR control field.
496*5113495bSYour Name 			NOTE: When overwriting CAS control (8-bit) at the same offset
497*5113495bSYour Name 			 as BQR control (10-bit), TXPCU will ignore the BQR overwrite,
498*5113495bSYour Name 			including these upper two bits.
499*5113495bSYour Name 			<legal all>
500*5113495bSYour Name */
501*5113495bSYour Name 
502*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_OFFSET                                      0x0000000000000008
503*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_LSB                                         14
504*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MSB                                         15
505*5113495bSYour Name #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MASK                                        0x000000000000c000
506*5113495bSYour Name 
507*5113495bSYour Name 
508*5113495bSYour Name /* Description		BASE_PN_63_48
509*5113495bSYour Name 
510*5113495bSYour Name 			Upper bits PN number, in case a larger then 48 bit PN number
511*5113495bSYour Name 			 needs to be inserted in the transmit frame.
512*5113495bSYour Name 
513*5113495bSYour Name 			63-48 bits of the 128-bit packet number
514*5113495bSYour Name 			<legal all>
515*5113495bSYour Name */
516*5113495bSYour Name 
517*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_OFFSET                                     0x0000000000000008
518*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_LSB                                        16
519*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MSB                                        31
520*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MASK                                       0x00000000ffff0000
521*5113495bSYour Name 
522*5113495bSYour Name 
523*5113495bSYour Name /* Description		BASE_PN_95_64
524*5113495bSYour Name 
525*5113495bSYour Name 			Upper bits PN number, in case a larger then 48 bit PN number
526*5113495bSYour Name 			 needs to be inserted in the transmit frame.
527*5113495bSYour Name 
528*5113495bSYour Name 			95-64 bits of the 128-bit packet number
529*5113495bSYour Name 			<legal all>
530*5113495bSYour Name */
531*5113495bSYour Name 
532*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_OFFSET                                     0x0000000000000008
533*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_LSB                                        32
534*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MSB                                        63
535*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MASK                                       0xffffffff00000000
536*5113495bSYour Name 
537*5113495bSYour Name 
538*5113495bSYour Name /* Description		BASE_PN_127_96
539*5113495bSYour Name 
540*5113495bSYour Name 			Upper bits PN number, in case a larger then 48 bit PN number
541*5113495bSYour Name 			 needs to be inserted in the transmit frame.
542*5113495bSYour Name 
543*5113495bSYour Name 			127-96 bits of the 128-bit packet number
544*5113495bSYour Name 			<legal all>
545*5113495bSYour Name */
546*5113495bSYour Name 
547*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_OFFSET                                    0x0000000000000010
548*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_LSB                                       0
549*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MSB                                       31
550*5113495bSYour Name #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MASK                                      0x00000000ffffffff
551*5113495bSYour Name 
552*5113495bSYour Name 
553*5113495bSYour Name /* Description		HT_CONTROL_FIELD_BW20
554*5113495bSYour Name 
555*5113495bSYour Name 			Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
556*5113495bSYour Name 			  is set.
557*5113495bSYour Name 
558*5113495bSYour Name 			Note that TXPCU might overwrite some fields. This is controlled
559*5113495bSYour Name 			 with field  HT_control_overwrite_enable
560*5113495bSYour Name 
561*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
562*5113495bSYour Name 
563*5113495bSYour Name 			<legal all>
564*5113495bSYour Name */
565*5113495bSYour Name 
566*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_OFFSET                             0x0000000000000010
567*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_LSB                                32
568*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MSB                                63
569*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MASK                               0xffffffff00000000
570*5113495bSYour Name 
571*5113495bSYour Name 
572*5113495bSYour Name /* Description		HT_CONTROL_FIELD_BW40
573*5113495bSYour Name 
574*5113495bSYour Name 			Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
575*5113495bSYour Name 			  is set.
576*5113495bSYour Name 
577*5113495bSYour Name 			Note that TXPCU might overwrite some fields. This is controlled
578*5113495bSYour Name 			 with field  HT_control_overwrite_enable
579*5113495bSYour Name 
580*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
581*5113495bSYour Name 
582*5113495bSYour Name 			<legal all>
583*5113495bSYour Name */
584*5113495bSYour Name 
585*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_OFFSET                             0x0000000000000018
586*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_LSB                                0
587*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MSB                                31
588*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MASK                               0x00000000ffffffff
589*5113495bSYour Name 
590*5113495bSYour Name 
591*5113495bSYour Name /* Description		HT_CONTROL_FIELD_BW80
592*5113495bSYour Name 
593*5113495bSYour Name 			Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
594*5113495bSYour Name 			  is set.
595*5113495bSYour Name 
596*5113495bSYour Name 			Note that TXPCU might overwrite some fields. This is controlled
597*5113495bSYour Name 			 with field  HT_control_overwrite_enable
598*5113495bSYour Name 
599*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
600*5113495bSYour Name 
601*5113495bSYour Name 			<legal all>
602*5113495bSYour Name */
603*5113495bSYour Name 
604*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_OFFSET                             0x0000000000000018
605*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_LSB                                32
606*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MSB                                63
607*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MASK                               0xffffffff00000000
608*5113495bSYour Name 
609*5113495bSYour Name 
610*5113495bSYour Name /* Description		HT_CONTROL_FIELD_BW160
611*5113495bSYour Name 
612*5113495bSYour Name 			Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
613*5113495bSYour Name 			  is set.
614*5113495bSYour Name 
615*5113495bSYour Name 			Note that TXPCU might overwrite some fields. This is controlled
616*5113495bSYour Name 			 with field  HT_control_overwrite_enable
617*5113495bSYour Name 
618*5113495bSYour Name 			See HT/HE control overwrite order NOTE after this table
619*5113495bSYour Name 
620*5113495bSYour Name 			<legal all>
621*5113495bSYour Name */
622*5113495bSYour Name 
623*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_OFFSET                            0x0000000000000020
624*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_LSB                               0
625*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MSB                               31
626*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MASK                              0x00000000ffffffff
627*5113495bSYour Name 
628*5113495bSYour Name 
629*5113495bSYour Name /* Description		HT_CONTROL_OVERWRITE_MASK
630*5113495bSYour Name 
631*5113495bSYour Name 			Field only valid when HT_control_overwrite_enable  is set.
632*5113495bSYour Name 
633*5113495bSYour Name 
634*5113495bSYour Name 			This field indicates which bits of the HT_CONTROL_FIELD
635*5113495bSYour Name 			shall be overwritten with bits from TXPCU register HT_CONTROL_OVERWRITE_IX???
636*5113495bSYour Name 
637*5113495bSYour Name 			Every bit that needs to be overwritten is set to 1 in this
638*5113495bSYour Name 			 register.
639*5113495bSYour Name 			<legal all>
640*5113495bSYour Name */
641*5113495bSYour Name 
642*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_OFFSET                         0x0000000000000020
643*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_LSB                            32
644*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MSB                            63
645*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MASK                           0xffffffff00000000
646*5113495bSYour Name 
647*5113495bSYour Name 
648*5113495bSYour Name /* Description		CAS_CONTROL_INFO
649*5113495bSYour Name 
650*5113495bSYour Name 			This contains 8-bit CAS control field to be used for transmission
651*5113495bSYour Name 			 during SRP window
652*5113495bSYour Name 			<legal all>
653*5113495bSYour Name */
654*5113495bSYour Name 
655*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_OFFSET                                  0x0000000000000028
656*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_LSB                                     0
657*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MSB                                     7
658*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MASK                                    0x00000000000000ff
659*5113495bSYour Name 
660*5113495bSYour Name 
661*5113495bSYour Name /* Description		CAS_OFFSET
662*5113495bSYour Name 
663*5113495bSYour Name 			5 bit offset for CAS insertion
664*5113495bSYour Name 			<legal 2-20>
665*5113495bSYour Name */
666*5113495bSYour Name 
667*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_OFFSET                                        0x0000000000000028
668*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_LSB                                           8
669*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_MSB                                           12
670*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_OFFSET_MASK                                          0x0000000000001f00
671*5113495bSYour Name 
672*5113495bSYour Name 
673*5113495bSYour Name /* Description		CAS_INSERTION_ENABLE
674*5113495bSYour Name 
675*5113495bSYour Name 			single bit used as ENABLE for CAS control insertion for
676*5113495bSYour Name 			transmission during SRP window
677*5113495bSYour Name 			<legal all>
678*5113495bSYour Name */
679*5113495bSYour Name 
680*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_OFFSET                              0x0000000000000028
681*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_LSB                                 13
682*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MSB                                 13
683*5113495bSYour Name #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MASK                                0x0000000000002000
684*5113495bSYour Name 
685*5113495bSYour Name 
686*5113495bSYour Name /* Description		RESERVED_10A
687*5113495bSYour Name 
688*5113495bSYour Name 			<legal 0>
689*5113495bSYour Name */
690*5113495bSYour Name 
691*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_OFFSET                                      0x0000000000000028
692*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_LSB                                         14
693*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_MSB                                         15
694*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10A_MASK                                        0x000000000000c000
695*5113495bSYour Name 
696*5113495bSYour Name 
697*5113495bSYour Name /* Description		HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP
698*5113495bSYour Name 
699*5113495bSYour Name 			4-bit index similar to HT_control_overwrite_source field
700*5113495bSYour Name 			 to be used for transmission during SRP window
701*5113495bSYour Name 			<legal all>
702*5113495bSYour Name */
703*5113495bSYour Name 
704*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_OFFSET               0x0000000000000028
705*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_LSB                  16
706*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MSB                  19
707*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MASK                 0x00000000000f0000
708*5113495bSYour Name 
709*5113495bSYour Name 
710*5113495bSYour Name /* Description		HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP
711*5113495bSYour Name 
712*5113495bSYour Name 			4-bit index similar to HT_control_overwrite_source field
713*5113495bSYour Name 			 to be used for response to BSRP triggers (even during SRP
714*5113495bSYour Name 			 window)
715*5113495bSYour Name 			<legal all>
716*5113495bSYour Name */
717*5113495bSYour Name 
718*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_OFFSET              0x0000000000000028
719*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_LSB                 20
720*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MSB                 23
721*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MASK                0x0000000000f00000
722*5113495bSYour Name 
723*5113495bSYour Name 
724*5113495bSYour Name /* Description		RESERVED_10B
725*5113495bSYour Name 
726*5113495bSYour Name 			<legal 0>
727*5113495bSYour Name */
728*5113495bSYour Name 
729*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_OFFSET                                      0x0000000000000028
730*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_LSB                                         24
731*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_MSB                                         29
732*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_10B_MASK                                        0x000000003f000000
733*5113495bSYour Name 
734*5113495bSYour Name 
735*5113495bSYour Name /* Description		MPDU_HDR_LEN_OVERRIDE_EN
736*5113495bSYour Name 
737*5113495bSYour Name 			This is for the FW override of MPDU overhead length programmed
738*5113495bSYour Name 			 in the TQM queue.
739*5113495bSYour Name 
740*5113495bSYour Name 			If enabled, PDG will update the length of each MPDU by subtracting
741*5113495bSYour Name 			 the value of field Mpdu_header_length  in 'MPDU_QUEUE_OVERVIEW'
742*5113495bSYour Name 			and adding Mpdu_hdr_len_override_val (in this TLV).
743*5113495bSYour Name 			<legal all>
744*5113495bSYour Name */
745*5113495bSYour Name 
746*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_OFFSET                          0x0000000000000028
747*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_LSB                             30
748*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MSB                             30
749*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MASK                            0x0000000040000000
750*5113495bSYour Name 
751*5113495bSYour Name 
752*5113495bSYour Name /* Description		BAR_SSN_OVERWRITE_ENABLE
753*5113495bSYour Name 
754*5113495bSYour Name 			If enabled, TXPCU will overwrite the starting sequence number
755*5113495bSYour Name 			 in case of Tx BAR or MU-BAR Trigger from with the sequence
756*5113495bSYour Name 			 number from 'MPDU_QUEUE_OVERVIEW'
757*5113495bSYour Name 			<legal all>
758*5113495bSYour Name */
759*5113495bSYour Name 
760*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_OFFSET                          0x0000000000000028
761*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_LSB                             31
762*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MSB                             31
763*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MASK                            0x0000000080000000
764*5113495bSYour Name 
765*5113495bSYour Name 
766*5113495bSYour Name /* Description		BAR_SSN_OFFSET
767*5113495bSYour Name 
768*5113495bSYour Name 			Offset to the starting sequence number in case of Tx BAR
769*5113495bSYour Name 			 or MU-BAR Trigger that TXPCU can overwrite with the sequence
770*5113495bSYour Name 			 number from 'MPDU_QUEUE_OVERVIEW'
771*5113495bSYour Name 			<legal all>
772*5113495bSYour Name */
773*5113495bSYour Name 
774*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_OFFSET                                    0x0000000000000028
775*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_LSB                                       32
776*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MSB                                       43
777*5113495bSYour Name #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MASK                                      0x00000fff00000000
778*5113495bSYour Name 
779*5113495bSYour Name 
780*5113495bSYour Name /* Description		MPDU_HDR_LEN_OVERRIDE_VAL
781*5113495bSYour Name 
782*5113495bSYour Name 			This is for the FW override of MPDU overhead length programmed
783*5113495bSYour Name 			 in the TQM queue.
784*5113495bSYour Name 
785*5113495bSYour Name 			<legal all>
786*5113495bSYour Name */
787*5113495bSYour Name 
788*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_OFFSET                         0x0000000000000028
789*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_LSB                            44
790*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MSB                            52
791*5113495bSYour Name #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MASK                           0x001ff00000000000
792*5113495bSYour Name 
793*5113495bSYour Name 
794*5113495bSYour Name 
795*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_OFFSET                                      0x0000000000000028
796*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_LSB                                         53
797*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_MSB                                         63
798*5113495bSYour Name #define TX_QUEUE_EXTENSION_RESERVED_11A_MASK                                        0xffe0000000000000
799*5113495bSYour Name 
800*5113495bSYour Name 
801*5113495bSYour Name /* Description		HT_CONTROL_FIELD_BW320
802*5113495bSYour Name 
803*5113495bSYour Name 			Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
804*5113495bSYour Name 			  is set.
805*5113495bSYour Name 
806*5113495bSYour Name 			Note that TXPCU might overwrite some fields. This is controlled
807*5113495bSYour Name 			 with field  HT_control_overwrite_enable
808*5113495bSYour Name 
809*5113495bSYour Name 			<legal all>
810*5113495bSYour Name */
811*5113495bSYour Name 
812*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_OFFSET                            0x0000000000000030
813*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_LSB                               0
814*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MSB                               31
815*5113495bSYour Name #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MASK                              0x00000000ffffffff
816*5113495bSYour Name 
817*5113495bSYour Name 
818*5113495bSYour Name /* Description		FW2SW_INFO
819*5113495bSYour Name 
820*5113495bSYour Name 			This field is provided by FW, to be logged via TXMON to
821*5113495bSYour Name 			host SW. It is transparent to HW.
822*5113495bSYour Name 
823*5113495bSYour Name 			<legal all>
824*5113495bSYour Name */
825*5113495bSYour Name 
826*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_OFFSET                                        0x0000000000000030
827*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_LSB                                           32
828*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_MSB                                           63
829*5113495bSYour Name #define TX_QUEUE_EXTENSION_FW2SW_INFO_MASK                                          0xffffffff00000000
830*5113495bSYour Name 
831*5113495bSYour Name 
832*5113495bSYour Name 
833*5113495bSYour Name #endif   // TX_QUEUE_EXTENSION
834