1 /* 2 * Copyright (c) 2018 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 _HE_SIG_A_MU_UL_INFO_H_ 20 #define _HE_SIG_A_MU_UL_INFO_H_ 21 #if !defined(__ASSEMBLER__) 22 #endif 23 24 25 // ################ START SUMMARY ################# 26 // 27 // Dword Fields 28 // 0 format_indication[0], bss_color_id[6:1], spatial_reuse[22:7], reserved_0a[23], transmit_bw[25:24], reserved_0b[31:26] 29 // 1 txop_duration[6:0], reserved_1a[15:7], crc[19:16], tail[25:20], reserved_1b[31:26] 30 // 31 // ################ END SUMMARY ################# 32 33 #define NUM_OF_DWORDS_HE_SIG_A_MU_UL_INFO 2 34 35 struct he_sig_a_mu_ul_info { 36 uint32_t format_indication : 1, //[0] 37 bss_color_id : 6, //[6:1] 38 spatial_reuse : 16, //[22:7] 39 reserved_0a : 1, //[23] 40 transmit_bw : 2, //[25:24] 41 reserved_0b : 6; //[31:26] 42 uint32_t txop_duration : 7, //[6:0] 43 reserved_1a : 9, //[15:7] 44 crc : 4, //[19:16] 45 tail : 6, //[25:20] 46 reserved_1b : 6; //[31:26] 47 }; 48 49 /* 50 51 format_indication 52 53 Indicates whether the transmission is SU PPDU or a 54 trigger based UL MU PDDU 55 56 <enum 0 HE_SIGA_FORMAT_HE_TRIG> 57 58 <enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU> 59 60 <legal all> 61 62 bss_color_id 63 64 BSS color ID 65 66 <legal all> 67 68 spatial_reuse 69 70 Spatial reuse 71 72 73 74 <legal all> 75 76 reserved_0a 77 78 Note: spec indicates this shall be set to 1 79 80 <legal 1> 81 82 transmit_bw 83 84 Bandwidth of the PPDU. 85 86 87 88 <enum 0 HE_SIG_A_MU_UL_BW20> 20 Mhz 89 90 <enum 1 HE_SIG_A_MU_UL_BW40> 40 Mhz 91 92 <enum 2 HE_SIG_A_MU_UL_BW80> 80 Mhz 93 94 <enum 3 HE_SIG_A_MU_UL_BW160> 160 MHz or 80+80 MHz 95 96 97 98 On RX side, Field Used by MAC HW 99 100 <legal 0-3> 101 102 reserved_0b 103 104 <legal 0> 105 106 txop_duration 107 108 Indicates the remaining time in the current TXOP <legal 109 all> 110 111 reserved_1a 112 113 Set to value indicated in the trigger frame 114 115 <legal 255> 116 117 crc 118 119 CRC for HE-SIG-A contents. 120 121 This CRC may also cover some fields of L-SIG (TBD) 122 123 <legal all> 124 125 tail 126 127 BCC encoding (similar to VHT-SIG-A) with 6 tail bits is 128 used 129 130 <legal 0> 131 132 reserved_1b 133 134 <legal 0> 135 */ 136 137 138 /* Description HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION 139 140 Indicates whether the transmission is SU PPDU or a 141 trigger based UL MU PDDU 142 143 <enum 0 HE_SIGA_FORMAT_HE_TRIG> 144 145 <enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU> 146 147 <legal all> 148 */ 149 #define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_OFFSET 0x00000000 150 #define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_LSB 0 151 #define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_MASK 0x00000001 152 153 /* Description HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID 154 155 BSS color ID 156 157 <legal all> 158 */ 159 #define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_OFFSET 0x00000000 160 #define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_LSB 1 161 #define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_MASK 0x0000007e 162 163 /* Description HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE 164 165 Spatial reuse 166 167 168 169 <legal all> 170 */ 171 #define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_OFFSET 0x00000000 172 #define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_LSB 7 173 #define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_MASK 0x007fff80 174 175 /* Description HE_SIG_A_MU_UL_INFO_0_RESERVED_0A 176 177 Note: spec indicates this shall be set to 1 178 179 <legal 1> 180 */ 181 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_OFFSET 0x00000000 182 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_LSB 23 183 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_MASK 0x00800000 184 185 /* Description HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW 186 187 Bandwidth of the PPDU. 188 189 190 191 <enum 0 HE_SIG_A_MU_UL_BW20> 20 Mhz 192 193 <enum 1 HE_SIG_A_MU_UL_BW40> 40 Mhz 194 195 <enum 2 HE_SIG_A_MU_UL_BW80> 80 Mhz 196 197 <enum 3 HE_SIG_A_MU_UL_BW160> 160 MHz or 80+80 MHz 198 199 200 201 On RX side, Field Used by MAC HW 202 203 <legal 0-3> 204 */ 205 #define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_OFFSET 0x00000000 206 #define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_LSB 24 207 #define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_MASK 0x03000000 208 209 /* Description HE_SIG_A_MU_UL_INFO_0_RESERVED_0B 210 211 <legal 0> 212 */ 213 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_OFFSET 0x00000000 214 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_LSB 26 215 #define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_MASK 0xfc000000 216 217 /* Description HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION 218 219 Indicates the remaining time in the current TXOP <legal 220 all> 221 */ 222 #define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_OFFSET 0x00000004 223 #define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_LSB 0 224 #define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_MASK 0x0000007f 225 226 /* Description HE_SIG_A_MU_UL_INFO_1_RESERVED_1A 227 228 Set to value indicated in the trigger frame 229 230 <legal 255> 231 */ 232 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_OFFSET 0x00000004 233 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_LSB 7 234 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_MASK 0x0000ff80 235 236 /* Description HE_SIG_A_MU_UL_INFO_1_CRC 237 238 CRC for HE-SIG-A contents. 239 240 This CRC may also cover some fields of L-SIG (TBD) 241 242 <legal all> 243 */ 244 #define HE_SIG_A_MU_UL_INFO_1_CRC_OFFSET 0x00000004 245 #define HE_SIG_A_MU_UL_INFO_1_CRC_LSB 16 246 #define HE_SIG_A_MU_UL_INFO_1_CRC_MASK 0x000f0000 247 248 /* Description HE_SIG_A_MU_UL_INFO_1_TAIL 249 250 BCC encoding (similar to VHT-SIG-A) with 6 tail bits is 251 used 252 253 <legal 0> 254 */ 255 #define HE_SIG_A_MU_UL_INFO_1_TAIL_OFFSET 0x00000004 256 #define HE_SIG_A_MU_UL_INFO_1_TAIL_LSB 20 257 #define HE_SIG_A_MU_UL_INFO_1_TAIL_MASK 0x03f00000 258 259 /* Description HE_SIG_A_MU_UL_INFO_1_RESERVED_1B 260 261 <legal 0> 262 */ 263 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_OFFSET 0x00000004 264 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_LSB 26 265 #define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_MASK 0xfc000000 266 267 268 #endif // _HE_SIG_A_MU_UL_INFO_H_ 269