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 _RECEIVED_RESPONSE_USER_INFO_H_ 18 #define _RECEIVED_RESPONSE_USER_INFO_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 #define NUM_OF_DWORDS_RECEIVED_RESPONSE_USER_INFO 8 23 24 25 struct received_response_user_info { 26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 27 uint32_t mpdu_fcs_pass_count : 12, // [11:0] 28 mpdu_fcs_fail_count : 12, // [23:12] 29 qosnull_frame_count : 4, // [27:24] 30 reserved_0a : 3, // [30:28] 31 user_info_valid : 1; // [31:31] 32 uint32_t null_delimiter_count : 22, // [21:0] 33 reserved_1a : 9, // [30:22] 34 ht_control_valid : 1; // [31:31] 35 uint32_t ht_control : 32; // [31:0] 36 uint32_t qos_control_valid : 16, // [15:0] 37 eosp : 16; // [31:16] 38 uint32_t qos_control_15_8_tid_0 : 8, // [7:0] 39 qos_control_15_8_tid_1 : 8, // [15:8] 40 qos_control_15_8_tid_2 : 8, // [23:16] 41 qos_control_15_8_tid_3 : 8; // [31:24] 42 uint32_t qos_control_15_8_tid_4 : 8, // [7:0] 43 qos_control_15_8_tid_5 : 8, // [15:8] 44 qos_control_15_8_tid_6 : 8, // [23:16] 45 qos_control_15_8_tid_7 : 8; // [31:24] 46 uint32_t qos_control_15_8_tid_8 : 8, // [7:0] 47 qos_control_15_8_tid_9 : 8, // [15:8] 48 qos_control_15_8_tid_10 : 8, // [23:16] 49 qos_control_15_8_tid_11 : 8; // [31:24] 50 uint32_t qos_control_15_8_tid_12 : 8, // [7:0] 51 qos_control_15_8_tid_13 : 8, // [15:8] 52 qos_control_15_8_tid_14 : 8, // [23:16] 53 qos_control_15_8_tid_15 : 8; // [31:24] 54 #else 55 uint32_t user_info_valid : 1, // [31:31] 56 reserved_0a : 3, // [30:28] 57 qosnull_frame_count : 4, // [27:24] 58 mpdu_fcs_fail_count : 12, // [23:12] 59 mpdu_fcs_pass_count : 12; // [11:0] 60 uint32_t ht_control_valid : 1, // [31:31] 61 reserved_1a : 9, // [30:22] 62 null_delimiter_count : 22; // [21:0] 63 uint32_t ht_control : 32; // [31:0] 64 uint32_t eosp : 16, // [31:16] 65 qos_control_valid : 16; // [15:0] 66 uint32_t qos_control_15_8_tid_3 : 8, // [31:24] 67 qos_control_15_8_tid_2 : 8, // [23:16] 68 qos_control_15_8_tid_1 : 8, // [15:8] 69 qos_control_15_8_tid_0 : 8; // [7:0] 70 uint32_t qos_control_15_8_tid_7 : 8, // [31:24] 71 qos_control_15_8_tid_6 : 8, // [23:16] 72 qos_control_15_8_tid_5 : 8, // [15:8] 73 qos_control_15_8_tid_4 : 8; // [7:0] 74 uint32_t qos_control_15_8_tid_11 : 8, // [31:24] 75 qos_control_15_8_tid_10 : 8, // [23:16] 76 qos_control_15_8_tid_9 : 8, // [15:8] 77 qos_control_15_8_tid_8 : 8; // [7:0] 78 uint32_t qos_control_15_8_tid_15 : 8, // [31:24] 79 qos_control_15_8_tid_14 : 8, // [23:16] 80 qos_control_15_8_tid_13 : 8, // [15:8] 81 qos_control_15_8_tid_12 : 8; // [7:0] 82 #endif 83 }; 84 85 86 /* Description MPDU_FCS_PASS_COUNT 87 88 The number of MPDUs received with correct FCS. 89 90 <legal all> 91 */ 92 93 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_PASS_COUNT_OFFSET 0x00000000 94 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_PASS_COUNT_LSB 0 95 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_PASS_COUNT_MSB 11 96 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_PASS_COUNT_MASK 0x00000fff 97 98 99 /* Description MPDU_FCS_FAIL_COUNT 100 101 The number of MPDUs received with wrong FCS. 102 <legal all> 103 */ 104 105 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_FAIL_COUNT_OFFSET 0x00000000 106 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_FAIL_COUNT_LSB 12 107 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_FAIL_COUNT_MSB 23 108 #define RECEIVED_RESPONSE_USER_INFO_MPDU_FCS_FAIL_COUNT_MASK 0x00fff000 109 110 111 /* Description QOSNULL_FRAME_COUNT 112 113 The number of QoSNULL frames received with correct FCS. 114 <legal all> 115 */ 116 117 #define RECEIVED_RESPONSE_USER_INFO_QOSNULL_FRAME_COUNT_OFFSET 0x00000000 118 #define RECEIVED_RESPONSE_USER_INFO_QOSNULL_FRAME_COUNT_LSB 24 119 #define RECEIVED_RESPONSE_USER_INFO_QOSNULL_FRAME_COUNT_MSB 27 120 #define RECEIVED_RESPONSE_USER_INFO_QOSNULL_FRAME_COUNT_MASK 0x0f000000 121 122 123 /* Description RESERVED_0A 124 125 <legal 0> 126 */ 127 128 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_0A_OFFSET 0x00000000 129 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_0A_LSB 28 130 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_0A_MSB 30 131 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_0A_MASK 0x70000000 132 133 134 /* Description USER_INFO_VALID 135 136 When set, this RECEIVED_RESPONSE_USER_INFO STRUCT contains 137 valid information. 138 <legal all> 139 */ 140 141 #define RECEIVED_RESPONSE_USER_INFO_USER_INFO_VALID_OFFSET 0x00000000 142 #define RECEIVED_RESPONSE_USER_INFO_USER_INFO_VALID_LSB 31 143 #define RECEIVED_RESPONSE_USER_INFO_USER_INFO_VALID_MSB 31 144 #define RECEIVED_RESPONSE_USER_INFO_USER_INFO_VALID_MASK 0x80000000 145 146 147 /* Description NULL_DELIMITER_COUNT 148 149 The number of valid, properly formed NULL delimiters received 150 151 <legal all> 152 */ 153 154 #define RECEIVED_RESPONSE_USER_INFO_NULL_DELIMITER_COUNT_OFFSET 0x00000004 155 #define RECEIVED_RESPONSE_USER_INFO_NULL_DELIMITER_COUNT_LSB 0 156 #define RECEIVED_RESPONSE_USER_INFO_NULL_DELIMITER_COUNT_MSB 21 157 #define RECEIVED_RESPONSE_USER_INFO_NULL_DELIMITER_COUNT_MASK 0x003fffff 158 159 160 /* Description RESERVED_1A 161 162 <legal 0> 163 */ 164 165 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_1A_OFFSET 0x00000004 166 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_1A_LSB 22 167 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_1A_MSB 30 168 #define RECEIVED_RESPONSE_USER_INFO_RESERVED_1A_MASK 0x7fc00000 169 170 171 /* Description HT_CONTROL_VALID 172 173 When set, indicates that the received MPDUs included an 174 HT Control field 175 <legal all> 176 */ 177 178 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_VALID_OFFSET 0x00000004 179 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_VALID_LSB 31 180 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_VALID_MSB 31 181 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_VALID_MASK 0x80000000 182 183 184 /* Description HT_CONTROL 185 186 Field only valid if HT_Control_valid is set 187 Received HT Control value 188 189 <legal all> 190 */ 191 192 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_OFFSET 0x00000008 193 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_LSB 0 194 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_MSB 31 195 #define RECEIVED_RESPONSE_USER_INFO_HT_CONTROL_MASK 0xffffffff 196 197 198 /* Description QOS_CONTROL_VALID 199 200 Each bit when set, indicates that the received MPDUs included 201 that TID and the corresponding 'EOSP' bit and 'QoS_Control_15_8_*' 202 field are valid. 203 Bit 0: TID 0 204 ... 205 Bit 15: TID 15 206 <legal all> 207 */ 208 209 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_VALID_OFFSET 0x0000000c 210 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_VALID_LSB 0 211 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_VALID_MSB 15 212 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_VALID_MASK 0x0000ffff 213 214 215 /* Description EOSP 216 217 Each bit only valid if the corresponding bit of QoS_Control_valid 218 is set. 219 220 Received EOSP bit for each TID 221 Bit 0: TID 0 222 ... 223 Bit 15: TID 15 224 <legal all> 225 */ 226 227 #define RECEIVED_RESPONSE_USER_INFO_EOSP_OFFSET 0x0000000c 228 #define RECEIVED_RESPONSE_USER_INFO_EOSP_LSB 16 229 #define RECEIVED_RESPONSE_USER_INFO_EOSP_MSB 31 230 #define RECEIVED_RESPONSE_USER_INFO_EOSP_MASK 0xffff0000 231 232 233 /* Description QOS_CONTROL_15_8_TID_0 234 235 Field only valid if QoS_Control_valid[0] is set. 236 237 Received bits [15:8] of QoS Control for TID 0 238 <legal all> 239 */ 240 241 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_0_OFFSET 0x00000010 242 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_0_LSB 0 243 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_0_MSB 7 244 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_0_MASK 0x000000ff 245 246 247 /* Description QOS_CONTROL_15_8_TID_1 248 249 Field only valid if QoS_Control_valid[1] is set. 250 251 Received bits [15:8] of QoS Control for TID 1 252 <legal all> 253 */ 254 255 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_1_OFFSET 0x00000010 256 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_1_LSB 8 257 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_1_MSB 15 258 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_1_MASK 0x0000ff00 259 260 261 /* Description QOS_CONTROL_15_8_TID_2 262 263 Field only valid if QoS_Control_valid[2] is set. 264 265 Received bits [15:8] of QoS Control for TID 2 266 <legal all> 267 */ 268 269 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_2_OFFSET 0x00000010 270 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_2_LSB 16 271 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_2_MSB 23 272 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_2_MASK 0x00ff0000 273 274 275 /* Description QOS_CONTROL_15_8_TID_3 276 277 Field only valid if QoS_Control_valid[3] is set. 278 279 Received bits [15:8] of QoS Control for TID 3 280 <legal all> 281 */ 282 283 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_3_OFFSET 0x00000010 284 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_3_LSB 24 285 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_3_MSB 31 286 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_3_MASK 0xff000000 287 288 289 /* Description QOS_CONTROL_15_8_TID_4 290 291 Field only valid if QoS_Control_valid[4] is set. 292 293 Received bits [15:8] of QoS Control for TID 4 294 <legal all> 295 */ 296 297 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_4_OFFSET 0x00000014 298 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_4_LSB 0 299 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_4_MSB 7 300 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_4_MASK 0x000000ff 301 302 303 /* Description QOS_CONTROL_15_8_TID_5 304 305 Field only valid if QoS_Control_valid[5] is set. 306 307 Received bits [15:8] of QoS Control for TID 5 308 <legal all> 309 */ 310 311 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_5_OFFSET 0x00000014 312 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_5_LSB 8 313 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_5_MSB 15 314 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_5_MASK 0x0000ff00 315 316 317 /* Description QOS_CONTROL_15_8_TID_6 318 319 Field only valid if QoS_Control_valid[6] is set. 320 321 Received bits [15:8] of QoS Control for TID 6 322 <legal all> 323 */ 324 325 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_6_OFFSET 0x00000014 326 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_6_LSB 16 327 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_6_MSB 23 328 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_6_MASK 0x00ff0000 329 330 331 /* Description QOS_CONTROL_15_8_TID_7 332 333 Field only valid if QoS_Control_valid[7] is set. 334 335 Received bits [15:8] of QoS Control for TID 7 336 <legal all> 337 */ 338 339 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_7_OFFSET 0x00000014 340 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_7_LSB 24 341 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_7_MSB 31 342 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_7_MASK 0xff000000 343 344 345 /* Description QOS_CONTROL_15_8_TID_8 346 347 Field only valid if QoS_Control_valid[8] is set. 348 349 Received bits [15:8] of QoS Control for TID 8 350 <legal all> 351 */ 352 353 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_8_OFFSET 0x00000018 354 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_8_LSB 0 355 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_8_MSB 7 356 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_8_MASK 0x000000ff 357 358 359 /* Description QOS_CONTROL_15_8_TID_9 360 361 Field only valid if QoS_Control_valid[9] is set. 362 363 Received bits [15:8] of QoS Control for TID 9 364 <legal all> 365 */ 366 367 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_9_OFFSET 0x00000018 368 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_9_LSB 8 369 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_9_MSB 15 370 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_9_MASK 0x0000ff00 371 372 373 /* Description QOS_CONTROL_15_8_TID_10 374 375 Field only valid if QoS_Control_valid[10] is set. 376 377 Received bits [15:8] of QoS Control for TID 10 378 <legal all> 379 */ 380 381 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_10_OFFSET 0x00000018 382 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_10_LSB 16 383 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_10_MSB 23 384 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_10_MASK 0x00ff0000 385 386 387 /* Description QOS_CONTROL_15_8_TID_11 388 389 Field only valid if QoS_Control_valid[11] is set. 390 391 Received bits [15:8] of QoS Control for TID 11 392 <legal all> 393 */ 394 395 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_11_OFFSET 0x00000018 396 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_11_LSB 24 397 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_11_MSB 31 398 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_11_MASK 0xff000000 399 400 401 /* Description QOS_CONTROL_15_8_TID_12 402 403 Field only valid if QoS_Control_valid[12] is set. 404 405 Received bits [15:8] of QoS Control for TID 12 406 <legal all> 407 */ 408 409 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_12_OFFSET 0x0000001c 410 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_12_LSB 0 411 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_12_MSB 7 412 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_12_MASK 0x000000ff 413 414 415 /* Description QOS_CONTROL_15_8_TID_13 416 417 Field only valid if QoS_Control_valid[13] is set. 418 419 Received bits [15:8] of QoS Control for TID 13 420 <legal all> 421 */ 422 423 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_13_OFFSET 0x0000001c 424 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_13_LSB 8 425 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_13_MSB 15 426 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_13_MASK 0x0000ff00 427 428 429 /* Description QOS_CONTROL_15_8_TID_14 430 431 Field only valid if QoS_Control_valid[14] is set. 432 433 Received bits [15:8] of QoS Control for TID 14 434 <legal all> 435 */ 436 437 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_14_OFFSET 0x0000001c 438 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_14_LSB 16 439 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_14_MSB 23 440 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_14_MASK 0x00ff0000 441 442 443 /* Description QOS_CONTROL_15_8_TID_15 444 445 Field only valid if QoS_Control_valid[15] is set. 446 447 Received bits [15:8] of QoS Control for TID 15 448 <legal all> 449 */ 450 451 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_15_OFFSET 0x0000001c 452 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_15_LSB 24 453 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_15_MSB 31 454 #define RECEIVED_RESPONSE_USER_INFO_QOS_CONTROL_15_8_TID_15_MASK 0xff000000 455 456 457 458 #endif // RECEIVED_RESPONSE_USER_INFO 459