xref: /wlan-driver/fw-api/hw/qcn6432/tx_mpdu_start.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_MPDU_START_H_
18*5113495bSYour Name #define _TX_MPDU_START_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #define NUM_OF_DWORDS_TX_MPDU_START 10
23*5113495bSYour Name 
24*5113495bSYour Name #define NUM_OF_QWORDS_TX_MPDU_START 5
25*5113495bSYour Name 
26*5113495bSYour Name 
27*5113495bSYour Name struct tx_mpdu_start {
28*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29*5113495bSYour Name              uint32_t mpdu_length                                             : 14, // [13:0]
30*5113495bSYour Name                       frame_not_from_tqm                                      :  1, // [14:14]
31*5113495bSYour Name                       vht_control_present                                     :  1, // [15:15]
32*5113495bSYour Name                       mpdu_header_length                                      :  8, // [23:16]
33*5113495bSYour Name                       retry_count                                             :  7, // [30:24]
34*5113495bSYour Name                       wds                                                     :  1; // [31:31]
35*5113495bSYour Name              uint32_t pn_31_0                                                 : 32; // [31:0]
36*5113495bSYour Name              uint32_t pn_47_32                                                : 16, // [15:0]
37*5113495bSYour Name                       mpdu_sequence_number                                    : 12, // [27:16]
38*5113495bSYour Name                       raw_already_encrypted                                   :  1, // [28:28]
39*5113495bSYour Name                       frame_type                                              :  2, // [30:29]
40*5113495bSYour Name                       txdma_dropped_mpdu_warning                              :  1; // [31:31]
41*5113495bSYour Name              uint32_t iv_byte_0                                               :  8, // [7:0]
42*5113495bSYour Name                       iv_byte_1                                               :  8, // [15:8]
43*5113495bSYour Name                       iv_byte_2                                               :  8, // [23:16]
44*5113495bSYour Name                       iv_byte_3                                               :  8; // [31:24]
45*5113495bSYour Name              uint32_t iv_byte_4                                               :  8, // [7:0]
46*5113495bSYour Name                       iv_byte_5                                               :  8, // [15:8]
47*5113495bSYour Name                       iv_byte_6                                               :  8, // [23:16]
48*5113495bSYour Name                       iv_byte_7                                               :  8; // [31:24]
49*5113495bSYour Name              uint32_t iv_byte_8                                               :  8, // [7:0]
50*5113495bSYour Name                       iv_byte_9                                               :  8, // [15:8]
51*5113495bSYour Name                       iv_byte_10                                              :  8, // [23:16]
52*5113495bSYour Name                       iv_byte_11                                              :  8; // [31:24]
53*5113495bSYour Name              uint32_t iv_byte_12                                              :  8, // [7:0]
54*5113495bSYour Name                       iv_byte_13                                              :  8, // [15:8]
55*5113495bSYour Name                       iv_byte_14                                              :  8, // [23:16]
56*5113495bSYour Name                       iv_byte_15                                              :  8; // [31:24]
57*5113495bSYour Name              uint32_t iv_byte_16                                              :  8, // [7:0]
58*5113495bSYour Name                       iv_byte_17                                              :  8, // [15:8]
59*5113495bSYour Name                       iv_len                                                  :  5, // [20:16]
60*5113495bSYour Name                       icv_len                                                 :  5, // [25:21]
61*5113495bSYour Name                       vht_control_offset                                      :  6; // [31:26]
62*5113495bSYour Name              uint32_t mpdu_type                                               :  1, // [0:0]
63*5113495bSYour Name                       transmit_bw_restriction                                 :  1, // [1:1]
64*5113495bSYour Name                       allowed_transmit_bw                                     :  4, // [5:2]
65*5113495bSYour Name                       tx_notify_frame                                         :  3, // [8:6]
66*5113495bSYour Name                       reserved_8a                                             : 23; // [31:9]
67*5113495bSYour Name              uint32_t tlv64_padding                                           : 32; // [31:0]
68*5113495bSYour Name #else
69*5113495bSYour Name              uint32_t wds                                                     :  1, // [31:31]
70*5113495bSYour Name                       retry_count                                             :  7, // [30:24]
71*5113495bSYour Name                       mpdu_header_length                                      :  8, // [23:16]
72*5113495bSYour Name                       vht_control_present                                     :  1, // [15:15]
73*5113495bSYour Name                       frame_not_from_tqm                                      :  1, // [14:14]
74*5113495bSYour Name                       mpdu_length                                             : 14; // [13:0]
75*5113495bSYour Name              uint32_t pn_31_0                                                 : 32; // [31:0]
76*5113495bSYour Name              uint32_t txdma_dropped_mpdu_warning                              :  1, // [31:31]
77*5113495bSYour Name                       frame_type                                              :  2, // [30:29]
78*5113495bSYour Name                       raw_already_encrypted                                   :  1, // [28:28]
79*5113495bSYour Name                       mpdu_sequence_number                                    : 12, // [27:16]
80*5113495bSYour Name                       pn_47_32                                                : 16; // [15:0]
81*5113495bSYour Name              uint32_t iv_byte_3                                               :  8, // [31:24]
82*5113495bSYour Name                       iv_byte_2                                               :  8, // [23:16]
83*5113495bSYour Name                       iv_byte_1                                               :  8, // [15:8]
84*5113495bSYour Name                       iv_byte_0                                               :  8; // [7:0]
85*5113495bSYour Name              uint32_t iv_byte_7                                               :  8, // [31:24]
86*5113495bSYour Name                       iv_byte_6                                               :  8, // [23:16]
87*5113495bSYour Name                       iv_byte_5                                               :  8, // [15:8]
88*5113495bSYour Name                       iv_byte_4                                               :  8; // [7:0]
89*5113495bSYour Name              uint32_t iv_byte_11                                              :  8, // [31:24]
90*5113495bSYour Name                       iv_byte_10                                              :  8, // [23:16]
91*5113495bSYour Name                       iv_byte_9                                               :  8, // [15:8]
92*5113495bSYour Name                       iv_byte_8                                               :  8; // [7:0]
93*5113495bSYour Name              uint32_t iv_byte_15                                              :  8, // [31:24]
94*5113495bSYour Name                       iv_byte_14                                              :  8, // [23:16]
95*5113495bSYour Name                       iv_byte_13                                              :  8, // [15:8]
96*5113495bSYour Name                       iv_byte_12                                              :  8; // [7:0]
97*5113495bSYour Name              uint32_t vht_control_offset                                      :  6, // [31:26]
98*5113495bSYour Name                       icv_len                                                 :  5, // [25:21]
99*5113495bSYour Name                       iv_len                                                  :  5, // [20:16]
100*5113495bSYour Name                       iv_byte_17                                              :  8, // [15:8]
101*5113495bSYour Name                       iv_byte_16                                              :  8; // [7:0]
102*5113495bSYour Name              uint32_t reserved_8a                                             : 23, // [31:9]
103*5113495bSYour Name                       tx_notify_frame                                         :  3, // [8:6]
104*5113495bSYour Name                       allowed_transmit_bw                                     :  4, // [5:2]
105*5113495bSYour Name                       transmit_bw_restriction                                 :  1, // [1:1]
106*5113495bSYour Name                       mpdu_type                                               :  1; // [0:0]
107*5113495bSYour Name              uint32_t tlv64_padding                                           : 32; // [31:0]
108*5113495bSYour Name #endif
109*5113495bSYour Name };
110*5113495bSYour Name 
111*5113495bSYour Name 
112*5113495bSYour Name /* Description		MPDU_LENGTH
113*5113495bSYour Name 
114*5113495bSYour Name 			Consumer: TXOLE/CRYPTO/TXPCU
115*5113495bSYour Name 			Producer: TXDMA
116*5113495bSYour Name 
117*5113495bSYour Name 			Expected Length of the entire MPDU, which includes all MSDUs
118*5113495bSYour Name 			 within the MPDU and all OLE and Crypto processing. This
119*5113495bSYour Name 			 length includes the FCS field.
120*5113495bSYour Name */
121*5113495bSYour Name 
122*5113495bSYour Name #define TX_MPDU_START_MPDU_LENGTH_OFFSET                                            0x0000000000000000
123*5113495bSYour Name #define TX_MPDU_START_MPDU_LENGTH_LSB                                               0
124*5113495bSYour Name #define TX_MPDU_START_MPDU_LENGTH_MSB                                               13
125*5113495bSYour Name #define TX_MPDU_START_MPDU_LENGTH_MASK                                              0x0000000000003fff
126*5113495bSYour Name 
127*5113495bSYour Name 
128*5113495bSYour Name /* Description		FRAME_NOT_FROM_TQM
129*5113495bSYour Name 
130*5113495bSYour Name 			When set, TXPCU shall not take this frame into account for
131*5113495bSYour Name 			 indicating to TQM how many frames from it's queue got transmitted.
132*5113495bSYour Name 
133*5113495bSYour Name 
134*5113495bSYour Name 			TXDMA gets this field from the TX_MSDU_DETAILS STRUCT (of
135*5113495bSYour Name 			 the first MSDU in the MPDU) in the MSDU link descriptor.
136*5113495bSYour Name 
137*5113495bSYour Name 
138*5113495bSYour Name 			SW sets this bit (in TX_MSDU_DETAILS STRUCT) when it generates
139*5113495bSYour Name 			 a frame outside of the TQM path and that frame can be intermingled
140*5113495bSYour Name 			 with the other frames from the TQM. For example a trigger
141*5113495bSYour Name 			 frame embedded or put in front of data frames from TQM
142*5113495bSYour Name 			within the same A-MPDU. For this SW generated frame, TXPCU
143*5113495bSYour Name 			 shall not include this frame in the transmit frame count
144*5113495bSYour Name 			 that is reported to TQM as that would result in incorrect
145*5113495bSYour Name 			 reporting to TQM.
146*5113495bSYour Name 
147*5113495bSYour Name 			<legal all>
148*5113495bSYour Name */
149*5113495bSYour Name 
150*5113495bSYour Name #define TX_MPDU_START_FRAME_NOT_FROM_TQM_OFFSET                                     0x0000000000000000
151*5113495bSYour Name #define TX_MPDU_START_FRAME_NOT_FROM_TQM_LSB                                        14
152*5113495bSYour Name #define TX_MPDU_START_FRAME_NOT_FROM_TQM_MSB                                        14
153*5113495bSYour Name #define TX_MPDU_START_FRAME_NOT_FROM_TQM_MASK                                       0x0000000000004000
154*5113495bSYour Name 
155*5113495bSYour Name 
156*5113495bSYour Name /* Description		VHT_CONTROL_PRESENT
157*5113495bSYour Name 
158*5113495bSYour Name 			TXOLE sets this bit when it added 4 placeholder bytes for
159*5113495bSYour Name 			 VHT-CONTROL field in the MPDU header.
160*5113495bSYour Name 
161*5113495bSYour Name 			For RAW frames, OLE will set this bit and compute  vht_control_offset
162*5113495bSYour Name 			 when the order bit and QoS bit in frame_control field are
163*5113495bSYour Name 			 set to 1. For RAW management frame, this bit will be set
164*5113495bSYour Name 			 if order bit is set to 1.
165*5113495bSYour Name 
166*5113495bSYour Name 			Used by TXPCU, to find out if it needs to overwrite the
167*5113495bSYour Name 			HE-CONTROL field.
168*5113495bSYour Name 			<legal all>
169*5113495bSYour Name */
170*5113495bSYour Name 
171*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_PRESENT_OFFSET                                    0x0000000000000000
172*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_PRESENT_LSB                                       15
173*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_PRESENT_MSB                                       15
174*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_PRESENT_MASK                                      0x0000000000008000
175*5113495bSYour Name 
176*5113495bSYour Name 
177*5113495bSYour Name /* Description		MPDU_HEADER_LENGTH
178*5113495bSYour Name 
179*5113495bSYour Name 			This field is filled in by the OLE
180*5113495bSYour Name 			Used by PCU, This prevents PCU from having to do this again
181*5113495bSYour Name 			 (in the same way))
182*5113495bSYour Name */
183*5113495bSYour Name 
184*5113495bSYour Name #define TX_MPDU_START_MPDU_HEADER_LENGTH_OFFSET                                     0x0000000000000000
185*5113495bSYour Name #define TX_MPDU_START_MPDU_HEADER_LENGTH_LSB                                        16
186*5113495bSYour Name #define TX_MPDU_START_MPDU_HEADER_LENGTH_MSB                                        23
187*5113495bSYour Name #define TX_MPDU_START_MPDU_HEADER_LENGTH_MASK                                       0x0000000000ff0000
188*5113495bSYour Name 
189*5113495bSYour Name 
190*5113495bSYour Name /* Description		RETRY_COUNT
191*5113495bSYour Name 
192*5113495bSYour Name 			Consumer: TXOLE/TXPCU
193*5113495bSYour Name 			Producer: TXDMA
194*5113495bSYour Name 
195*5113495bSYour Name 			The number of times the frame is transmitted
196*5113495bSYour Name 			<legal all>
197*5113495bSYour Name */
198*5113495bSYour Name 
199*5113495bSYour Name #define TX_MPDU_START_RETRY_COUNT_OFFSET                                            0x0000000000000000
200*5113495bSYour Name #define TX_MPDU_START_RETRY_COUNT_LSB                                               24
201*5113495bSYour Name #define TX_MPDU_START_RETRY_COUNT_MSB                                               30
202*5113495bSYour Name #define TX_MPDU_START_RETRY_COUNT_MASK                                              0x000000007f000000
203*5113495bSYour Name 
204*5113495bSYour Name 
205*5113495bSYour Name /* Description		WDS
206*5113495bSYour Name 
207*5113495bSYour Name 			If set the current packet is 4-address frame.
208*5113495bSYour Name 
209*5113495bSYour Name 			Required because an aggregate can include some frames with
210*5113495bSYour Name 			 3 address format and other frames with 4 address format.
211*5113495bSYour Name 			 Used by the OLE during encapsulation.
212*5113495bSYour Name 
213*5113495bSYour Name 			TXDMA sets this when wds in the extension descriptor is
214*5113495bSYour Name 			set.
215*5113495bSYour Name 
216*5113495bSYour Name 			If no extension descriptor is used for this MPDU, TXDMA
217*5113495bSYour Name 			gets the setting for this bit from a control register in
218*5113495bSYour Name 			 TXDMA
219*5113495bSYour Name 			<legal all>
220*5113495bSYour Name */
221*5113495bSYour Name 
222*5113495bSYour Name #define TX_MPDU_START_WDS_OFFSET                                                    0x0000000000000000
223*5113495bSYour Name #define TX_MPDU_START_WDS_LSB                                                       31
224*5113495bSYour Name #define TX_MPDU_START_WDS_MSB                                                       31
225*5113495bSYour Name #define TX_MPDU_START_WDS_MASK                                                      0x0000000080000000
226*5113495bSYour Name 
227*5113495bSYour Name 
228*5113495bSYour Name /* Description		PN_31_0
229*5113495bSYour Name 
230*5113495bSYour Name 			Consumer: TXOLE
231*5113495bSYour Name 			Producer: TXDMA
232*5113495bSYour Name 
233*5113495bSYour Name 			Bits 31 - 0 for the Packet Number used by encryption
234*5113495bSYour Name 			<legal all>
235*5113495bSYour Name */
236*5113495bSYour Name 
237*5113495bSYour Name #define TX_MPDU_START_PN_31_0_OFFSET                                                0x0000000000000000
238*5113495bSYour Name #define TX_MPDU_START_PN_31_0_LSB                                                   32
239*5113495bSYour Name #define TX_MPDU_START_PN_31_0_MSB                                                   63
240*5113495bSYour Name #define TX_MPDU_START_PN_31_0_MASK                                                  0xffffffff00000000
241*5113495bSYour Name 
242*5113495bSYour Name 
243*5113495bSYour Name /* Description		PN_47_32
244*5113495bSYour Name 
245*5113495bSYour Name 			Consumer: TXOLE
246*5113495bSYour Name 			Producer: TXDMA
247*5113495bSYour Name 
248*5113495bSYour Name 			Bits 47 - 32 for the Packet Number used by encryption
249*5113495bSYour Name 			<legal all>
250*5113495bSYour Name */
251*5113495bSYour Name 
252*5113495bSYour Name #define TX_MPDU_START_PN_47_32_OFFSET                                               0x0000000000000008
253*5113495bSYour Name #define TX_MPDU_START_PN_47_32_LSB                                                  0
254*5113495bSYour Name #define TX_MPDU_START_PN_47_32_MSB                                                  15
255*5113495bSYour Name #define TX_MPDU_START_PN_47_32_MASK                                                 0x000000000000ffff
256*5113495bSYour Name 
257*5113495bSYour Name 
258*5113495bSYour Name /* Description		MPDU_SEQUENCE_NUMBER
259*5113495bSYour Name 
260*5113495bSYour Name 			Consumer: TXOLE
261*5113495bSYour Name 			Producer: TXDMA
262*5113495bSYour Name 
263*5113495bSYour Name 			Sequence number assigned to this MPDU
264*5113495bSYour Name 			<legal all>
265*5113495bSYour Name */
266*5113495bSYour Name 
267*5113495bSYour Name #define TX_MPDU_START_MPDU_SEQUENCE_NUMBER_OFFSET                                   0x0000000000000008
268*5113495bSYour Name #define TX_MPDU_START_MPDU_SEQUENCE_NUMBER_LSB                                      16
269*5113495bSYour Name #define TX_MPDU_START_MPDU_SEQUENCE_NUMBER_MSB                                      27
270*5113495bSYour Name #define TX_MPDU_START_MPDU_SEQUENCE_NUMBER_MASK                                     0x000000000fff0000
271*5113495bSYour Name 
272*5113495bSYour Name 
273*5113495bSYour Name /* Description		RAW_ALREADY_ENCRYPTED
274*5113495bSYour Name 
275*5113495bSYour Name 			Consumer: CRYPTO
276*5113495bSYour Name 			Producer: TXDMA
277*5113495bSYour Name 
278*5113495bSYour Name 			If set it indicates that the RAW MPDU has already been encrypted
279*5113495bSYour Name 			 and does not require HW encryption.  If clear and if the
280*5113495bSYour Name 			 frame control indicates that this is a "protected" MPDU
281*5113495bSYour Name 			 and the peer key type indicates a cipher type then the
282*5113495bSYour Name 			HW is expected to encrypt this packet.
283*5113495bSYour Name 			<legal all>
284*5113495bSYour Name */
285*5113495bSYour Name 
286*5113495bSYour Name #define TX_MPDU_START_RAW_ALREADY_ENCRYPTED_OFFSET                                  0x0000000000000008
287*5113495bSYour Name #define TX_MPDU_START_RAW_ALREADY_ENCRYPTED_LSB                                     28
288*5113495bSYour Name #define TX_MPDU_START_RAW_ALREADY_ENCRYPTED_MSB                                     28
289*5113495bSYour Name #define TX_MPDU_START_RAW_ALREADY_ENCRYPTED_MASK                                    0x0000000010000000
290*5113495bSYour Name 
291*5113495bSYour Name 
292*5113495bSYour Name /* Description		FRAME_TYPE
293*5113495bSYour Name 
294*5113495bSYour Name 			Consumer: TXMON
295*5113495bSYour Name 			Producer: TXOLE
296*5113495bSYour Name 
297*5113495bSYour Name 			802.11 frame type field
298*5113495bSYour Name 
299*5113495bSYour Name 			TXDMA fills this as zero and TXOLE overwrites it.
300*5113495bSYour Name 
301*5113495bSYour Name 			<legal all>
302*5113495bSYour Name */
303*5113495bSYour Name 
304*5113495bSYour Name #define TX_MPDU_START_FRAME_TYPE_OFFSET                                             0x0000000000000008
305*5113495bSYour Name #define TX_MPDU_START_FRAME_TYPE_LSB                                                29
306*5113495bSYour Name #define TX_MPDU_START_FRAME_TYPE_MSB                                                30
307*5113495bSYour Name #define TX_MPDU_START_FRAME_TYPE_MASK                                               0x0000000060000000
308*5113495bSYour Name 
309*5113495bSYour Name 
310*5113495bSYour Name /* Description		TXDMA_DROPPED_MPDU_WARNING
311*5113495bSYour Name 
312*5113495bSYour Name 			Consumer: FW
313*5113495bSYour Name 			Producer: TXDMA
314*5113495bSYour Name 
315*5113495bSYour Name 			Indication to TXPCU to indicate to FW a warning that Tx
316*5113495bSYour Name 			DMA has dropped MPDUs due to SFM FIFO full condition
317*5113495bSYour Name 			<legal all>
318*5113495bSYour Name */
319*5113495bSYour Name 
320*5113495bSYour Name #define TX_MPDU_START_TXDMA_DROPPED_MPDU_WARNING_OFFSET                             0x0000000000000008
321*5113495bSYour Name #define TX_MPDU_START_TXDMA_DROPPED_MPDU_WARNING_LSB                                31
322*5113495bSYour Name #define TX_MPDU_START_TXDMA_DROPPED_MPDU_WARNING_MSB                                31
323*5113495bSYour Name #define TX_MPDU_START_TXDMA_DROPPED_MPDU_WARNING_MASK                               0x0000000080000000
324*5113495bSYour Name 
325*5113495bSYour Name 
326*5113495bSYour Name /* Description		IV_BYTE_0
327*5113495bSYour Name 
328*5113495bSYour Name 			Byte 0 of the IV field of the MPDU
329*5113495bSYour Name 			Based on the Encryption type the iv_byte_0 takes the appropriate
330*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
331*5113495bSYour Name 
332*5113495bSYour Name */
333*5113495bSYour Name 
334*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_0_OFFSET                                              0x0000000000000008
335*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_0_LSB                                                 32
336*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_0_MSB                                                 39
337*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_0_MASK                                                0x000000ff00000000
338*5113495bSYour Name 
339*5113495bSYour Name 
340*5113495bSYour Name /* Description		IV_BYTE_1
341*5113495bSYour Name 
342*5113495bSYour Name 			Byte 1 of the IV field of the MPDU
343*5113495bSYour Name 			Based on the Encryption type the iv_byte_1 takes the appropriate
344*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
345*5113495bSYour Name 
346*5113495bSYour Name */
347*5113495bSYour Name 
348*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_1_OFFSET                                              0x0000000000000008
349*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_1_LSB                                                 40
350*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_1_MSB                                                 47
351*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_1_MASK                                                0x0000ff0000000000
352*5113495bSYour Name 
353*5113495bSYour Name 
354*5113495bSYour Name /* Description		IV_BYTE_2
355*5113495bSYour Name 
356*5113495bSYour Name 			Byte 2 of the IV field of the MDPU
357*5113495bSYour Name 			Based on the Encryption type the iv_byte_2 takes the appropriate
358*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
359*5113495bSYour Name 
360*5113495bSYour Name */
361*5113495bSYour Name 
362*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_2_OFFSET                                              0x0000000000000008
363*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_2_LSB                                                 48
364*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_2_MSB                                                 55
365*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_2_MASK                                                0x00ff000000000000
366*5113495bSYour Name 
367*5113495bSYour Name 
368*5113495bSYour Name /* Description		IV_BYTE_3
369*5113495bSYour Name 
370*5113495bSYour Name 			Byte 3 of the IV field of the MPDU
371*5113495bSYour Name 			Based on the Encryption type the iv_byte_3 takes the appropriate
372*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
373*5113495bSYour Name 
374*5113495bSYour Name */
375*5113495bSYour Name 
376*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_3_OFFSET                                              0x0000000000000008
377*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_3_LSB                                                 56
378*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_3_MSB                                                 63
379*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_3_MASK                                                0xff00000000000000
380*5113495bSYour Name 
381*5113495bSYour Name 
382*5113495bSYour Name /* Description		IV_BYTE_4
383*5113495bSYour Name 
384*5113495bSYour Name 			Byte 4 of the IV field of the MPDU
385*5113495bSYour Name 			Based on the Encryption type the iv_byte_4 takes the appropriate
386*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
387*5113495bSYour Name 
388*5113495bSYour Name */
389*5113495bSYour Name 
390*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_4_OFFSET                                              0x0000000000000010
391*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_4_LSB                                                 0
392*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_4_MSB                                                 7
393*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_4_MASK                                                0x00000000000000ff
394*5113495bSYour Name 
395*5113495bSYour Name 
396*5113495bSYour Name /* Description		IV_BYTE_5
397*5113495bSYour Name 
398*5113495bSYour Name 			Byte 5 of the IV field of the MPDU
399*5113495bSYour Name 			Based on the Encryption type the iv_byte_5 takes the appropriate
400*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
401*5113495bSYour Name 
402*5113495bSYour Name */
403*5113495bSYour Name 
404*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_5_OFFSET                                              0x0000000000000010
405*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_5_LSB                                                 8
406*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_5_MSB                                                 15
407*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_5_MASK                                                0x000000000000ff00
408*5113495bSYour Name 
409*5113495bSYour Name 
410*5113495bSYour Name /* Description		IV_BYTE_6
411*5113495bSYour Name 
412*5113495bSYour Name 			Byte 6 of the IV field of the MDPU
413*5113495bSYour Name 			Based on the Encryption type the iv_byte_6 takes the appropriate
414*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
415*5113495bSYour Name 
416*5113495bSYour Name */
417*5113495bSYour Name 
418*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_6_OFFSET                                              0x0000000000000010
419*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_6_LSB                                                 16
420*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_6_MSB                                                 23
421*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_6_MASK                                                0x0000000000ff0000
422*5113495bSYour Name 
423*5113495bSYour Name 
424*5113495bSYour Name /* Description		IV_BYTE_7
425*5113495bSYour Name 
426*5113495bSYour Name 			Byte 7 of the IV field of the MPDU
427*5113495bSYour Name 			Based on the Encryption type the iv_byte_7 takes the appropriate
428*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
429*5113495bSYour Name 
430*5113495bSYour Name */
431*5113495bSYour Name 
432*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_7_OFFSET                                              0x0000000000000010
433*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_7_LSB                                                 24
434*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_7_MSB                                                 31
435*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_7_MASK                                                0x00000000ff000000
436*5113495bSYour Name 
437*5113495bSYour Name 
438*5113495bSYour Name /* Description		IV_BYTE_8
439*5113495bSYour Name 
440*5113495bSYour Name 			Byte 8 of the IV field of the MPDU
441*5113495bSYour Name 			Based on the Encryption type the iv_byte_8 takes the appropriate
442*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
443*5113495bSYour Name 
444*5113495bSYour Name */
445*5113495bSYour Name 
446*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_8_OFFSET                                              0x0000000000000010
447*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_8_LSB                                                 32
448*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_8_MSB                                                 39
449*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_8_MASK                                                0x000000ff00000000
450*5113495bSYour Name 
451*5113495bSYour Name 
452*5113495bSYour Name /* Description		IV_BYTE_9
453*5113495bSYour Name 
454*5113495bSYour Name 			Byte 9 of the IV field of the MPDU
455*5113495bSYour Name 			Based on the Encryption type the iv_byte_9 takes the appropriate
456*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
457*5113495bSYour Name 
458*5113495bSYour Name */
459*5113495bSYour Name 
460*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_9_OFFSET                                              0x0000000000000010
461*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_9_LSB                                                 40
462*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_9_MSB                                                 47
463*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_9_MASK                                                0x0000ff0000000000
464*5113495bSYour Name 
465*5113495bSYour Name 
466*5113495bSYour Name /* Description		IV_BYTE_10
467*5113495bSYour Name 
468*5113495bSYour Name 			Byte 10 of the IV field of the MDPU
469*5113495bSYour Name 			Based on the Encryption type the iv_byte_10 takes the appropriate
470*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
471*5113495bSYour Name 
472*5113495bSYour Name */
473*5113495bSYour Name 
474*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_10_OFFSET                                             0x0000000000000010
475*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_10_LSB                                                48
476*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_10_MSB                                                55
477*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_10_MASK                                               0x00ff000000000000
478*5113495bSYour Name 
479*5113495bSYour Name 
480*5113495bSYour Name /* Description		IV_BYTE_11
481*5113495bSYour Name 
482*5113495bSYour Name 			Byte 11 of the IV field of the MPDU
483*5113495bSYour Name 			Based on the Encryption type the iv_byte_11 takes the appropriate
484*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
485*5113495bSYour Name 
486*5113495bSYour Name */
487*5113495bSYour Name 
488*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_11_OFFSET                                             0x0000000000000010
489*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_11_LSB                                                56
490*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_11_MSB                                                63
491*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_11_MASK                                               0xff00000000000000
492*5113495bSYour Name 
493*5113495bSYour Name 
494*5113495bSYour Name /* Description		IV_BYTE_12
495*5113495bSYour Name 
496*5113495bSYour Name 			Byte 8 of the IV field of the MPDU
497*5113495bSYour Name 			Based on the Encryption type the iv_byte_12 takes the appropriate
498*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
499*5113495bSYour Name 
500*5113495bSYour Name */
501*5113495bSYour Name 
502*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_12_OFFSET                                             0x0000000000000018
503*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_12_LSB                                                0
504*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_12_MSB                                                7
505*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_12_MASK                                               0x00000000000000ff
506*5113495bSYour Name 
507*5113495bSYour Name 
508*5113495bSYour Name /* Description		IV_BYTE_13
509*5113495bSYour Name 
510*5113495bSYour Name 			Byte 9 of the IV field of the MPDU
511*5113495bSYour Name 			Based on the Encryption type the iv_byte_13 takes the appropriate
512*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
513*5113495bSYour Name 
514*5113495bSYour Name */
515*5113495bSYour Name 
516*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_13_OFFSET                                             0x0000000000000018
517*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_13_LSB                                                8
518*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_13_MSB                                                15
519*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_13_MASK                                               0x000000000000ff00
520*5113495bSYour Name 
521*5113495bSYour Name 
522*5113495bSYour Name /* Description		IV_BYTE_14
523*5113495bSYour Name 
524*5113495bSYour Name 			Byte 10 of the IV field of the MDPU
525*5113495bSYour Name 			Based on the Encryption type the iv_byte_14 takes the appropriate
526*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
527*5113495bSYour Name 
528*5113495bSYour Name */
529*5113495bSYour Name 
530*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_14_OFFSET                                             0x0000000000000018
531*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_14_LSB                                                16
532*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_14_MSB                                                23
533*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_14_MASK                                               0x0000000000ff0000
534*5113495bSYour Name 
535*5113495bSYour Name 
536*5113495bSYour Name /* Description		IV_BYTE_15
537*5113495bSYour Name 
538*5113495bSYour Name 			Byte 11 of the IV field of the MPDU
539*5113495bSYour Name 			Based on the Encryption type the iv_byte_15 takes the appropriate
540*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
541*5113495bSYour Name 
542*5113495bSYour Name */
543*5113495bSYour Name 
544*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_15_OFFSET                                             0x0000000000000018
545*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_15_LSB                                                24
546*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_15_MSB                                                31
547*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_15_MASK                                               0x00000000ff000000
548*5113495bSYour Name 
549*5113495bSYour Name 
550*5113495bSYour Name /* Description		IV_BYTE_16
551*5113495bSYour Name 
552*5113495bSYour Name 			Byte 8 of the IV field of the MPDU
553*5113495bSYour Name 			Based on the Encryption type the iv_byte_16 takes the appropriate
554*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
555*5113495bSYour Name 
556*5113495bSYour Name */
557*5113495bSYour Name 
558*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_16_OFFSET                                             0x0000000000000018
559*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_16_LSB                                                32
560*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_16_MSB                                                39
561*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_16_MASK                                               0x000000ff00000000
562*5113495bSYour Name 
563*5113495bSYour Name 
564*5113495bSYour Name /* Description		IV_BYTE_17
565*5113495bSYour Name 
566*5113495bSYour Name 			Byte 9 of the IV field of the MPDU
567*5113495bSYour Name 			Based on the Encryption type the iv_byte_17 takes the appropriate
568*5113495bSYour Name 			 meaning. For IV formats,  refer to the crypto MLDR document
569*5113495bSYour Name 
570*5113495bSYour Name */
571*5113495bSYour Name 
572*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_17_OFFSET                                             0x0000000000000018
573*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_17_LSB                                                40
574*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_17_MSB                                                47
575*5113495bSYour Name #define TX_MPDU_START_IV_BYTE_17_MASK                                               0x0000ff0000000000
576*5113495bSYour Name 
577*5113495bSYour Name 
578*5113495bSYour Name /* Description		IV_LEN
579*5113495bSYour Name 
580*5113495bSYour Name 			Length of the IV field generated by Tx OLE
581*5113495bSYour Name */
582*5113495bSYour Name 
583*5113495bSYour Name #define TX_MPDU_START_IV_LEN_OFFSET                                                 0x0000000000000018
584*5113495bSYour Name #define TX_MPDU_START_IV_LEN_LSB                                                    48
585*5113495bSYour Name #define TX_MPDU_START_IV_LEN_MSB                                                    52
586*5113495bSYour Name #define TX_MPDU_START_IV_LEN_MASK                                                   0x001f000000000000
587*5113495bSYour Name 
588*5113495bSYour Name 
589*5113495bSYour Name /* Description		ICV_LEN
590*5113495bSYour Name 
591*5113495bSYour Name 			Length of the ICV field generated by Tx OLE. OLE will insert
592*5113495bSYour Name 			 zeros in the ICV field when it pushes a frame
593*5113495bSYour Name */
594*5113495bSYour Name 
595*5113495bSYour Name #define TX_MPDU_START_ICV_LEN_OFFSET                                                0x0000000000000018
596*5113495bSYour Name #define TX_MPDU_START_ICV_LEN_LSB                                                   53
597*5113495bSYour Name #define TX_MPDU_START_ICV_LEN_MSB                                                   57
598*5113495bSYour Name #define TX_MPDU_START_ICV_LEN_MASK                                                  0x03e0000000000000
599*5113495bSYour Name 
600*5113495bSYour Name 
601*5113495bSYour Name /* Description		VHT_CONTROL_OFFSET
602*5113495bSYour Name 
603*5113495bSYour Name 			Field only valid when vht_control_present is set.
604*5113495bSYour Name 
605*5113495bSYour Name 			Field filled in by TXOLE, used by TXPCU
606*5113495bSYour Name 
607*5113495bSYour Name 			The starting byte number of the VHT control field in the
608*5113495bSYour Name 			 header
609*5113495bSYour Name 			<legal all>
610*5113495bSYour Name */
611*5113495bSYour Name 
612*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_OFFSET_OFFSET                                     0x0000000000000018
613*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_OFFSET_LSB                                        58
614*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_OFFSET_MSB                                        63
615*5113495bSYour Name #define TX_MPDU_START_VHT_CONTROL_OFFSET_MASK                                       0xfc00000000000000
616*5113495bSYour Name 
617*5113495bSYour Name 
618*5113495bSYour Name /* Description		MPDU_TYPE
619*5113495bSYour Name 
620*5113495bSYour Name 			Indicates the type of MPDU that OLE will generate:
621*5113495bSYour Name 
622*5113495bSYour Name 			<enum 0    mpdu_type_basic> This MPDU is not in the A-MSDU
623*5113495bSYour Name 			 format (meaning there is no A-MSDU delimeter present) if
624*5113495bSYour Name 			 there is only 1 MSDU in the MPDU. When there are multiple
625*5113495bSYour Name 			 MSDUs in the MPDU, there is no choice, and the MSDUs within
626*5113495bSYour Name 			 the MPDU shall all have A-MSDU delimiters in front of them.
627*5113495bSYour Name 
628*5113495bSYour Name 			<enum 1    mpdu_type_amsdu> The MSDUs within the MPDU will
629*5113495bSYour Name 			 all have to be in the A-MSDU format, even if there is just
630*5113495bSYour Name 			 a single MSDU embedded in the MPDU. In other words, there
631*5113495bSYour Name 			 is always an A-MSDU delimiter in front of the MSDU(s) in
632*5113495bSYour Name 			 the MPDU.
633*5113495bSYour Name 			<legal all>
634*5113495bSYour Name */
635*5113495bSYour Name 
636*5113495bSYour Name #define TX_MPDU_START_MPDU_TYPE_OFFSET                                              0x0000000000000020
637*5113495bSYour Name #define TX_MPDU_START_MPDU_TYPE_LSB                                                 0
638*5113495bSYour Name #define TX_MPDU_START_MPDU_TYPE_MSB                                                 0
639*5113495bSYour Name #define TX_MPDU_START_MPDU_TYPE_MASK                                                0x0000000000000001
640*5113495bSYour Name 
641*5113495bSYour Name 
642*5113495bSYour Name /* Description		TRANSMIT_BW_RESTRICTION
643*5113495bSYour Name 
644*5113495bSYour Name 			Consumer: TXPCU
645*5113495bSYour Name 			Producer: TXDMA
646*5113495bSYour Name 
647*5113495bSYour Name 			1'b0: This is a normal frame and there are no restrictions
648*5113495bSYour Name 			 on the BW that this frame can be transmitted on.
649*5113495bSYour Name 
650*5113495bSYour Name 			1'b1: This MPDU is only allowed to be transmitted at certain
651*5113495bSYour Name 			 BWs. The one and only allowed BW is indicated in field
652*5113495bSYour Name 			allowed_transmit_bw
653*5113495bSYour Name 			When TXPCU has made a BW selection and then encounters this
654*5113495bSYour Name 			 frame, the frame will be dropped and TXPCU will continue
655*5113495bSYour Name 			 transmitting the next frame (assuming there is no BW restriction
656*5113495bSYour Name 			 on that one)
657*5113495bSYour Name 			<legal all>
658*5113495bSYour Name */
659*5113495bSYour Name 
660*5113495bSYour Name #define TX_MPDU_START_TRANSMIT_BW_RESTRICTION_OFFSET                                0x0000000000000020
661*5113495bSYour Name #define TX_MPDU_START_TRANSMIT_BW_RESTRICTION_LSB                                   1
662*5113495bSYour Name #define TX_MPDU_START_TRANSMIT_BW_RESTRICTION_MSB                                   1
663*5113495bSYour Name #define TX_MPDU_START_TRANSMIT_BW_RESTRICTION_MASK                                  0x0000000000000002
664*5113495bSYour Name 
665*5113495bSYour Name 
666*5113495bSYour Name /* Description		ALLOWED_TRANSMIT_BW
667*5113495bSYour Name 
668*5113495bSYour Name 			Consumer: TXPCU
669*5113495bSYour Name 			Producer: TXDMA
670*5113495bSYour Name 
671*5113495bSYour Name 			Field only valid when transmit_bw_restriction is set
672*5113495bSYour Name 
673*5113495bSYour Name 			TXDMA gets this from the three or four upper bits of the
674*5113495bSYour Name 			 "Sw_buffer_cookie" field from the TX_MPDU_DETAILS STRUCT
675*5113495bSYour Name 
676*5113495bSYour Name 
677*5113495bSYour Name 			In case of NON punctured transmission:
678*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b000: 20 MHz TX only
679*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b001: 40 MHz TX only
680*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b010: 80 MHz TX only
681*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b011: 160 MHz TX only
682*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b100: 240 MHz TX only
683*5113495bSYour Name 			allowed_transmit_bw[2:0] = 3'b101: 320 MHz TX only
684*5113495bSYour Name 			allowed_transmit_bw[2:1] = 2'b11: reserved
685*5113495bSYour Name 
686*5113495bSYour Name 			In case of punctured transmission:
687*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0000: pattern 0 only
688*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0001: pattern 1 only
689*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0010: pattern 2 only
690*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0011: pattern 3 only
691*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0100: pattern 4 only
692*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0101: pattern 5 only
693*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0110: pattern 6 only
694*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b0111: pattern 7 only
695*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b1000: pattern 8 only
696*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b1001: pattern 9 only
697*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b1010: pattern 10 only
698*5113495bSYour Name 			allowed_transmit_bw[3:0] = 4'b1011: pattern 11 only
699*5113495bSYour Name 			allowed_transmit_bw[3:2] = 2'b11: reserved
700*5113495bSYour Name 
701*5113495bSYour Name 			Note: a punctured transmission is indicated by the presence
702*5113495bSYour Name 			 of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
703*5113495bSYour Name 
704*5113495bSYour Name 			<legal 0-11>
705*5113495bSYour Name */
706*5113495bSYour Name 
707*5113495bSYour Name #define TX_MPDU_START_ALLOWED_TRANSMIT_BW_OFFSET                                    0x0000000000000020
708*5113495bSYour Name #define TX_MPDU_START_ALLOWED_TRANSMIT_BW_LSB                                       2
709*5113495bSYour Name #define TX_MPDU_START_ALLOWED_TRANSMIT_BW_MSB                                       5
710*5113495bSYour Name #define TX_MPDU_START_ALLOWED_TRANSMIT_BW_MASK                                      0x000000000000003c
711*5113495bSYour Name 
712*5113495bSYour Name 
713*5113495bSYour Name /* Description		TX_NOTIFY_FRAME
714*5113495bSYour Name 
715*5113495bSYour Name 			Consumer: TQM/PDG/TXOLE
716*5113495bSYour Name 			Producer: FW/SW
717*5113495bSYour Name 
718*5113495bSYour Name 			When clear, this frame does not require any special handling.
719*5113495bSYour Name 
720*5113495bSYour Name 
721*5113495bSYour Name 			When set, this MPDU contains an MSDU with the 'FW_tx_notify_frame'
722*5113495bSYour Name 			field set.
723*5113495bSYour Name 			This means this MPDU is a special frame that requires special
724*5113495bSYour Name 			 handling in TQM.
725*5113495bSYour Name 
726*5113495bSYour Name 			Note that FW/SW shall always set the amsdu_not_allowed bit
727*5113495bSYour Name 			 in 'TX_MSDU_DETAILS' for any notify frame.
728*5113495bSYour Name 
729*5113495bSYour Name 			<enum 0 NO_TX_NOTIFY> Not a notify frame
730*5113495bSYour Name 			<enum 1 TX_HARD_NOTIFY>
731*5113495bSYour Name 			<enum 2 TX_SOFT_NOTIFY>
732*5113495bSYour Name 			<enum 3 TX_SEMI_HARD_NOTIFY>
733*5113495bSYour Name 			<enum 4 TX_SEMI_HARD_NOTIFY_CURR_RATE> Rate cannot be overridden
734*5113495bSYour Name 			 by PDG
735*5113495bSYour Name 			<legal 0-4>
736*5113495bSYour Name */
737*5113495bSYour Name 
738*5113495bSYour Name #define TX_MPDU_START_TX_NOTIFY_FRAME_OFFSET                                        0x0000000000000020
739*5113495bSYour Name #define TX_MPDU_START_TX_NOTIFY_FRAME_LSB                                           6
740*5113495bSYour Name #define TX_MPDU_START_TX_NOTIFY_FRAME_MSB                                           8
741*5113495bSYour Name #define TX_MPDU_START_TX_NOTIFY_FRAME_MASK                                          0x00000000000001c0
742*5113495bSYour Name 
743*5113495bSYour Name 
744*5113495bSYour Name /* Description		RESERVED_8A
745*5113495bSYour Name 
746*5113495bSYour Name 			Bit 9: self_gen:
747*5113495bSYour Name 
748*5113495bSYour Name 			Field only used in the MAC-flexibility feature in TXPCU
749*5113495bSYour Name 			and PHY microcode
750*5113495bSYour Name 
751*5113495bSYour Name 			0: Indicates a normal data MPDU
752*5113495bSYour Name 			1: Indicates a self-gen MPDU
753*5113495bSYour Name 
754*5113495bSYour Name 			<legal 0-1>
755*5113495bSYour Name */
756*5113495bSYour Name 
757*5113495bSYour Name #define TX_MPDU_START_RESERVED_8A_OFFSET                                            0x0000000000000020
758*5113495bSYour Name #define TX_MPDU_START_RESERVED_8A_LSB                                               9
759*5113495bSYour Name #define TX_MPDU_START_RESERVED_8A_MSB                                               31
760*5113495bSYour Name #define TX_MPDU_START_RESERVED_8A_MASK                                              0x00000000fffffe00
761*5113495bSYour Name 
762*5113495bSYour Name 
763*5113495bSYour Name /* Description		TLV64_PADDING
764*5113495bSYour Name 
765*5113495bSYour Name 			Automatic DWORD padding inserted while converting TLV32
766*5113495bSYour Name 			to TLV64 for 64 bit ARCH
767*5113495bSYour Name 			<legal 0>
768*5113495bSYour Name */
769*5113495bSYour Name 
770*5113495bSYour Name #define TX_MPDU_START_TLV64_PADDING_OFFSET                                          0x0000000000000020
771*5113495bSYour Name #define TX_MPDU_START_TLV64_PADDING_LSB                                             32
772*5113495bSYour Name #define TX_MPDU_START_TLV64_PADDING_MSB                                             63
773*5113495bSYour Name #define TX_MPDU_START_TLV64_PADDING_MASK                                            0xffffffff00000000
774*5113495bSYour Name 
775*5113495bSYour Name 
776*5113495bSYour Name 
777*5113495bSYour Name #endif   // TX_MPDU_START
778