1 2 /* Copyright (c) 2022, 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 18 19 20 21 22 23 24 25 26 #ifndef _TX_RATE_STATS_INFO_H_ 27 #define _TX_RATE_STATS_INFO_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #define NUM_OF_DWORDS_TX_RATE_STATS_INFO 2 32 33 34 struct tx_rate_stats_info { 35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 36 uint32_t tx_rate_stats_info_valid : 1, // [0:0] 37 transmit_bw : 3, // [3:1] 38 transmit_pkt_type : 4, // [7:4] 39 transmit_stbc : 1, // [8:8] 40 transmit_ldpc : 1, // [9:9] 41 transmit_sgi : 2, // [11:10] 42 transmit_mcs : 4, // [15:12] 43 ofdma_transmission : 1, // [16:16] 44 tones_in_ru : 12, // [28:17] 45 reserved_0a : 3; // [31:29] 46 uint32_t ppdu_transmission_tsf : 32; // [31:0] 47 #else 48 uint32_t reserved_0a : 3, // [31:29] 49 tones_in_ru : 12, // [28:17] 50 ofdma_transmission : 1, // [16:16] 51 transmit_mcs : 4, // [15:12] 52 transmit_sgi : 2, // [11:10] 53 transmit_ldpc : 1, // [9:9] 54 transmit_stbc : 1, // [8:8] 55 transmit_pkt_type : 4, // [7:4] 56 transmit_bw : 3, // [3:1] 57 tx_rate_stats_info_valid : 1; // [0:0] 58 uint32_t ppdu_transmission_tsf : 32; // [31:0] 59 #endif 60 }; 61 62 63 /* Description TX_RATE_STATS_INFO_VALID 64 65 When set all other fields in this STRUCT contain valid info. 66 67 68 When clear, none of the other fields contain valid info. 69 70 <legal all> 71 */ 72 73 #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000000 74 #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_LSB 0 75 #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_MSB 0 76 #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_MASK 0x00000001 77 78 79 /* Description TRANSMIT_BW 80 81 Field only valid when Tx_rate_stats_info_valid is set 82 83 Indicates the BW of the upcoming transmission that shall 84 likely start in about 3 -4 us on the medium 85 86 <enum 0 20_mhz>20 Mhz BW 87 <enum 1 40_mhz>40 Mhz BW 88 <enum 2 80_mhz>80 Mhz BW 89 <enum 3 160_mhz>160 Mhz BW 90 <enum 4 320_mhz>320 Mhz BW 91 <enum 5 240_mhz>240 Mhz BW 92 */ 93 94 #define TX_RATE_STATS_INFO_TRANSMIT_BW_OFFSET 0x00000000 95 #define TX_RATE_STATS_INFO_TRANSMIT_BW_LSB 1 96 #define TX_RATE_STATS_INFO_TRANSMIT_BW_MSB 3 97 #define TX_RATE_STATS_INFO_TRANSMIT_BW_MASK 0x0000000e 98 99 100 /* Description TRANSMIT_PKT_TYPE 101 102 Field only valid when Tx_rate_stats_info_valid is set 103 104 Field filled in by PDG. 105 Not valid when in SW transmit mode 106 107 The packet type 108 <enum 0 dot11a>802.11a PPDU type 109 <enum 1 dot11b>802.11b PPDU type 110 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 111 <enum 3 dot11ac>802.11ac PPDU type 112 <enum 4 dot11ax>802.11ax PPDU type 113 <enum 5 dot11ba>802.11ba (WUR) PPDU type 114 <enum 6 dot11be>802.11be PPDU type 115 <enum 7 dot11az>802.11az (ranging) PPDU type 116 <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported 117 & aborted) 118 */ 119 120 #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_OFFSET 0x00000000 121 #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_LSB 4 122 #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_MSB 7 123 #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_MASK 0x000000f0 124 125 126 /* Description TRANSMIT_STBC 127 128 Field only valid when Tx_rate_stats_info_valid is set 129 130 Field filled in by PDG. 131 Not valid when in SW transmit mode 132 133 When set, STBC transmission rate was used. 134 */ 135 136 #define TX_RATE_STATS_INFO_TRANSMIT_STBC_OFFSET 0x00000000 137 #define TX_RATE_STATS_INFO_TRANSMIT_STBC_LSB 8 138 #define TX_RATE_STATS_INFO_TRANSMIT_STBC_MSB 8 139 #define TX_RATE_STATS_INFO_TRANSMIT_STBC_MASK 0x00000100 140 141 142 /* Description TRANSMIT_LDPC 143 144 Field only valid when Tx_rate_stats_info_valid is set 145 146 Field filled in by PDG. 147 Not valid when in SW transmit mode 148 149 When set, use LDPC transmission rates 150 */ 151 152 #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_OFFSET 0x00000000 153 #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_LSB 9 154 #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_MSB 9 155 #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_MASK 0x00000200 156 157 158 /* Description TRANSMIT_SGI 159 160 Field only valid when Tx_rate_stats_info_valid is set 161 162 Field filled in by PDG. 163 Not valid when in SW transmit mode 164 165 Specify the right GI for HE-Ranging NDPs (11az)/Short NDP. 166 167 168 <enum 0 0_8_us_sgi > Legacy normal GI. Can also be used 169 for HE 170 <enum 1 0_4_us_sgi > Legacy short GI. Can also be used 171 for HE 172 <enum 2 1_6_us_sgi > HE related GI 173 <enum 3 3_2_us_sgi > HE related GI 174 <legal 0 - 3> 175 */ 176 177 #define TX_RATE_STATS_INFO_TRANSMIT_SGI_OFFSET 0x00000000 178 #define TX_RATE_STATS_INFO_TRANSMIT_SGI_LSB 10 179 #define TX_RATE_STATS_INFO_TRANSMIT_SGI_MSB 11 180 #define TX_RATE_STATS_INFO_TRANSMIT_SGI_MASK 0x00000c00 181 182 183 /* Description TRANSMIT_MCS 184 185 Field only valid when Tx_rate_stats_info_valid is set 186 187 Field filled in by PDG. 188 Not valid when in SW transmit mode 189 190 For details, refer to MCS_TYPE description 191 <legal all> 192 */ 193 194 #define TX_RATE_STATS_INFO_TRANSMIT_MCS_OFFSET 0x00000000 195 #define TX_RATE_STATS_INFO_TRANSMIT_MCS_LSB 12 196 #define TX_RATE_STATS_INFO_TRANSMIT_MCS_MSB 15 197 #define TX_RATE_STATS_INFO_TRANSMIT_MCS_MASK 0x0000f000 198 199 200 /* Description OFDMA_TRANSMISSION 201 202 Field only valid when Tx_rate_stats_info_valid is set 203 204 Field filled in by PDG. 205 206 Set when the transmission was an OFDMA transmission (DL 207 or UL). 208 <legal all> 209 */ 210 211 #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_OFFSET 0x00000000 212 #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_LSB 16 213 #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_MSB 16 214 #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_MASK 0x00010000 215 216 217 /* Description TONES_IN_RU 218 219 Field only valid when Tx_rate_stats_info_valid is set 220 221 Field filled in by PDG. 222 Not valid when in SW transmit mode 223 224 The number of tones in the RU used. 225 <legal all> 226 */ 227 228 #define TX_RATE_STATS_INFO_TONES_IN_RU_OFFSET 0x00000000 229 #define TX_RATE_STATS_INFO_TONES_IN_RU_LSB 17 230 #define TX_RATE_STATS_INFO_TONES_IN_RU_MSB 28 231 #define TX_RATE_STATS_INFO_TONES_IN_RU_MASK 0x1ffe0000 232 233 234 /* Description RESERVED_0A 235 236 <legal 0> 237 */ 238 239 #define TX_RATE_STATS_INFO_RESERVED_0A_OFFSET 0x00000000 240 #define TX_RATE_STATS_INFO_RESERVED_0A_LSB 29 241 #define TX_RATE_STATS_INFO_RESERVED_0A_MSB 31 242 #define TX_RATE_STATS_INFO_RESERVED_0A_MASK 0xe0000000 243 244 245 /* Description PPDU_TRANSMISSION_TSF 246 247 Field only valid when Tx_rate_stats_info_valid is set 248 249 Based on a HWSCH configuration register setting, this field 250 either contains: 251 252 Lower 32 bits of the TSF, snapshot of this value when transmission 253 of the PPDU containing the frame finished. 254 OR 255 Lower 32 bits of the TSF, snapshot of this value when transmission 256 of the PPDU containing the frame started 257 258 <legal all> 259 */ 260 261 #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_OFFSET 0x00000004 262 #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_LSB 0 263 #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_MSB 31 264 #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_MASK 0xffffffff 265 266 267 268 #endif // TX_RATE_STATS_INFO 269