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