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 _VHT_SIG_B_MU40_INFO_H_ 18 #define _VHT_SIG_B_MU40_INFO_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 #define NUM_OF_DWORDS_VHT_SIG_B_MU40_INFO 2 23 24 25 struct vht_sig_b_mu40_info { 26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 27 uint32_t length : 17, // [16:0] 28 mcs : 4, // [20:17] 29 tail : 6, // [26:21] 30 reserved_0 : 2, // [28:27] 31 mu_user_number : 3; // [31:29] 32 uint32_t length_copy : 17, // [16:0] 33 mcs_copy : 4, // [20:17] 34 tail_copy : 6, // [26:21] 35 reserved_1 : 5; // [31:27] 36 #else 37 uint32_t mu_user_number : 3, // [31:29] 38 reserved_0 : 2, // [28:27] 39 tail : 6, // [26:21] 40 mcs : 4, // [20:17] 41 length : 17; // [16:0] 42 uint32_t reserved_1 : 5, // [31:27] 43 tail_copy : 6, // [26:21] 44 mcs_copy : 4, // [20:17] 45 length_copy : 17; // [16:0] 46 #endif 47 }; 48 49 50 /* Description LENGTH 51 52 VHT-SIG-B Length (in units of 4 octets) = ceiling (LENGTH/4) <legal 53 all> 54 */ 55 56 #define VHT_SIG_B_MU40_INFO_LENGTH_OFFSET 0x00000000 57 #define VHT_SIG_B_MU40_INFO_LENGTH_LSB 0 58 #define VHT_SIG_B_MU40_INFO_LENGTH_MSB 16 59 #define VHT_SIG_B_MU40_INFO_LENGTH_MASK 0x0001ffff 60 61 62 /* Description MCS 63 64 Modulation as described in vht_sig_a mcs field 65 <legal 0-11> 66 */ 67 68 #define VHT_SIG_B_MU40_INFO_MCS_OFFSET 0x00000000 69 #define VHT_SIG_B_MU40_INFO_MCS_LSB 17 70 #define VHT_SIG_B_MU40_INFO_MCS_MSB 20 71 #define VHT_SIG_B_MU40_INFO_MCS_MASK 0x001e0000 72 73 74 /* Description TAIL 75 76 Used to terminate the trellis of the convolutional decoder. 77 78 Set to 0. 79 <legal 0> 80 */ 81 82 #define VHT_SIG_B_MU40_INFO_TAIL_OFFSET 0x00000000 83 #define VHT_SIG_B_MU40_INFO_TAIL_LSB 21 84 #define VHT_SIG_B_MU40_INFO_TAIL_MSB 26 85 #define VHT_SIG_B_MU40_INFO_TAIL_MASK 0x07e00000 86 87 88 /* Description RESERVED_0 89 90 Not part of VHT-SIG-B. 91 Reserved: Set to 0 and ignored on receive <legal 0> 92 */ 93 94 #define VHT_SIG_B_MU40_INFO_RESERVED_0_OFFSET 0x00000000 95 #define VHT_SIG_B_MU40_INFO_RESERVED_0_LSB 27 96 #define VHT_SIG_B_MU40_INFO_RESERVED_0_MSB 28 97 #define VHT_SIG_B_MU40_INFO_RESERVED_0_MASK 0x18000000 98 99 100 /* Description MU_USER_NUMBER 101 102 Not part of VHT-SIG-B. 103 Mapping from user number (BFer hardware specific) to mu_user_number. 104 The reader is directed to the previous chapter (User Number) 105 for a definition of the terms user and mu_user. <legal 106 0-3> 107 */ 108 109 #define VHT_SIG_B_MU40_INFO_MU_USER_NUMBER_OFFSET 0x00000000 110 #define VHT_SIG_B_MU40_INFO_MU_USER_NUMBER_LSB 29 111 #define VHT_SIG_B_MU40_INFO_MU_USER_NUMBER_MSB 31 112 #define VHT_SIG_B_MU40_INFO_MU_USER_NUMBER_MASK 0xe0000000 113 114 115 /* Description LENGTH_COPY 116 117 Same as "length". This field is not valid for RX packets. <legal 118 all> 119 */ 120 121 #define VHT_SIG_B_MU40_INFO_LENGTH_COPY_OFFSET 0x00000004 122 #define VHT_SIG_B_MU40_INFO_LENGTH_COPY_LSB 0 123 #define VHT_SIG_B_MU40_INFO_LENGTH_COPY_MSB 16 124 #define VHT_SIG_B_MU40_INFO_LENGTH_COPY_MASK 0x0001ffff 125 126 127 /* Description MCS_COPY 128 129 Same as "mcs". This field is not valid for RX packets. <legal 130 0-11> 131 */ 132 133 #define VHT_SIG_B_MU40_INFO_MCS_COPY_OFFSET 0x00000004 134 #define VHT_SIG_B_MU40_INFO_MCS_COPY_LSB 17 135 #define VHT_SIG_B_MU40_INFO_MCS_COPY_MSB 20 136 #define VHT_SIG_B_MU40_INFO_MCS_COPY_MASK 0x001e0000 137 138 139 /* Description TAIL_COPY 140 141 Same as "tail". This field is not valid for RX packets. 142 <legal 0> 143 */ 144 145 #define VHT_SIG_B_MU40_INFO_TAIL_COPY_OFFSET 0x00000004 146 #define VHT_SIG_B_MU40_INFO_TAIL_COPY_LSB 21 147 #define VHT_SIG_B_MU40_INFO_TAIL_COPY_MSB 26 148 #define VHT_SIG_B_MU40_INFO_TAIL_COPY_MASK 0x07e00000 149 150 151 /* Description RESERVED_1 152 153 <legal 0> 154 */ 155 156 #define VHT_SIG_B_MU40_INFO_RESERVED_1_OFFSET 0x00000004 157 #define VHT_SIG_B_MU40_INFO_RESERVED_1_LSB 27 158 #define VHT_SIG_B_MU40_INFO_RESERVED_1_MSB 31 159 #define VHT_SIG_B_MU40_INFO_RESERVED_1_MASK 0xf8000000 160 161 162 163 #endif // VHT_SIG_B_MU40_INFO 164