/* * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _RX_PPDU_ACK_REPORT_H_ #define _RX_PPDU_ACK_REPORT_H_ #if !defined(__ASSEMBLER__) #endif #include "ack_report.h" #define NUM_OF_DWORDS_RX_PPDU_ACK_REPORT 2 #define NUM_OF_QWORDS_RX_PPDU_ACK_REPORT 1 struct rx_ppdu_ack_report { #ifndef WIFI_BIT_ORDER_BIG_ENDIAN struct ack_report ack_report_details; uint32_t tlv64_padding : 32; // [31:0] #else struct ack_report ack_report_details; uint32_t tlv64_padding : 32; // [31:0] #endif }; /* Description ACK_REPORT_DETAILS Info indicating why the received frame needed a SIFS response. */ /* Description SELFGEN_RESPONSE_REASON Field that indicates why the received frame needs a response in SIFS time. The possible responses are listed in order. Qboost trigger received PSPOLL trigger received Unscheduled APSD trigger received the CBF frame needs to be send as a result of NDP or BRPOLL 11ax trigger received for this device 11ax wildcardtrigger has been received 11ax wildcard trigger for unassociated STAs has been received EHT R1 trigger received for this device Ranging NDP + LMR need to be sent in response to ranging NDPA + NDP */ #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_LSB 0 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_MSB 3 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_MASK 0x000000000000000f /* Description AX_TRIGGER_TYPE Field Only valid when selfgen_response_reason is an 11ax related trigger The 11AX trigger type/ trigger number: It identifies which trigger was received. */ #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_LSB 4 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_MSB 7 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_MASK 0x00000000000000f0 /* Description SR_PPDU Field only valid with SRP Responder support Indicates if the received frame was sent using SRP as indicated by the 'SR PPDU' bit in the 'CAS Control' in the 'HE A-Control' in one of the MPDUs received */ #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_LSB 8 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_MSB 8 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_MASK 0x0000000000000100 /* Description RESERVED */ #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_LSB 9 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_MSB 15 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_MASK 0x000000000000fe00 /* Description FRAME_CONTROL Field not valid when selfgen_response_reason is MU_UL_response_to_response For SU receptions: frame control field of the received frame In 11ah Mode of Operation, for non-NDP frames the BW information is extracted from Frame Control fields [11:8]. Decode is as follows Bits[11] - Dynamic/Static Bits[10:8] - Channel BW */ #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_LSB 16 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_MSB 31 #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_MASK 0x00000000ffff0000 /* Description TLV64_PADDING Automatic DWORD padding inserted while converting TLV32 to TLV64 for 64 bit ARCH */ #define RX_PPDU_ACK_REPORT_TLV64_PADDING_OFFSET 0x0000000000000000 #define RX_PPDU_ACK_REPORT_TLV64_PADDING_LSB 32 #define RX_PPDU_ACK_REPORT_TLV64_PADDING_MSB 63 #define RX_PPDU_ACK_REPORT_TLV64_PADDING_MASK 0xffffffff00000000 #endif // RX_PPDU_ACK_REPORT