1 /* 2 * Copyright (c) 2016-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 _TX_RATE_STATS_INFO_H_ 20 #define _TX_RATE_STATS_INFO_H_ 21 #if !defined(__ASSEMBLER__) 22 #endif 23 24 25 // ################ START SUMMARY ################# 26 // 27 // Dword Fields 28 // 0 tx_rate_stats_info_valid[0], transmit_bw[2:1], transmit_pkt_type[6:3], transmit_stbc[7], transmit_ldpc[8], transmit_sgi[10:9], transmit_mcs[14:11], ofdma_transmission[15], tones_in_ru[27:16], reserved_0a[31:28] 29 // 1 tsf_directly_after_ppdu_transmission[31:0] 30 // 31 // ################ END SUMMARY ################# 32 33 #define NUM_OF_DWORDS_TX_RATE_STATS_INFO 2 34 35 struct tx_rate_stats_info { 36 uint32_t tx_rate_stats_info_valid : 1, //[0] 37 transmit_bw : 2, //[2:1] 38 transmit_pkt_type : 4, //[6:3] 39 transmit_stbc : 1, //[7] 40 transmit_ldpc : 1, //[8] 41 transmit_sgi : 2, //[10:9] 42 transmit_mcs : 4, //[14:11] 43 ofdma_transmission : 1, //[15] 44 tones_in_ru : 12, //[27:16] 45 reserved_0a : 4; //[31:28] 46 uint32_t tsf_directly_after_ppdu_transmission: 32; //[31:0] 47 }; 48 49 /* 50 51 tx_rate_stats_info_valid 52 53 When set all other fields in this STRUCT contain valid 54 info. 55 56 57 58 59 <legal all> 60 61 transmit_bw 62 63 Field only valid when Tx_rate_stats_info_valid is set 64 65 66 67 Indicates the BW of the upcoming transmission that shall 68 likely start in about 3 -4 us on the medium 69 70 71 72 <enum 0 transmit_bw_20_MHz> 73 74 <enum 1 transmit_bw_40_MHz> 75 76 <enum 2 transmit_bw_80_MHz> 77 78 <enum 3 transmit_bw_160_MHz> 79 80 81 82 <legal all> 83 84 transmit_pkt_type 85 86 Field only valid when Tx_rate_stats_info_valid is set 87 88 89 90 Field filled in by PDG. 91 92 Not valid when in SW transmit mode 93 94 95 96 The packet type 97 98 <enum 0 dot11a>802.11a PPDU type 99 100 <enum 1 dot11b>802.11b PPDU type 101 102 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 103 104 <enum 3 dot11ac>802.11ac PPDU type 105 106 <enum 4 dot11ax>802.11ax PPDU type 107 108 transmit_stbc 109 110 Field only valid when Tx_rate_stats_info_valid is set 111 112 113 114 Field filled in by PDG. 115 116 Not valid when in SW transmit mode 117 118 119 120 When set, STBC transmission rate was used. 121 122 transmit_ldpc 123 124 Field only valid when Tx_rate_stats_info_valid is set 125 126 127 128 Field filled in by PDG. 129 130 Not valid when in SW transmit mode 131 132 133 134 When set, use LDPC transmission rates 135 136 transmit_sgi 137 138 Field only valid when Tx_rate_stats_info_valid is set 139 140 141 142 Field filled in by PDG. 143 144 Not valid when in SW transmit mode 145 146 147 148 <enum 0 0_8_us_sgi > Legacy normal GI. Can also be 149 used for HE 150 151 <enum 1 0_4_us_sgi > Legacy short GI. Can also be 152 used for HE 153 154 <enum 2 1_6_us_sgi > HE related GI 155 156 <enum 3 3_2_us_sgi > HE related GI 157 158 <legal 0 - 3> 159 160 transmit_mcs 161 162 Field only valid when Tx_rate_stats_info_valid is set 163 164 165 166 Field filled in by PDG. 167 168 Not valid when in SW transmit mode 169 170 171 172 For details, refer to MCS_TYPE description 173 174 <legal all> 175 176 ofdma_transmission 177 178 Field only valid when Tx_rate_stats_info_valid is set 179 180 181 182 Field filled in by PDG. 183 184 185 186 Set when the transmission was an OFDMA transmission (DL 187 or UL). 188 189 <legal all> 190 191 tones_in_ru 192 193 Field only valid when Tx_rate_stats_info_valid is set 194 195 196 197 Field filled in by PDG. 198 199 Not valid when in SW transmit mode 200 201 202 203 The number of tones in the RU used. 204 205 <legal all> 206 207 reserved_0a 208 209 <legal 0> 210 211 tsf_directly_after_ppdu_transmission 212 213 Field only valid when Tx_rate_stats_info_valid is set 214 215 216 217 Lower 32 bits of the TSF, snapshot of this value when 218 transmission of the PPDU containing the frame finished. 219 220 <legal all> 221 */ 222 223 224 /* Description TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID 225 226 When set all other fields in this STRUCT contain valid 227 info. 228 229 230 231 232 <legal all> 233 */ 234 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000000 235 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_LSB 0 236 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_MASK 0x00000001 237 238 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_BW 239 240 Field only valid when Tx_rate_stats_info_valid is set 241 242 243 244 Indicates the BW of the upcoming transmission that shall 245 likely start in about 3 -4 us on the medium 246 247 248 249 <enum 0 transmit_bw_20_MHz> 250 251 <enum 1 transmit_bw_40_MHz> 252 253 <enum 2 transmit_bw_80_MHz> 254 255 <enum 3 transmit_bw_160_MHz> 256 257 258 259 <legal all> 260 */ 261 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_OFFSET 0x00000000 262 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_LSB 1 263 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_MASK 0x00000006 264 265 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE 266 267 Field only valid when Tx_rate_stats_info_valid is set 268 269 270 271 Field filled in by PDG. 272 273 Not valid when in SW transmit mode 274 275 276 277 The packet type 278 279 <enum 0 dot11a>802.11a PPDU type 280 281 <enum 1 dot11b>802.11b PPDU type 282 283 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 284 285 <enum 3 dot11ac>802.11ac PPDU type 286 287 <enum 4 dot11ax>802.11ax PPDU type 288 */ 289 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_OFFSET 0x00000000 290 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_LSB 3 291 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_MASK 0x00000078 292 293 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_STBC 294 295 Field only valid when Tx_rate_stats_info_valid is set 296 297 298 299 Field filled in by PDG. 300 301 Not valid when in SW transmit mode 302 303 304 305 When set, STBC transmission rate was used. 306 */ 307 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_OFFSET 0x00000000 308 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_LSB 7 309 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_MASK 0x00000080 310 311 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_LDPC 312 313 Field only valid when Tx_rate_stats_info_valid is set 314 315 316 317 Field filled in by PDG. 318 319 Not valid when in SW transmit mode 320 321 322 323 When set, use LDPC transmission rates 324 */ 325 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_OFFSET 0x00000000 326 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_LSB 8 327 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_MASK 0x00000100 328 329 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_SGI 330 331 Field only valid when Tx_rate_stats_info_valid is set 332 333 334 335 Field filled in by PDG. 336 337 Not valid when in SW transmit mode 338 339 340 341 <enum 0 0_8_us_sgi > Legacy normal GI. Can also be 342 used for HE 343 344 <enum 1 0_4_us_sgi > Legacy short GI. Can also be 345 used for HE 346 347 <enum 2 1_6_us_sgi > HE related GI 348 349 <enum 3 3_2_us_sgi > HE related GI 350 351 <legal 0 - 3> 352 */ 353 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_OFFSET 0x00000000 354 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_LSB 9 355 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_MASK 0x00000600 356 357 /* Description TX_RATE_STATS_INFO_0_TRANSMIT_MCS 358 359 Field only valid when Tx_rate_stats_info_valid is set 360 361 362 363 Field filled in by PDG. 364 365 Not valid when in SW transmit mode 366 367 368 369 For details, refer to MCS_TYPE description 370 371 <legal all> 372 */ 373 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_OFFSET 0x00000000 374 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_LSB 11 375 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_MASK 0x00007800 376 377 /* Description TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION 378 379 Field only valid when Tx_rate_stats_info_valid is set 380 381 382 383 Field filled in by PDG. 384 385 386 387 Set when the transmission was an OFDMA transmission (DL 388 or UL). 389 390 <legal all> 391 */ 392 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_OFFSET 0x00000000 393 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_LSB 15 394 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_MASK 0x00008000 395 396 /* Description TX_RATE_STATS_INFO_0_TONES_IN_RU 397 398 Field only valid when Tx_rate_stats_info_valid is set 399 400 401 402 Field filled in by PDG. 403 404 Not valid when in SW transmit mode 405 406 407 408 The number of tones in the RU used. 409 410 <legal all> 411 */ 412 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_OFFSET 0x00000000 413 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_LSB 16 414 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_MASK 0x0fff0000 415 416 /* Description TX_RATE_STATS_INFO_0_RESERVED_0A 417 418 <legal 0> 419 */ 420 #define TX_RATE_STATS_INFO_0_RESERVED_0A_OFFSET 0x00000000 421 #define TX_RATE_STATS_INFO_0_RESERVED_0A_LSB 28 422 #define TX_RATE_STATS_INFO_0_RESERVED_0A_MASK 0xf0000000 423 424 /* Description TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION 425 426 Field only valid when Tx_rate_stats_info_valid is set 427 428 429 430 Lower 32 bits of the TSF, snapshot of this value when 431 transmission of the PPDU containing the frame finished. 432 433 <legal all> 434 */ 435 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_OFFSET 0x00000004 436 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_LSB 0 437 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_MASK 0xffffffff 438 439 440 #endif // _TX_RATE_STATS_INFO_H_ 441