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