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