xref: /wlan-driver/fw-api/hw/qca6290/v2/rxpcu_ppdu_end_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2017 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _RXPCU_PPDU_END_INFO_H_
20 #define _RXPCU_PPDU_END_INFO_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 #include "phyrx_abort_request_info.h"
25 #include "macrx_abort_request_info.h"
26 
27 // ################ START SUMMARY #################
28 //
29 //	Dword	Fields
30 //	0	wb_timestamp_lower_32[31:0]
31 //	1	wb_timestamp_upper_32[31:0]
32 //	2	rx_antenna[23:0], tx_ht_vht_ack[24], unsupported_mu_nc[25], otp_txbf_disable[26], previous_tlv_corrupted[27], phyrx_abort_request_info_valid[28], macrx_abort_request_info_valid[29], reserved[31:30]
33 //	3	coex_bt_tx_from_start_of_rx[0], coex_bt_tx_after_start_of_rx[1], coex_wan_tx_from_start_of_rx[2], coex_wan_tx_after_start_of_rx[3], coex_wlan_tx_from_start_of_rx[4], coex_wlan_tx_after_start_of_rx[5], mpdu_delimiter_errors_seen[6], ftm_tm[8:7], dialog_token[16:9], follow_up_dialog_token[24:17], bb_captured_channel[25], reserved_3[31:26]
34 //	4	before_mpdu_count_passing_fcs[7:0], before_mpdu_count_failing_fcs[15:8], after_mpdu_count_passing_fcs[23:16], after_mpdu_count_failing_fcs[31:24]
35 //	5	phy_timestamp_tx_lower_32[31:0]
36 //	6	phy_timestamp_tx_upper_32[31:0]
37 //	7	bb_length[15:0], bb_data[16], reserved_7[31:17]
38 //	8	rx_ppdu_duration[23:0], reserved_8[31:24]
39 //	9	ast_index[15:0], ast_index_valid[16], reserved_9[31:17]
40 //	10	struct phyrx_abort_request_info phyrx_abort_request_info_details;
41 //	11	struct macrx_abort_request_info macrx_abort_request_info_details;
42 //	12	rx_ppdu_end_marker[31:0]
43 //
44 // ################ END SUMMARY #################
45 
46 #define NUM_OF_DWORDS_RXPCU_PPDU_END_INFO 13
47 
48 struct rxpcu_ppdu_end_info {
49              uint32_t wb_timestamp_lower_32           : 32; //[31:0]
50              uint32_t wb_timestamp_upper_32           : 32; //[31:0]
51              uint32_t rx_antenna                      : 24, //[23:0]
52                       tx_ht_vht_ack                   :  1, //[24]
53                       unsupported_mu_nc               :  1, //[25]
54                       otp_txbf_disable                :  1, //[26]
55                       previous_tlv_corrupted          :  1, //[27]
56                       phyrx_abort_request_info_valid  :  1, //[28]
57                       macrx_abort_request_info_valid  :  1, //[29]
58                       reserved                        :  2; //[31:30]
59              uint32_t coex_bt_tx_from_start_of_rx     :  1, //[0]
60                       coex_bt_tx_after_start_of_rx    :  1, //[1]
61                       coex_wan_tx_from_start_of_rx    :  1, //[2]
62                       coex_wan_tx_after_start_of_rx   :  1, //[3]
63                       coex_wlan_tx_from_start_of_rx   :  1, //[4]
64                       coex_wlan_tx_after_start_of_rx  :  1, //[5]
65                       mpdu_delimiter_errors_seen      :  1, //[6]
66                       ftm_tm                          :  2, //[8:7]
67                       dialog_token                    :  8, //[16:9]
68                       follow_up_dialog_token          :  8, //[24:17]
69                       bb_captured_channel             :  1, //[25]
70                       reserved_3                      :  6; //[31:26]
71              uint32_t before_mpdu_count_passing_fcs   :  8, //[7:0]
72                       before_mpdu_count_failing_fcs   :  8, //[15:8]
73                       after_mpdu_count_passing_fcs    :  8, //[23:16]
74                       after_mpdu_count_failing_fcs    :  8; //[31:24]
75              uint32_t phy_timestamp_tx_lower_32       : 32; //[31:0]
76              uint32_t phy_timestamp_tx_upper_32       : 32; //[31:0]
77              uint32_t bb_length                       : 16, //[15:0]
78                       bb_data                         :  1, //[16]
79                       reserved_7                      : 15; //[31:17]
80              uint32_t rx_ppdu_duration                : 24, //[23:0]
81                       reserved_8                      :  8; //[31:24]
82              uint32_t ast_index                       : 16, //[15:0]
83                       ast_index_valid                 :  1, //[16]
84                       reserved_9                      : 15; //[31:17]
85     struct            phyrx_abort_request_info                       phyrx_abort_request_info_details;
86     struct            macrx_abort_request_info                       macrx_abort_request_info_details;
87              uint16_t reserved_after_struct16         : 16; //[31:16]
88              uint32_t rx_ppdu_end_marker              : 32; //[31:0]
89 };
90 
91 /*
92 
93 wb_timestamp_lower_32
94 
95 			WLAN/BT timestamp is a 1 usec resolution timestamp which
96 			does not get updated based on receive beacon like TSF.  The
97 			same rules for capturing tsf_timestamp are used to capture
98 			the wb_timestamp. This field represents the lower 32 bits of
99 			the 64-bit timestamp
100 
101 wb_timestamp_upper_32
102 
103 			WLAN/BT timestamp is a 1 usec resolution timestamp which
104 			does not get updated based on receive beacon like TSF.  The
105 			same rules for capturing tsf_timestamp are used to capture
106 			the wb_timestamp. This field represents the upper 32 bits of
107 			the 64-bit timestamp
108 
109 rx_antenna
110 
111 			Receive antenna value ???
112 
113 tx_ht_vht_ack
114 
115 			Indicates that a HT or VHT Ack/BA frame was transmitted
116 			in response to this receive packet.
117 
118 unsupported_mu_nc
119 
120 			Set if MU Nc > 2 in received NDPA.
121 
122 			If this bit is set, even though AID and BSSID are
123 			matched, MAC doesn't send tx_expect_ndp to PHY, because MU
124 			Nc > 2 is not supported in Helium.
125 
126 otp_txbf_disable
127 
128 			Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
129 			set and if RXPU receives directed NDPA frame. Then, RXPCU
130 			should not send TX_EXPECT_NDP TLV to SW but set this bit to
131 			inform SW.
132 
133 previous_tlv_corrupted
134 
135 			When set, the TLV preceding this RXPCU_END_INFO TLV
136 			within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
137 			was received.... Likely due to an abort scenario... If abort
138 			is to blame, see the abort data datastructure for details.
139 
140 			<legal all>
141 
142 phyrx_abort_request_info_valid
143 
144 			When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
145 			RXPCU. The abort fields embedded in this TLV contain valid
146 			info.
147 
148 			<legal all>
149 
150 macrx_abort_request_info_valid
151 
152 			When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
153 			RXPCU. The abort fields embedded in this TLV contain valid
154 			info.
155 
156 			<legal all>
157 
158 reserved
159 
160 			<legal 0>
161 
162 coex_bt_tx_from_start_of_rx
163 
164 			Set when BT TX was ongoing when WLAN RX started
165 
166 coex_bt_tx_after_start_of_rx
167 
168 
169 coex_wan_tx_from_start_of_rx
170 
171 			Set when WAN TX was ongoing when WLAN RX started
172 
173 coex_wan_tx_after_start_of_rx
174 
175 			Set when WAN TX started while WLAN RX was already
176 			ongoing
177 
178 coex_wlan_tx_from_start_of_rx
179 
180 			Set when other WLAN TX was ongoing when WLAN RX started
181 
182 coex_wlan_tx_after_start_of_rx
183 
184 			Set when other WLAN TX started while WLAN RX was already
185 			ongoing
186 
187 mpdu_delimiter_errors_seen
188 
189 			When set, MPDU delimiter errors have been detected
190 			during this PPDU reception
191 
192 ftm_tm
193 
194 			Indicate the timestamp is for the FTM or TM frame
195 
196 
197 
198 			0: non TM or FTM frame
199 
200 			1: FTM frame
201 
202 			2: TM frame
203 
204 			3: reserved
205 
206 			<legal all>
207 
208 dialog_token
209 
210 			The dialog token in the FTM or TM frame. Only valid when
211 			the FTM is set. Clear to 254 for a non-FTM frame
212 
213 			<legal all>
214 
215 follow_up_dialog_token
216 
217 			The follow up dialog token in the FTM or TM frame. Only
218 			valid when the FTM is set. Clear to 0 for a non-FTM frame,
219 			The follow up dialog token in the FTM frame. Only valid when
220 			the FTM is set. Clear to 255 for a non-FTM frame<legal all>
221 
222 bb_captured_channel
223 
224 			Set by RXPCU when the following conditions are met:
225 
226 
227 
228 			Directed (=> unicast) TM or FTM frame has been received
229 			with passing FCS
230 
231 			PHYRX_PKT_END. Location_info_valid is set
232 
233 
234 
235 			<legal all>
236 
237 reserved_3
238 
239 			<legal 0>
240 
241 before_mpdu_count_passing_fcs
242 
243 			Number of MPDUs received in this PPDU that passed the
244 			FCS check before the Coex TX started
245 
246 before_mpdu_count_failing_fcs
247 
248 			Number of MPDUs received in this PPDU that failed the
249 			FCS check before the Coex TX started
250 
251 after_mpdu_count_passing_fcs
252 
253 			Number of MPDUs received in this PPDU that passed the
254 			FCS check after the moment the Coex TX started
255 
256 
257 
258 			(Note: The partially received MPDU when the COEX tx
259 			start event came in falls in the after category)
260 
261 after_mpdu_count_failing_fcs
262 
263 			Number of MPDUs received in this PPDU that failed the
264 			FCS check after the moment the Coex TX started
265 
266 
267 
268 			(Note: The partially received MPDU when the COEX tx
269 			start event came in falls in the after category)
270 
271 phy_timestamp_tx_lower_32
272 
273 			The PHY timestamp in the AMPI of the most recent rising
274 			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
275 			indicates the lower 32 bits of the timestamp
276 
277 phy_timestamp_tx_upper_32
278 
279 			The PHY timestamp in the AMPI of the most recent rising
280 			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
281 			indicates the upper 32 bits of the timestamp
282 
283 bb_length
284 
285 			Indicates the number of bytes of baseband information
286 			for PPDUs where the BB descriptor preamble type is 0x80 to
287 			0xFF which indicates that this is not a normal PPDU but
288 			rather contains baseband debug information.
289 
290 			TODO: Is this still needed ???
291 
292 bb_data
293 
294 			Indicates that BB data associated with this PPDU will
295 			exist in the receive buffer.  The exact contents of this BB
296 			data can be found by decoding the BB TLV in the buffer
297 			associated with the BB data.  See vector_fragment in the
298 			Helium_mac_phy_interface.docx
299 
300 reserved_7
301 
302 			Reserved: HW should fill with 0, FW should ignore.
303 
304 rx_ppdu_duration
305 
306 			The length of this PPDU reception in us
307 
308 reserved_8
309 
310 			<legal 0>
311 
312 ast_index
313 
314 			The AST index of the receive Ack/BA.  This information
315 			is provided from the TXPCU to the RXPCU for receive Ack/BA
316 			for implicit beamforming.
317 
318 			<legal all>
319 
320 ast_index_valid
321 
322 			Indicates that ast_index is valid.  Should only be set
323 			for receive Ack/BA where single stream implicit sounding is
324 			captured.
325 
326 reserved_9
327 
328 			<legal 0>
329 
330 struct phyrx_abort_request_info phyrx_abort_request_info_details
331 
332 			Field only valid when Phyrx_abort_request_info_valid is
333 			set
334 
335 			The reason why PHY generated an abort request
336 
337 struct macrx_abort_request_info macrx_abort_request_info_details
338 
339 			Field only valid when macrx_abort_request_info_valid is
340 			set
341 
342 			The reason why MACRX generated an abort request
343 
344 rx_ppdu_end_marker
345 
346 			Field used by SW to double check that their structure
347 			alignment is in sync with what HW has done.
348 
349 			<legal 0xAABBCCDD>
350 */
351 
352 
353 /* Description		RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32
354 
355 			WLAN/BT timestamp is a 1 usec resolution timestamp which
356 			does not get updated based on receive beacon like TSF.  The
357 			same rules for capturing tsf_timestamp are used to capture
358 			the wb_timestamp. This field represents the lower 32 bits of
359 			the 64-bit timestamp
360 */
361 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_OFFSET           0x00000000
362 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_LSB              0
363 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_MASK             0xffffffff
364 
365 /* Description		RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32
366 
367 			WLAN/BT timestamp is a 1 usec resolution timestamp which
368 			does not get updated based on receive beacon like TSF.  The
369 			same rules for capturing tsf_timestamp are used to capture
370 			the wb_timestamp. This field represents the upper 32 bits of
371 			the 64-bit timestamp
372 */
373 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_OFFSET           0x00000004
374 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_LSB              0
375 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_MASK             0xffffffff
376 
377 /* Description		RXPCU_PPDU_END_INFO_2_RX_ANTENNA
378 
379 			Receive antenna value ???
380 */
381 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_OFFSET                      0x00000008
382 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_LSB                         0
383 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_MASK                        0x00ffffff
384 
385 /* Description		RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK
386 
387 			Indicates that a HT or VHT Ack/BA frame was transmitted
388 			in response to this receive packet.
389 */
390 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_OFFSET                   0x00000008
391 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_LSB                      24
392 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_MASK                     0x01000000
393 
394 /* Description		RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC
395 
396 			Set if MU Nc > 2 in received NDPA.
397 
398 			If this bit is set, even though AID and BSSID are
399 			matched, MAC doesn't send tx_expect_ndp to PHY, because MU
400 			Nc > 2 is not supported in Helium.
401 */
402 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_OFFSET               0x00000008
403 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_LSB                  25
404 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_MASK                 0x02000000
405 
406 /* Description		RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE
407 
408 			Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
409 			set and if RXPU receives directed NDPA frame. Then, RXPCU
410 			should not send TX_EXPECT_NDP TLV to SW but set this bit to
411 			inform SW.
412 */
413 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_OFFSET                0x00000008
414 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_LSB                   26
415 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_MASK                  0x04000000
416 
417 /* Description		RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED
418 
419 			When set, the TLV preceding this RXPCU_END_INFO TLV
420 			within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
421 			was received.... Likely due to an abort scenario... If abort
422 			is to blame, see the abort data datastructure for details.
423 
424 			<legal all>
425 */
426 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_OFFSET          0x00000008
427 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_LSB             27
428 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_MASK            0x08000000
429 
430 /* Description		RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID
431 
432 			When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
433 			RXPCU. The abort fields embedded in this TLV contain valid
434 			info.
435 
436 			<legal all>
437 */
438 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_OFFSET  0x00000008
439 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_LSB     28
440 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_MASK    0x10000000
441 
442 /* Description		RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID
443 
444 			When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
445 			RXPCU. The abort fields embedded in this TLV contain valid
446 			info.
447 
448 			<legal all>
449 */
450 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_OFFSET  0x00000008
451 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_LSB     29
452 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_MASK    0x20000000
453 
454 /* Description		RXPCU_PPDU_END_INFO_2_RESERVED
455 
456 			<legal 0>
457 */
458 #define RXPCU_PPDU_END_INFO_2_RESERVED_OFFSET                        0x00000008
459 #define RXPCU_PPDU_END_INFO_2_RESERVED_LSB                           30
460 #define RXPCU_PPDU_END_INFO_2_RESERVED_MASK                          0xc0000000
461 
462 /* Description		RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX
463 
464 			Set when BT TX was ongoing when WLAN RX started
465 */
466 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_OFFSET     0x0000000c
467 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_LSB        0
468 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_MASK       0x00000001
469 
470 /* Description		RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX
471 
472 */
473 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_OFFSET    0x0000000c
474 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_LSB       1
475 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_MASK      0x00000002
476 
477 /* Description		RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX
478 
479 			Set when WAN TX was ongoing when WLAN RX started
480 */
481 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_OFFSET    0x0000000c
482 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_LSB       2
483 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_MASK      0x00000004
484 
485 /* Description		RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX
486 
487 			Set when WAN TX started while WLAN RX was already
488 			ongoing
489 */
490 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_OFFSET   0x0000000c
491 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_LSB      3
492 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_MASK     0x00000008
493 
494 /* Description		RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX
495 
496 			Set when other WLAN TX was ongoing when WLAN RX started
497 */
498 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_OFFSET   0x0000000c
499 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_LSB      4
500 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_MASK     0x00000010
501 
502 /* Description		RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX
503 
504 			Set when other WLAN TX started while WLAN RX was already
505 			ongoing
506 */
507 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_OFFSET  0x0000000c
508 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_LSB     5
509 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_MASK    0x00000020
510 
511 /* Description		RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN
512 
513 			When set, MPDU delimiter errors have been detected
514 			during this PPDU reception
515 */
516 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_OFFSET      0x0000000c
517 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_LSB         6
518 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_MASK        0x00000040
519 
520 /* Description		RXPCU_PPDU_END_INFO_3_FTM_TM
521 
522 			Indicate the timestamp is for the FTM or TM frame
523 
524 
525 
526 			0: non TM or FTM frame
527 
528 			1: FTM frame
529 
530 			2: TM frame
531 
532 			3: reserved
533 
534 			<legal all>
535 */
536 #define RXPCU_PPDU_END_INFO_3_FTM_TM_OFFSET                          0x0000000c
537 #define RXPCU_PPDU_END_INFO_3_FTM_TM_LSB                             7
538 #define RXPCU_PPDU_END_INFO_3_FTM_TM_MASK                            0x00000180
539 
540 /* Description		RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN
541 
542 			The dialog token in the FTM or TM frame. Only valid when
543 			the FTM is set. Clear to 254 for a non-FTM frame
544 
545 			<legal all>
546 */
547 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_OFFSET                    0x0000000c
548 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_LSB                       9
549 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_MASK                      0x0001fe00
550 
551 /* Description		RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN
552 
553 			The follow up dialog token in the FTM or TM frame. Only
554 			valid when the FTM is set. Clear to 0 for a non-FTM frame,
555 			The follow up dialog token in the FTM frame. Only valid when
556 			the FTM is set. Clear to 255 for a non-FTM frame<legal all>
557 */
558 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_OFFSET          0x0000000c
559 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_LSB             17
560 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_MASK            0x01fe0000
561 
562 /* Description		RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL
563 
564 			Set by RXPCU when the following conditions are met:
565 
566 
567 
568 			Directed (=> unicast) TM or FTM frame has been received
569 			with passing FCS
570 
571 			PHYRX_PKT_END. Location_info_valid is set
572 
573 
574 
575 			<legal all>
576 */
577 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_OFFSET             0x0000000c
578 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_LSB                25
579 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_MASK               0x02000000
580 
581 /* Description		RXPCU_PPDU_END_INFO_3_RESERVED_3
582 
583 			<legal 0>
584 */
585 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_OFFSET                      0x0000000c
586 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_LSB                         26
587 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_MASK                        0xfc000000
588 
589 /* Description		RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS
590 
591 			Number of MPDUs received in this PPDU that passed the
592 			FCS check before the Coex TX started
593 */
594 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_OFFSET   0x00000010
595 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_LSB      0
596 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_MASK     0x000000ff
597 
598 /* Description		RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS
599 
600 			Number of MPDUs received in this PPDU that failed the
601 			FCS check before the Coex TX started
602 */
603 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_OFFSET   0x00000010
604 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_LSB      8
605 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_MASK     0x0000ff00
606 
607 /* Description		RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS
608 
609 			Number of MPDUs received in this PPDU that passed the
610 			FCS check after the moment the Coex TX started
611 
612 
613 
614 			(Note: The partially received MPDU when the COEX tx
615 			start event came in falls in the after category)
616 */
617 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_OFFSET    0x00000010
618 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_LSB       16
619 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_MASK      0x00ff0000
620 
621 /* Description		RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS
622 
623 			Number of MPDUs received in this PPDU that failed the
624 			FCS check after the moment the Coex TX started
625 
626 
627 
628 			(Note: The partially received MPDU when the COEX tx
629 			start event came in falls in the after category)
630 */
631 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_OFFSET    0x00000010
632 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_LSB       24
633 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_MASK      0xff000000
634 
635 /* Description		RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32
636 
637 			The PHY timestamp in the AMPI of the most recent rising
638 			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
639 			indicates the lower 32 bits of the timestamp
640 */
641 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_OFFSET       0x00000014
642 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_LSB          0
643 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_MASK         0xffffffff
644 
645 /* Description		RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32
646 
647 			The PHY timestamp in the AMPI of the most recent rising
648 			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
649 			indicates the upper 32 bits of the timestamp
650 */
651 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_OFFSET       0x00000018
652 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_LSB          0
653 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_MASK         0xffffffff
654 
655 /* Description		RXPCU_PPDU_END_INFO_7_BB_LENGTH
656 
657 			Indicates the number of bytes of baseband information
658 			for PPDUs where the BB descriptor preamble type is 0x80 to
659 			0xFF which indicates that this is not a normal PPDU but
660 			rather contains baseband debug information.
661 
662 			TODO: Is this still needed ???
663 */
664 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_OFFSET                       0x0000001c
665 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_LSB                          0
666 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_MASK                         0x0000ffff
667 
668 /* Description		RXPCU_PPDU_END_INFO_7_BB_DATA
669 
670 			Indicates that BB data associated with this PPDU will
671 			exist in the receive buffer.  The exact contents of this BB
672 			data can be found by decoding the BB TLV in the buffer
673 			associated with the BB data.  See vector_fragment in the
674 			Helium_mac_phy_interface.docx
675 */
676 #define RXPCU_PPDU_END_INFO_7_BB_DATA_OFFSET                         0x0000001c
677 #define RXPCU_PPDU_END_INFO_7_BB_DATA_LSB                            16
678 #define RXPCU_PPDU_END_INFO_7_BB_DATA_MASK                           0x00010000
679 
680 /* Description		RXPCU_PPDU_END_INFO_7_RESERVED_7
681 
682 			Reserved: HW should fill with 0, FW should ignore.
683 */
684 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_OFFSET                      0x0000001c
685 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_LSB                         17
686 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_MASK                        0xfffe0000
687 
688 /* Description		RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION
689 
690 			The length of this PPDU reception in us
691 */
692 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_OFFSET                0x00000020
693 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_LSB                   0
694 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_MASK                  0x00ffffff
695 
696 /* Description		RXPCU_PPDU_END_INFO_8_RESERVED_8
697 
698 			<legal 0>
699 */
700 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_OFFSET                      0x00000020
701 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_LSB                         24
702 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_MASK                        0xff000000
703 
704 /* Description		RXPCU_PPDU_END_INFO_9_AST_INDEX
705 
706 			The AST index of the receive Ack/BA.  This information
707 			is provided from the TXPCU to the RXPCU for receive Ack/BA
708 			for implicit beamforming.
709 
710 			<legal all>
711 */
712 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_OFFSET                       0x00000024
713 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_LSB                          0
714 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_MASK                         0x0000ffff
715 
716 /* Description		RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID
717 
718 			Indicates that ast_index is valid.  Should only be set
719 			for receive Ack/BA where single stream implicit sounding is
720 			captured.
721 */
722 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_OFFSET                 0x00000024
723 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_LSB                    16
724 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_MASK                   0x00010000
725 
726 /* Description		RXPCU_PPDU_END_INFO_9_RESERVED_9
727 
728 			<legal 0>
729 */
730 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_OFFSET                      0x00000024
731 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_LSB                         17
732 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_MASK                        0xfffe0000
733 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x00000028
734 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_LSB 17
735 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff
736 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x0000002c
737 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_LSB 17
738 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff
739 
740 /* Description		RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER
741 
742 			Field used by SW to double check that their structure
743 			alignment is in sync with what HW has done.
744 
745 			<legal 0xAABBCCDD>
746 */
747 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_OFFSET             0x00000030
748 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_LSB                0
749 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_MASK               0xffffffff
750 
751 
752 #endif // _RXPCU_PPDU_END_INFO_H_
753