1 /* 2 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _TX_FES_STATUS_USER_RESPONSE_H_ 18 #define _TX_FES_STATUS_USER_RESPONSE_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 #include "phytx_abort_request_info.h" 23 #define NUM_OF_DWORDS_TX_FES_STATUS_USER_RESPONSE 2 24 25 #define NUM_OF_QWORDS_TX_FES_STATUS_USER_RESPONSE 1 26 27 28 struct tx_fes_status_user_response { 29 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 30 uint32_t fes_transmit_result : 4, // [3:0] 31 reserved_0 : 28; // [31:4] 32 struct phytx_abort_request_info phytx_abort_request_info_details; 33 uint16_t reserved_after_struct16 : 16; // [31:16] 34 #else 35 uint32_t reserved_0 : 28, // [31:4] 36 fes_transmit_result : 4; // [3:0] 37 uint32_t reserved_after_struct16 : 16; // [31:16] 38 struct phytx_abort_request_info phytx_abort_request_info_details; 39 #endif 40 }; 41 42 43 /* Description FES_TRANSMIT_RESULT 44 45 Transmit result: 46 47 <enum 0 tx_ok> Successful transmission of entire Frame exchange 48 sequence 49 <enum 1 prot_resp_rx_timeout> 50 No Protection response frame received so timeout is triggered. 51 52 <enum 2 ppdu_resp_rx_timeout> No PPDU response frame received 53 so timeout is triggered. 54 <enum 3 resp_frame_crc_err> Response frame was received 55 with an invalid FCS. 56 <enum 4 SU_Response_type_mismatch> Response frame is received 57 without CRC error but it's not matched with expected SU_Response_type. 58 59 <enum 5 cbf_mimo_ctrl_mismatch> Set if CBF is received without 60 any error but the Nr, Nc, BW, type or token in VHT MIMO 61 control field is not matched with expected values which 62 are specified by TX_FES_SETUP.cbf_* fields. 63 <enum 7 MU_Response_type_mismatch> Response frame is received 64 without CRC error but it's not matched with expected SU_Response_type. 65 66 <enum 8 MU_Response_mpdu_not_valid> For this user, no MPDU 67 was received at all, or all received MPDUs had an FCS error. 68 69 70 <enum 9 MU_UL_not_enough_user_response> An MU UL response 71 reception was expected. That response came but the threshold 72 for number of successful user receptions was not met. 73 NOTE: This e-num will only be used in the TX_FES_STATUS_END 74 TLV... 75 <enum 10 Transmit_data_null_ratio_not_met> transmission 76 was successful and proper responses have been received. 77 But the required ratio between useful MPDU data and null 78 delimiters was not met as specified by field : Fes_continuation_ratio_threshold. 79 The FES (and potentially the SIFS burst) shall be terminated 80 by the SCHeduler 81 NOTE: This e-num will only be used in the TX_FES_STATUS_END 82 TLV... 83 84 <enum 6 TB_ranging_resp_timeout> A TB ranging response was 85 expected for a sounding TF, but the response did not arrive 86 and timeout is triggered. 87 NOTE: This e-num will only be used in the TX_FES_STATUS_END 88 TLV... 89 <enum 11 tb_ranging_resp_mismatch> A TB ranging response 90 was expected for a sounding TF, but the reception did not 91 match the expected response. 92 NOTE: This e-num will only be used in the TX_FES_STATUS_END 93 TLV... 94 95 <legal 0-11> 96 */ 97 98 #define TX_FES_STATUS_USER_RESPONSE_FES_TRANSMIT_RESULT_OFFSET 0x0000000000000000 99 #define TX_FES_STATUS_USER_RESPONSE_FES_TRANSMIT_RESULT_LSB 0 100 #define TX_FES_STATUS_USER_RESPONSE_FES_TRANSMIT_RESULT_MSB 3 101 #define TX_FES_STATUS_USER_RESPONSE_FES_TRANSMIT_RESULT_MASK 0x000000000000000f 102 103 104 /* Description RESERVED_0 105 106 Bits [15:4]: BAR_start_sequence_number: 107 108 Starting sequence number to be overwritten by TXPCU for 109 BAR or MU-BAR Trigger, to be copied from 'MPDU_QUEUE_OVERVIEW' 110 by TXPCU 111 112 Bit [16]: BAR_SSN_overwrite_enable: 113 114 Enable for TXPCU overwrite of the starting sequence number 115 for BAR or MU-BAR Trigger, to be copied from 'TX_QUEUE_EXTENSION' 116 by TXPCU 117 118 <legal 0-8191> 119 */ 120 121 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_0_OFFSET 0x0000000000000000 122 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_0_LSB 4 123 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_0_MSB 31 124 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_0_MASK 0x00000000fffffff0 125 126 127 /* Description PHYTX_ABORT_REQUEST_INFO_DETAILS 128 129 The reason why PHYTX is requesting an abort 130 */ 131 132 133 /* Description PHYTX_ABORT_REASON 134 135 Reason for early termination of TX packet by the PHY 136 137 <enum_type PHYTX_ABORT_ENUM> 138 */ 139 140 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_PHYTX_ABORT_REASON_OFFSET 0x0000000000000000 141 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_PHYTX_ABORT_REASON_LSB 32 142 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_PHYTX_ABORT_REASON_MSB 39 143 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_PHYTX_ABORT_REASON_MASK 0x000000ff00000000 144 145 146 /* Description USER_NUMBER 147 148 For some errors, the user for which this error was detected 149 can be indicated in this field. 150 <legal 0-36> 151 */ 152 153 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_USER_NUMBER_OFFSET 0x0000000000000000 154 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_USER_NUMBER_LSB 40 155 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_USER_NUMBER_MSB 45 156 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_USER_NUMBER_MASK 0x00003f0000000000 157 158 159 /* Description RESERVED 160 161 <legal 0> 162 */ 163 164 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_RESERVED_OFFSET 0x0000000000000000 165 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_RESERVED_LSB 46 166 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_RESERVED_MSB 47 167 #define TX_FES_STATUS_USER_RESPONSE_PHYTX_ABORT_REQUEST_INFO_DETAILS_RESERVED_MASK 0x0000c00000000000 168 169 170 /* Description RESERVED_AFTER_STRUCT16 171 172 <legal 0> 173 */ 174 175 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_AFTER_STRUCT16_OFFSET 0x0000000000000000 176 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_AFTER_STRUCT16_LSB 48 177 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_AFTER_STRUCT16_MSB 63 178 #define TX_FES_STATUS_USER_RESPONSE_RESERVED_AFTER_STRUCT16_MASK 0xffff000000000000 179 180 181 182 #endif // TX_FES_STATUS_USER_RESPONSE 183