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 _EHT_SIG_USR_OFDMA_INFO_H_ 27 #define _EHT_SIG_USR_OFDMA_INFO_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #define NUM_OF_DWORDS_EHT_SIG_USR_OFDMA_INFO 2 32 33 34 struct eht_sig_usr_ofdma_info { 35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 36 uint32_t sta_id : 11, // [10:0] 37 sta_mcs : 4, // [14:11] 38 validate_0a : 1, // [15:15] 39 nss : 4, // [19:16] 40 txbf : 1, // [20:20] 41 sta_coding : 1, // [21:21] 42 reserved_0b : 1, // [22:22] 43 rx_integrity_check_passed : 1, // [23:23] 44 subband80_cc_mask : 8; // [31:24] 45 uint32_t user_order_subband80_0 : 8, // [7:0] 46 user_order_subband80_1 : 8, // [15:8] 47 user_order_subband80_2 : 8, // [23:16] 48 user_order_subband80_3 : 8; // [31:24] 49 #else 50 uint32_t subband80_cc_mask : 8, // [31:24] 51 rx_integrity_check_passed : 1, // [23:23] 52 reserved_0b : 1, // [22:22] 53 sta_coding : 1, // [21:21] 54 txbf : 1, // [20:20] 55 nss : 4, // [19:16] 56 validate_0a : 1, // [15:15] 57 sta_mcs : 4, // [14:11] 58 sta_id : 11; // [10:0] 59 uint32_t user_order_subband80_3 : 8, // [31:24] 60 user_order_subband80_2 : 8, // [23:16] 61 user_order_subband80_1 : 8, // [15:8] 62 user_order_subband80_0 : 8; // [7:0] 63 #endif 64 }; 65 66 67 /* Description STA_ID 68 69 Identifies the STA that is addressed. Details of STA ID 70 are TBD 71 */ 72 73 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_OFFSET 0x00000000 74 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_LSB 0 75 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MSB 10 76 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MASK 0x000007ff 77 78 79 /* Description STA_MCS 80 81 Indicates the data MCS 82 0 - 13: MCS 0 - 13 83 14: validate 84 15: MCS 0 with DCM 85 <legal 0-13, 15> 86 */ 87 88 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_OFFSET 0x00000000 89 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_LSB 11 90 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MSB 14 91 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MASK 0x00007800 92 93 94 /* Description VALIDATE_0A 95 96 Note: spec indicates this shall be set to 1 97 <legal 1> 98 */ 99 100 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_OFFSET 0x00000000 101 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_LSB 15 102 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MSB 15 103 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MASK 0x00008000 104 105 106 /* Description NSS 107 108 Number of spatial streams for this user 109 110 The actual number of streams is 1 larger than indicated 111 in this field. 112 <legal all> 113 */ 114 115 #define EHT_SIG_USR_OFDMA_INFO_NSS_OFFSET 0x00000000 116 #define EHT_SIG_USR_OFDMA_INFO_NSS_LSB 16 117 #define EHT_SIG_USR_OFDMA_INFO_NSS_MSB 19 118 #define EHT_SIG_USR_OFDMA_INFO_NSS_MASK 0x000f0000 119 120 121 /* Description TXBF 122 123 Indicates whether beamforming is applied 124 0: No beamforming 125 1: beamforming 126 <legal all> 127 */ 128 129 #define EHT_SIG_USR_OFDMA_INFO_TXBF_OFFSET 0x00000000 130 #define EHT_SIG_USR_OFDMA_INFO_TXBF_LSB 20 131 #define EHT_SIG_USR_OFDMA_INFO_TXBF_MSB 20 132 #define EHT_SIG_USR_OFDMA_INFO_TXBF_MASK 0x00100000 133 134 135 /* Description STA_CODING 136 137 Distinguishes between BCC/LDPC 138 139 0: BCC 140 1: LDPC 141 <legal all> 142 */ 143 144 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_OFFSET 0x00000000 145 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_LSB 21 146 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MSB 21 147 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MASK 0x00200000 148 149 150 /* Description RESERVED_0B 151 152 <legal 0> 153 */ 154 155 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_OFFSET 0x00000000 156 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_LSB 22 157 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MSB 22 158 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MASK 0x00400000 159 160 161 /* Description RX_INTEGRITY_CHECK_PASSED 162 163 TX side: Set to 0 164 RX side: Set to 1 if PHY determines the CRC check of the 165 codeblock containing this EHT-SIG user info has passed, 166 else set to 0 167 168 <legal all> 169 */ 170 171 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x00000000 172 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_LSB 23 173 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MSB 23 174 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MASK 0x00800000 175 176 177 /* Description SUBBAND80_CC_MASK 178 179 RX side: Set to 0 180 TX side: Indicates what content channels of what 80 MHz 181 subbands this User field can go to 182 Bit 0: lowest 80 MHz content channel 0 183 Bit 1: lowest 80 MHz content channel 1 184 Bit 2: 2nd lowest 80 MHz content channel 0 185 ... 186 Bit 7: highest 80 MHz content channel 1 187 <legal all> 188 */ 189 190 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_OFFSET 0x00000000 191 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_LSB 24 192 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MSB 31 193 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MASK 0xff000000 194 195 196 /* Description USER_ORDER_SUBBAND80_0 197 198 RX side: Set to 0 199 TX side: Ordering index of the User field within the lowest 200 80 MHz 201 Gaps between the ordering indices of User fields indicate 202 that the microcode shall generate "unallocated RU" User 203 fields (STAID=2046) to fill the gaps. 204 <legal all> 205 */ 206 207 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_OFFSET 0x00000004 208 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_LSB 0 209 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MSB 7 210 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MASK 0x000000ff 211 212 213 /* Description USER_ORDER_SUBBAND80_1 214 215 RX side: Set to 0 216 TX side: Ordering index of the User field within the 2nd 217 lowest 80 MHz 218 See 'user_order_subband80_0.' 219 <legal all> 220 */ 221 222 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_OFFSET 0x00000004 223 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_LSB 8 224 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MSB 15 225 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MASK 0x0000ff00 226 227 228 /* Description USER_ORDER_SUBBAND80_2 229 230 RX side: Set to 0 231 TX side: Ordering index of the User field within the 2nd 232 highest 80 MHz 233 See 'user_order_subband80_0.' 234 <legal all> 235 */ 236 237 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_OFFSET 0x00000004 238 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_LSB 16 239 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MSB 23 240 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MASK 0x00ff0000 241 242 243 /* Description USER_ORDER_SUBBAND80_3 244 245 RX side: Set to 0 246 TX side: Ordering index of the User field within the highest 247 80 MHz 248 See 'user_order_subband80_0.' 249 <legal all> 250 */ 251 252 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_OFFSET 0x00000004 253 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_LSB 24 254 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MSB 31 255 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MASK 0xff000000 256 257 258 259 #endif // EHT_SIG_USR_OFDMA_INFO 260