1 /* 2 * Copyright (c) 2016-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 #include "dp_ratetable.h" 20 #include "qdf_module.h" 21 #include "cdp_txrx_mon_struct.h" 22 23 enum { 24 MODE_11A = 0, /* 11a Mode */ 25 MODE_11G = 1, /* 11b/g Mode */ 26 MODE_11B = 2, /* 11b Mode */ 27 MODE_11GONLY = 3, /* 11g only Mode */ 28 MODE_11NA_HT20 = 4, /* 11a HT20 mode */ 29 MODE_11NG_HT20 = 5, /* 11g HT20 mode */ 30 MODE_11NA_HT40 = 6, /* 11a HT40 mode */ 31 MODE_11NG_HT40 = 7, /* 11g HT40 mode */ 32 MODE_11AC_VHT20 = 8, 33 MODE_11AC_VHT40 = 9, 34 MODE_11AC_VHT80 = 10, 35 MODE_11AC_VHT20_2G = 11, 36 MODE_11AC_VHT40_2G = 12, 37 MODE_11AC_VHT80_2G = 13, 38 MODE_11AC_VHT80_80 = 14, 39 MODE_11AC_VHT160 = 15, 40 MODE_11AX_HE20 = 16, 41 MODE_11AX_HE40 = 17, 42 MODE_11AX_HE80 = 18, 43 MODE_11AX_HE80_80 = 19, 44 MODE_11AX_HE160 = 20, 45 MODE_11AX_HE20_2G = 21, 46 MODE_11AX_HE40_2G = 22, 47 MODE_11AX_HE80_2G = 23, 48 /* MODE_UNKNOWN should not be used within the host / target interface. 49 * Thus, it is permissible for ODE_UNKNOWN to be conditionally-defined, 50 * taking different values when compiling for different targets. 51 */ 52 MODE_UNKNOWN, 53 MODE_UNKNOWN_NO_160MHZ_SUPPORT = 14, /* not needed? */ 54 MODE_UNKNOWN_160MHZ_SUPPORT = MODE_UNKNOWN, /* not needed? */ 55 } DP_PHY_MODE; 56 57 /* The following would span more than one octet 58 * when 160MHz BW defined for VHT 59 * Also it's important to maintain the ordering of this enum 60 * else it would break other rate adapation functions 61 */ 62 63 enum DP_CMN_RATECODE_PREAM_TYPE { 64 DP_CMN_RATECODE_PREAM_OFDM, 65 DP_CMN_RATECODE_PREAM_CCK, 66 DP_CMN_RATECODE_PREAM_HT, 67 DP_CMN_RATECODE_PREAM_VHT, 68 DP_CMN_RATECODE_PREAM_HE, 69 DP_CMN_RATECODE_PREAM_COUNT, 70 }; 71 72 /* 73 * @validmodemask : bit mask where 1 indicates the rate is valid for that mode 74 * @DP_CMN_MODULATION : modulation CCK/OFDM/MCS 75 * @propmask : bit mask of rate property. NSS/STBC/TXBF/LDPC 76 * @ratekbps : Rate in Kbits per second 77 * @ratebpdsgi : Rate in kbits per second if HT SGI is enabled 78 * @ratekbpsdgi : Rate in kbits per second if 1.6us GI is enabled 79 * @ratekbpsqgi : Rate in kbits per second if 3.2us GI is enabled 80 * @ratekbpsdcm : Rate in kbits per second if DCM is applied 81 * @userratekabps : User rate in KBits per second 82 * @dot11rate : Value that goes into supported rates info element of MLME 83 * @ratecode : rate that goes into hw descriptors 84 */ 85 const struct DP_CMN_RATE_TABLE { 86 struct { 87 uint32_t validmodemask; 88 enum DP_CMN_MODULATION_TYPE phy; 89 uint32_t ratekbps; 90 uint32_t ratekbpssgi; 91 uint32_t ratekbpsdgi; 92 uint32_t ratekbpsqgi; 93 uint32_t ratekbpsdcm; 94 uint32_t userratekbps; 95 uint16_t ratecode; 96 } info[DP_RATE_TABLE_SIZE]; 97 } DP_CMN_RATE_TABLE; 98 99 /*Use the highest bit to indicate the invalid bcc rates accorss 100 *different PHYMODE 101 */ 102 #define INVALID_BCC_RATE BIT(MODE_UNKNOWN) 103 104 #define CCK_MODE_VALID_MASK ((1 << MODE_11G) | (1 << MODE_11B) | \ 105 (1 << MODE_11NG_HT20) | (1 << MODE_11NG_HT40) | \ 106 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) |\ 107 (1 << MODE_11AC_VHT80_2G)) 108 109 #define OFDM_MODE_VALID_MASK ((1 << MODE_11A) | (1 << MODE_11G) | \ 110 (1 << MODE_11GONLY) | (1 << MODE_11NA_HT20) | \ 111 (1 << MODE_11NG_HT20) \ 112 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \ 113 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \ 114 (1 << MODE_11AC_VHT80) \ 115 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 116 (1 << MODE_11AC_VHT80_2G) \ 117 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 118 119 #define HT20_MODE_VALID_MASK ((1 << MODE_11NA_HT20) | \ 120 (1 << MODE_11NG_HT20) \ 121 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \ 122 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \ 123 (1 << MODE_11AC_VHT80) \ 124 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 125 (1 << MODE_11AC_VHT80_2G) \ 126 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 127 128 #define HT40_MODE_VALID_MASK ((1 << MODE_11NA_HT40) | \ 129 (1 << MODE_11NG_HT40) \ 130 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) \ 131 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) \ 132 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 133 134 #define VHT20_MODE_VALID_MASK ((1 << MODE_11AC_VHT20) | \ 135 (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) | \ 136 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 137 (1 << MODE_11AC_VHT80_2G) | \ 138 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 139 140 #define VHT40_MODE_VALID_MASK ((1 << MODE_11AC_VHT40) | \ 141 (1 << MODE_11AC_VHT80) | \ 142 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) | \ 143 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 144 145 #define VHT80_MODE_VALID_MASK ((1 << MODE_11AC_VHT80) | \ 146 (1 << MODE_11AC_VHT80_2G) | \ 147 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 148 149 #define VHT160_MODE_VALID_MASK ((1 << MODE_11AC_VHT160) | \ 150 (1 << MODE_11AC_VHT80_80)) 151 152 #define VHT20_LDPC_ONLY_MASKS (VHT20_MODE_VALID_MASK | INVALID_BCC_RATE) 153 #define VHT40_LDPC_ONLY_MASKS (VHT40_MODE_VALID_MASK | INVALID_BCC_RATE) 154 #define VHT80_LDPC_ONLY_MASKS (VHT80_MODE_VALID_MASK | INVALID_BCC_RATE) 155 #define VHT160_LDPC_ONLY_MASKS (VHT160_MODE_VALID_MASK | INVALID_BCC_RATE) 156 157 #define VHT_INVALID_MCS (0xFF) 158 #define VHT_INVALID_RATES_MASK 0 159 160 #define HE20_MODE_VALID_MASK ((1 << MODE_11AX_HE20) |\ 161 (1 << MODE_11AX_HE40) | \ 162 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE20_2G) | \ 163 (1 << MODE_11AX_HE40_2G) | \ 164 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \ 165 (1 << MODE_11AX_HE160)) 166 167 #define HE40_MODE_VALID_MASK ((1 << MODE_11AX_HE40) | \ 168 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE40_2G) | \ 169 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \ 170 (1 << MODE_11AX_HE160)) 171 172 #define HE80_MODE_VALID_MASK ((1 << MODE_11AX_HE80) | \ 173 (1 << MODE_11AX_HE80_2G) | \ 174 (1 << MODE_11AX_HE80_80) | (1 << MODE_11AX_HE160)) 175 176 #define HE160_MODE_VALID_MASK ((1 << MODE_11AX_HE80_80) | \ 177 (1 << MODE_11AX_HE160)) 178 179 #define HE20_LDPC_ONLY_MASKS (HE20_MODE_VALID_MASK | INVALID_BCC_RATE) 180 #define HE40_LDPC_ONLY_MASKS (HE40_MODE_VALID_MASK | INVALID_BCC_RATE) 181 #define HE80_LDPC_ONLY_MASKS (HE80_MODE_VALID_MASK | INVALID_BCC_RATE) 182 #define HE160_LDPC_ONLY_MASKS (HE160_MODE_VALID_MASK | INVALID_BCC_RATE) 183 184 #define HE_INVALID_RATES_MASK 0 185 186 static const struct DP_CMN_RATE_TABLE dp_11abgnratetable = { 187 { 188 /* When number of spatial strams > 4 or 11AX support is enabled */ 189 190 /* 0 11 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 191 11000, 11000, 0, 0, 0, 11000, 192 0x100 }, 193 /* 1 5.5 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 194 5500, 5500, 0, 0, 0, 5500, 0x101 195 }, 196 /* 2 2 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 197 2000, 2000, 0, 0, 0, 2000, 0x102 198 }, 199 /* 3 1 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 200 1000, 1000, 0, 0, 0, 1000, 0x103 201 }, 202 /* 4 48 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 203 48000, 48000, 0, 0, 0, 48000, 204 0x000 }, 205 /* 5 24 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 206 24000, 24000, 0, 0, 0, 24000, 207 0x001 }, 208 /* 6 12 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 209 12000, 12000, 0, 0, 0, 12000, 210 0x002 }, 211 /* 7 6 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 212 6000, 6000, 0, 0, 0, 6000, 213 0x003 }, 214 /* 8 54 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 215 54000, 54000, 0, 0, 0, 54000, 216 0x004 }, 217 /* 9 36 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 218 36000, 36000, 0, 0, 0, 36000, 219 0x005 }, 220 /* 10 18 Mb */ { OFDM_MODE_VALID_MASK, 221 DP_CMN_MOD_IEEE80211_T_OFDM, 222 18000, 18000, 0, 0, 0, 18000, 223 0x006 }, 224 /* 11 9 Mb */ { OFDM_MODE_VALID_MASK, 225 DP_CMN_MOD_IEEE80211_T_OFDM, 226 9000, 9000, 0, 0, 0, 9000, 227 0x007}, 228 229 /* 12 MCS-00 */ { HT20_MODE_VALID_MASK, 230 DP_CMN_MOD_IEEE80211_T_HT_20, 6500, 231 7200, 0, 0, 0, 6500, 0x200 }, 232 /* 13 MCS-01 */ { HT20_MODE_VALID_MASK, 233 DP_CMN_MOD_IEEE80211_T_HT_20, 13000, 234 14400, 0, 0, 0, 13000, 0x201 }, 235 /* 14 MCS-02 */ { HT20_MODE_VALID_MASK, 236 DP_CMN_MOD_IEEE80211_T_HT_20, 19500, 237 21700, 0, 0, 0, 19500, 0x202 }, 238 /* 15 MCS-03 */ { HT20_MODE_VALID_MASK, 239 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 240 28900, 0, 0, 0, 26000, 0x203 }, 241 /* 16 MCS-04 */ { HT20_MODE_VALID_MASK, 242 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 243 43300, 0, 0, 0, 39000, 0x204 }, 244 /* 17 MCS-05 */ { HT20_MODE_VALID_MASK, 245 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 246 57800, 0, 0, 0, 52000, 0x205 }, 247 /* 18 MCS-06 */ { HT20_MODE_VALID_MASK, 248 DP_CMN_MOD_IEEE80211_T_HT_20, 58500, 249 65000, 0, 0, 0, 58500, 0x206 }, 250 /* 19 MCS-07 */ { HT20_MODE_VALID_MASK, 251 DP_CMN_MOD_IEEE80211_T_HT_20, 65000, 252 72200, 0, 0, 0, 65000, 0x207 }, 253 /* When number of spatial streams > 1 */ 254 /* 20 MCS-00 */ { HT20_MODE_VALID_MASK, 255 DP_CMN_MOD_IEEE80211_T_HT_20, 13000, 256 14400, 0, 0, 0, 13000, 0x220 }, 257 /* 21 MCS-01 */ { HT20_MODE_VALID_MASK, 258 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 259 28900, 0, 0, 0, 26000, 0x221 }, 260 /* 22 MCS-02 */ { HT20_MODE_VALID_MASK, 261 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 262 43300, 0, 0, 0, 39000, 0x222 }, 263 /* 23 MCS-03 */ { HT20_MODE_VALID_MASK, 264 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 265 57800, 0, 0, 0, 52000, 0x223 }, 266 /* 24 MCS-04 */ { HT20_MODE_VALID_MASK, 267 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 268 86700, 0, 0, 0, 78000, 0x224 }, 269 /* 25 MCS-05 */ { HT20_MODE_VALID_MASK, 270 DP_CMN_MOD_IEEE80211_T_HT_20, 104000, 271 115600, 0, 0, 0, 104000, 0x225 }, 272 /* 26 MCS-06 */ { HT20_MODE_VALID_MASK, 273 DP_CMN_MOD_IEEE80211_T_HT_20, 117000, 274 130000, 0, 0, 0, 117000, 0x226 }, 275 /* 27 MCS-07 */ { HT20_MODE_VALID_MASK, 276 DP_CMN_MOD_IEEE80211_T_HT_20, 130000, 277 144000, 0, 0, 0, 130000, 0x227 }, 278 /* When number of spatial streams > 2 */ 279 /* 28 MCS-00 */ { HT20_MODE_VALID_MASK, 280 DP_CMN_MOD_IEEE80211_T_HT_20, 19500, 281 21700, 0, 0, 0, 19500, 0x240 }, 282 /* 29 MCS-01 */ { HT20_MODE_VALID_MASK, 283 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 284 43300, 0, 0, 0, 39000, 0x241 }, 285 /* 30 MCS-02 */ { HT20_MODE_VALID_MASK, 286 DP_CMN_MOD_IEEE80211_T_HT_20, 58500, 287 65000, 0, 0, 0, 58500, 0x242 }, 288 /* 31 MCS-03 */ { HT20_MODE_VALID_MASK, 289 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 290 86700, 0, 0, 0, 78000, 0x243 }, 291 /* 32 MCS-04 */ { HT20_MODE_VALID_MASK, 292 DP_CMN_MOD_IEEE80211_T_HT_20, 117000, 293 130000, 0, 0, 0, 117000, 0x244 }, 294 /* 33 MCS-05 */ { HT20_MODE_VALID_MASK, 295 DP_CMN_MOD_IEEE80211_T_HT_20, 156000, 296 173300, 0, 0, 0, 156000, 0x245 }, 297 /* 34 MCS-06 */ { HT20_MODE_VALID_MASK, 298 DP_CMN_MOD_IEEE80211_T_HT_20, 175500, 299 195000, 0, 0, 0, 175500, 0x246 }, 300 /* 35 MCS-07 */ { HT20_MODE_VALID_MASK, 301 DP_CMN_MOD_IEEE80211_T_HT_20, 195000, 302 216700, 0, 0, 0, 195000, 0x247 }, 303 /* When number of spatial streams > 3 */ 304 /* 36 MCS-00 */ { HT20_MODE_VALID_MASK, 305 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 306 28900, 0, 0, 0, 26000, 0x260 }, 307 /* 37 MCS-01 */ { HT20_MODE_VALID_MASK, 308 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 309 57800, 0, 0, 0, 52000, 0x261 }, 310 /* 38 MCS-02 */ { HT20_MODE_VALID_MASK, 311 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 312 86700, 0, 0, 0, 78000, 0x262 }, 313 /* 39 MCS-03 */ { HT20_MODE_VALID_MASK, 314 DP_CMN_MOD_IEEE80211_T_HT_20, 104000, 315 115600, 0, 0, 0, 104000, 0x263 }, 316 /* 40 MCS-04 */ { HT20_MODE_VALID_MASK, 317 DP_CMN_MOD_IEEE80211_T_HT_20, 156000, 318 173300, 0, 0, 0, 156000, 0x264 }, 319 /* 41 MCS-05 */ { HT20_MODE_VALID_MASK, 320 DP_CMN_MOD_IEEE80211_T_HT_20, 208000, 321 231100, 0, 0, 0, 208000, 0x265 }, 322 /* 42 MCS-06 */ { HT20_MODE_VALID_MASK, 323 DP_CMN_MOD_IEEE80211_T_HT_20, 234000, 324 260000, 0, 0, 0, 234000, 0x266 }, 325 /* 43 MCS-07 */ { HT20_MODE_VALID_MASK, 326 DP_CMN_MOD_IEEE80211_T_HT_20, 260000, 327 288900, 0, 0, 0, 260000, 0x267 }, 328 329 /* 11n HT40 rates */ 330 /* 44 MCS-00 */ { HT40_MODE_VALID_MASK, 331 DP_CMN_MOD_IEEE80211_T_HT_40, 13500, 332 15000, 0, 0, 0, 13500, 0x200 }, 333 /* 45 MCS-01 */ { HT40_MODE_VALID_MASK, 334 DP_CMN_MOD_IEEE80211_T_HT_40, 27000, 335 30000, 0, 0, 0, 27000, 0x201 }, 336 /* 46 MCS-02 */ { HT40_MODE_VALID_MASK, 337 DP_CMN_MOD_IEEE80211_T_HT_40, 40500, 338 45000, 0, 0, 0, 40500, 0x202 }, 339 /* 47 MCS-03 */ { HT40_MODE_VALID_MASK, 340 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 341 60000, 0, 0, 0, 54000, 0x203 }, 342 /* 48 MCS-04 */ { HT40_MODE_VALID_MASK, 343 DP_CMN_MOD_IEEE80211_T_HT_40, 81500, 344 90000, 0, 0, 0, 81500, 0x204 }, 345 /* 49 MCS-05 */ { HT40_MODE_VALID_MASK, 346 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 347 120000, 0, 0, 0, 108000, 0x205 }, 348 /* 50 MCS-06 */ { HT40_MODE_VALID_MASK, 349 DP_CMN_MOD_IEEE80211_T_HT_40, 121500, 350 135000, 0, 0, 0, 121500, 0x206 }, 351 /* 51 MCS-07 */ { HT40_MODE_VALID_MASK, 352 DP_CMN_MOD_IEEE80211_T_HT_40, 135000, 353 150000, 0, 0, 0, 135000, 0x207 }, 354 /* When number of spatial streams > 1 */ 355 /* 52 MCS-00 */ { HT40_MODE_VALID_MASK, 356 DP_CMN_MOD_IEEE80211_T_HT_40, 27000, 357 30000, 0, 0, 0, 27000, 0x220 }, 358 /* 53 MCS-01 */ { HT40_MODE_VALID_MASK, 359 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 360 60000, 0, 0, 0, 54000, 0x221 }, 361 /* 54 MCS-02 */ { HT40_MODE_VALID_MASK, 362 DP_CMN_MOD_IEEE80211_T_HT_40, 81000, 363 90000, 0, 0, 0, 81000, 0x222 }, 364 /* 55 MCS-03 */ { HT40_MODE_VALID_MASK, 365 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 366 120000, 0, 0, 0, 108000, 0x223 }, 367 /* 56 MCS-04 */ { HT40_MODE_VALID_MASK, 368 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 369 180000, 0, 0, 0, 162000, 0x224 }, 370 /* 57 MCS-05 */ { HT40_MODE_VALID_MASK, 371 DP_CMN_MOD_IEEE80211_T_HT_40, 216000, 372 240000, 0, 0, 0, 216000, 0x225 }, 373 /* 58 MCS-06 */ { HT40_MODE_VALID_MASK, 374 DP_CMN_MOD_IEEE80211_T_HT_40, 243000, 375 270000, 0, 0, 0, 243000, 0x226 }, 376 /* 59 MCS-07 */ { HT40_MODE_VALID_MASK, 377 DP_CMN_MOD_IEEE80211_T_HT_40, 270000, 378 300000, 0, 0, 0, 270000, 0x227 }, 379 /* When number of spatial streams > 2 */ 380 /* 60 MCS-00 */ { HT40_MODE_VALID_MASK, 381 DP_CMN_MOD_IEEE80211_T_HT_40, 40500, 382 45000, 0, 0, 0, 40500, 0x240 }, 383 /* 61 MCS-01 */ { HT40_MODE_VALID_MASK, 384 DP_CMN_MOD_IEEE80211_T_HT_40, 81000, 385 90000, 0, 0, 0, 81000, 0x241 }, 386 /* 62 MCS-02 */ { HT40_MODE_VALID_MASK, 387 DP_CMN_MOD_IEEE80211_T_HT_40, 121500, 388 135000, 0, 0, 0, 121500, 0x242 }, 389 /* 63 MCS-03 */ { HT40_MODE_VALID_MASK, 390 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 391 180000, 0, 0, 0, 162000, 0x243 }, 392 /* 64 MCS-04 */ { HT40_MODE_VALID_MASK, 393 DP_CMN_MOD_IEEE80211_T_HT_40, 243000, 394 270000, 0, 0, 0, 243000, 0x244 }, 395 /* 65 MCS-05 */ { HT40_MODE_VALID_MASK, 396 DP_CMN_MOD_IEEE80211_T_HT_40, 324000, 397 360000, 0, 0, 0, 324000, 0x245 }, 398 /* 66 MCS-06 */ { HT40_MODE_VALID_MASK, 399 DP_CMN_MOD_IEEE80211_T_HT_40, 364500, 400 405000, 0, 0, 0, 364500, 0x246 }, 401 /* 67 MCS-07 */ { HT40_MODE_VALID_MASK, 402 DP_CMN_MOD_IEEE80211_T_HT_40, 405000, 403 450000, 0, 0, 0, 405000, 0x247 }, 404 /* When number of spatial streams > 3 */ 405 /* 68 MCS-00 */ { HT40_MODE_VALID_MASK, 406 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 407 60000, 0, 0, 0, 54000, 0x260 }, 408 /* 69 MCS-01 */ { HT40_MODE_VALID_MASK, 409 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 410 120000, 0, 0, 0, 108000, 0x261 }, 411 /* 70 MCS-02 */ { HT40_MODE_VALID_MASK, 412 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 413 180000, 0, 0, 0, 162000, 0x262 }, 414 /* 71 MCS-03 */ { HT40_MODE_VALID_MASK, 415 DP_CMN_MOD_IEEE80211_T_HT_40, 216000, 416 240000, 0, 0, 0, 216000, 0x263 }, 417 /* 72 MCS-04 */ { HT40_MODE_VALID_MASK, 418 DP_CMN_MOD_IEEE80211_T_HT_40, 324000, 419 360000, 0, 0, 0, 324000, 0x264 }, 420 /* 73 MCS-05 */ { HT40_MODE_VALID_MASK, 421 DP_CMN_MOD_IEEE80211_T_HT_40, 432000, 422 480000, 0, 0, 0, 432000, 0x265 }, 423 /* 74 MCS-06 */ { HT40_MODE_VALID_MASK, 424 DP_CMN_MOD_IEEE80211_T_HT_40, 486000, 425 540000, 0, 0, 0, 486000, 0x266 }, 426 /* 75 MCS-07 */ { HT40_MODE_VALID_MASK, 427 DP_CMN_MOD_IEEE80211_T_HT_40, 540000, 428 600000, 0, 0, 0, 540000, 0x267 }, 429 430 /* 11ac VHT20 rates */ 431 /* 76 MCS-00 */ { VHT20_MODE_VALID_MASK, 432 DP_CMN_MOD_IEEE80211_T_VHT_20, 6500, 433 7200, 0, 0, 0, 6500, 0x300 }, 434 /* 77 MCS-01 */ { VHT20_MODE_VALID_MASK, 435 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000, 436 14400, 0, 0, 0, 13000, 0x301 }, 437 /* 78 MCS-02 */ { VHT20_MODE_VALID_MASK, 438 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500, 439 21700, 0, 0, 0, 19500, 0x302 }, 440 /* 79 MCS-03 */ { VHT20_MODE_VALID_MASK, 441 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 442 28900, 0, 0, 0, 26000, 0x303 }, 443 /* 80 MCS-04 */ { VHT20_MODE_VALID_MASK, 444 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 445 43300, 0, 0, 0, 39000, 0x304 }, 446 /* 81 MCS-05 */ { VHT20_MODE_VALID_MASK, 447 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 448 57800, 0, 0, 0, 52000, 0x305 }, 449 /* 82 MCS-06 */ { VHT20_MODE_VALID_MASK, 450 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500, 451 65000, 0, 0, 0, 58500, 0x306 }, 452 /* 83 MCS-07 */ { VHT20_MODE_VALID_MASK, 453 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000, 454 72200, 0, 0, 0, 65000, 0x307 }, 455 /* 84 MCS-08 */ { VHT20_MODE_VALID_MASK, 456 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 457 86700, 0, 0, 0, 78000, 0x308 }, 458 /* 85 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 459 DP_CMN_MOD_IEEE80211_T_VHT_20, 86500, 460 96000, 0, 0, 0, 86500, 0x309 }, 461 /* When we support very hight throughput MCS */ 462 /* 86 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 463 DP_CMN_MOD_IEEE80211_T_VHT_20, 464 97500, 108300, 0, 0, 0, 465 97500, 0x30a}, 466 /* 87 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 467 DP_CMN_MOD_IEEE80211_T_VHT_20, 468 108300, 120400, 0, 0, 0, 469 108300, 0x30b}, 470 471 /* When number of spatial streams > 1 */ 472 /* 88 MCS-00 */ { VHT20_MODE_VALID_MASK, 473 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000, 474 14400, 0, 0, 0, 13000, 0x320 }, 475 /* 89 MCS-01 */ { VHT20_MODE_VALID_MASK, 476 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 477 28900, 0, 0, 0, 26000, 0x321 }, 478 /* 90 MCS-02 */ { VHT20_MODE_VALID_MASK, 479 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 480 43300, 0, 0, 0, 39000, 0x322 }, 481 /* 91 MCS-03 */ { VHT20_MODE_VALID_MASK, 482 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 483 57800, 0, 0, 0, 52000, 0x323 }, 484 /* 92 MCS-04 */ { VHT20_MODE_VALID_MASK, 485 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 486 86700, 0, 0, 0, 78000, 0x324 }, 487 /* 93 MCS-05 */ { VHT20_MODE_VALID_MASK, 488 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 489 115600, 0, 0, 0, 104000, 0x325 }, 490 /* 94 MCS-06 */ { VHT20_MODE_VALID_MASK, 491 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 492 130000, 0, 0, 0, 117000, 0x326 }, 493 /* 95 MCS-07 */ { VHT20_MODE_VALID_MASK, 494 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000, 495 144400, 0, 0, 0, 130000, 0x327 }, 496 /* 96 MCS-08 */ { VHT20_MODE_VALID_MASK, 497 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 498 173300, 0, 0, 0, 156000, 0x328 }, 499 /* 97 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 500 DP_CMN_MOD_IEEE80211_T_VHT_20, 173000, 501 192000, 0, 0, 0, 173000, 0x329 }, 502 /* 98 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 503 DP_CMN_MOD_IEEE80211_T_VHT_20, 504 195000, 216700, 0, 0, 0, 505 195000, 0x32a }, 506 /* 99 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 507 DP_CMN_MOD_IEEE80211_T_VHT_20, 508 216700, 240700, 0, 0, 0, 509 216700, 0x32b }, 510 511 /* when number of spatial streams > 2 */ 512 /* 100 MCS-00 */ { VHT20_MODE_VALID_MASK, 513 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500, 514 21700, 0, 0, 0, 19500, 0x340 }, 515 /* 101 MCS-01 */ { VHT20_MODE_VALID_MASK, 516 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 517 43300, 0, 0, 0, 39000, 0x341 }, 518 /* 102 MCS-02 */ { VHT20_MODE_VALID_MASK, 519 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500, 520 65000, 0, 0, 0, 58500, 0x342 }, 521 /* 103 MCS-03 */ { VHT20_MODE_VALID_MASK, 522 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 523 86700, 0, 0, 0, 78000, 0x343 }, 524 /* 104 MCS-04 */ { VHT20_MODE_VALID_MASK, 525 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 526 130000, 0, 0, 0, 117000, 0x344 }, 527 /* 105 MCS-05 */ { VHT20_MODE_VALID_MASK, 528 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 529 173300, 0, 0, 0, 156000, 0x345 }, 530 /* 106 MCS-06 */ { VHT20_MODE_VALID_MASK, 531 DP_CMN_MOD_IEEE80211_T_VHT_20, 175500, 532 195000, 0, 0, 0, 175500, 0x346 }, 533 /* 107 MCS-07 */ { VHT20_MODE_VALID_MASK, 534 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000, 535 216700, 0, 0, 0, 195000, 0x347 }, 536 /* 108 MCS-08 */ { VHT20_MODE_VALID_MASK, 537 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 538 260000, 0, 0, 0, 234000, 0x348 }, 539 /* 109 MCS-09 */ { VHT20_MODE_VALID_MASK, 540 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 541 288900, 0, 0, 0, 260000, 0x349 }, 542 /* 110 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 543 DP_CMN_MOD_IEEE80211_T_VHT_20, 544 292500, 325000, 0, 0, 0, 545 292500, 0x34a}, 546 /* 111 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 547 DP_CMN_MOD_IEEE80211_T_VHT_20, 548 325000, 361100, 0, 0, 0, 549 325000, 0x34b}, 550 551 /* when number of spatial streams > 3 */ 552 /* 112 MCS-00 */ { VHT20_MODE_VALID_MASK, 553 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 554 28900, 0, 0, 0, 26000, 0x360 }, 555 /* 113 MCS-01 */ { VHT20_MODE_VALID_MASK, 556 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 557 57800, 0, 0, 0, 52000, 0x361 }, 558 /* 114 MCS-02 */ { VHT20_MODE_VALID_MASK, 559 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 560 86700, 0, 0, 0, 78000, 0x362 }, 561 /* 115 MCS-03 */ { VHT20_MODE_VALID_MASK, 562 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 563 115600, 0, 0, 0, 104000, 0x363 }, 564 /* 116 MCS-04 */ { VHT20_MODE_VALID_MASK, 565 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 566 173300, 0, 0, 0, 156000, 0x364 }, 567 /* 117 MCS-05 */ { VHT20_MODE_VALID_MASK, 568 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000, 569 231100, 0, 0, 0, 208000, 0x365 }, 570 /* 118 MCS-06 */ { VHT20_MODE_VALID_MASK, 571 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 572 260000, 0, 0, 0, 234000, 0x366 }, 573 /* 119 MCS-07 */ { VHT20_MODE_VALID_MASK, 574 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 575 288900, 0, 0, 0, 260000, 0x367 }, 576 /* 120 MCS-08 */ { VHT20_MODE_VALID_MASK, 577 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 578 346700, 0, 0, 0, 312000, 0x368 }, 579 /* 121 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 580 DP_CMN_MOD_IEEE80211_T_VHT_20, 344000, 581 378400, 0, 0, 0, 344000, 0x369 }, 582 /* 122 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 583 DP_CMN_MOD_IEEE80211_T_VHT_20, 584 390000, 433300, 0, 0, 0, 390000, 585 0x36a}, 586 /* 123 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 587 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300, 588 481500, 0, 0, 0, 433300, 0x36b}, 589 590 /* when number of spatial streams > 4 */ 591 /* 124 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 592 DP_CMN_MOD_IEEE80211_T_VHT_20, 32500, 593 36100, 0, 0, 0, 32500, 0x380 }, 594 /* 125 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 595 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000, 596 72200, 0, 0, 0, 65000, 0x381 }, 597 /* 126 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 598 DP_CMN_MOD_IEEE80211_T_VHT_20, 97500, 599 108300, 0, 0, 0, 97500, 0x382 }, 600 /* 127 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 601 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000, 602 144400, 0, 0, 0, 130000, 0x383 }, 603 /* 128 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 604 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000, 605 216700, 0, 0, 0, 195000, 0x384 }, 606 /* 129 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 607 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 608 288900, 0, 0, 0, 260000, 0x385 }, 609 /* 130 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 610 DP_CMN_MOD_IEEE80211_T_VHT_20, 292500, 611 325000, 0, 0, 0, 292500, 0x386 }, 612 /* 131 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 613 DP_CMN_MOD_IEEE80211_T_VHT_20, 325000, 614 361100, 0, 0, 0, 325000, 0x387 }, 615 /* 132 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 616 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000, 617 433300, 0, 0, 0, 390000, 0x388 }, 618 /* 133 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 619 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300, 620 481500, 0, 0, 0, 433300, 0x389 }, 621 /* 134 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 622 DP_CMN_MOD_IEEE80211_T_VHT_20, 487500, 623 541700, 0, 0, 0, 487500, 0x38a }, 624 /* 135 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 625 DP_CMN_MOD_IEEE80211_T_VHT_20, 541700, 626 601900, 0, 0, 0, 541700, 0x38b }, 627 628 /* When number of spatial streams > 5 */ 629 /* 136 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 630 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 631 43300, 0, 0, 0, 39000, 0x3a0 }, 632 /* 137 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 633 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 634 86700, 0, 0, 0, 78000, 0x3a1 }, 635 /* 138 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 636 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 637 130000, 0, 0, 0, 117000, 0x3a2 }, 638 /* 139 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 639 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 640 173300, 0, 0, 0, 156000, 0x3a3 }, 641 /* 140 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 642 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 643 260000, 0, 0, 0, 234000, 0x3a4 }, 644 /* 141 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 645 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 646 346700, 0, 0, 0, 312000, 0x3a5 }, 647 /* 142 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 648 DP_CMN_MOD_IEEE80211_T_VHT_20, 351000, 649 390000, 0, 0, 0, 351000, 0x3a6 }, 650 /* 143 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 651 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000, 652 433300, 0, 0, 0, 390000, 0x3a7 }, 653 /* 144 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 654 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000, 655 520000, 0, 0, 0, 468000, 0x3a8 }, 656 /* 145 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 657 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000, 658 577800, 0, 0, 0, 520000, 0x3a9 }, 659 /* 146 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 660 DP_CMN_MOD_IEEE80211_T_VHT_20, 661 585000, 650000, 0, 0, 0, 662 585000, 0x3aa }, 663 /* 147 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 664 DP_CMN_MOD_IEEE80211_T_VHT_20, 665 650000, 722200, 0, 0, 666 0, 650000, 0x3ab }, 667 668 /* when number of spatial streams > 6 */ 669 /* 148 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 670 DP_CMN_MOD_IEEE80211_T_VHT_20, 45500, 671 50600, 0, 0, 0, 45500, 0x3c0 }, 672 /* 149 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 673 DP_CMN_MOD_IEEE80211_T_VHT_20, 91000, 674 101100, 0, 0, 0, 91000, 0x3c1 }, 675 /* 150 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 676 DP_CMN_MOD_IEEE80211_T_VHT_20, 136500, 677 151700, 0, 0, 0, 136500, 0x3c2 }, 678 /* 151 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 679 DP_CMN_MOD_IEEE80211_T_VHT_20, 182000, 680 202200, 0, 0, 0, 182000, 0x3c3 }, 681 /* 152 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 682 DP_CMN_MOD_IEEE80211_T_VHT_20, 273000, 683 303300, 0, 0, 0, 273000, 0x3c4 }, 684 /* 153 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 685 DP_CMN_MOD_IEEE80211_T_VHT_20, 364000, 686 404400, 0, 0, 0, 364000, 0x3c5 }, 687 /* 154 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 688 DP_CMN_MOD_IEEE80211_T_VHT_20, 409500, 689 455000, 0, 0, 0, 409500, 0x3c6 }, 690 /* 155 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 691 DP_CMN_MOD_IEEE80211_T_VHT_20, 455000, 692 505600, 0, 0, 0, 455000, 0x3c7 }, 693 /* 156 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 694 DP_CMN_MOD_IEEE80211_T_VHT_20, 546000, 695 606700, 0, 0, 0, 546000, 0x3c8 }, 696 /* 157 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 697 DP_CMN_MOD_IEEE80211_T_VHT_20, 606700, 698 674100, 0, 0, 0, 606700, 0x3c9 }, 699 /* 158 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 700 DP_CMN_MOD_IEEE80211_T_VHT_20, 682500, 701 758300, 0, 0, 0, 682500, 0x3ca }, 702 /* 159 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 703 DP_CMN_MOD_IEEE80211_T_VHT_20, 758300, 704 842600, 0, 0, 0, 758300, 0x3cb }, 705 706 /* when number of spatial streams > 7 */ 707 /* 160 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 708 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 709 57800, 0, 0, 0, 52000, 0x3e0 }, 710 /* 161 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 711 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 712 115600, 0, 0, 0, 104000, 0x3e1 }, 713 /* 162 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 714 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 715 173300, 0, 0, 0, 156000, 0x3e2 }, 716 /* 163 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 717 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000, 718 231100, 0, 0, 0, 208000, 0x3e3 }, 719 /* 164 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 720 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 721 346700, 0, 0, 0, 312000, 0x3e4 }, 722 /* 165 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 723 DP_CMN_MOD_IEEE80211_T_VHT_20, 416000, 724 462200, 0, 0, 0, 416000, 0x3e5 }, 725 /* 166 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 726 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000, 727 520000, 0, 0, 0, 468000, 0x3e6 }, 728 /* 167 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 729 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000, 730 577800, 0, 0, 0, 520000, 0x3e7 }, 731 /* 168 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 732 DP_CMN_MOD_IEEE80211_T_VHT_20, 624000, 733 693300, 0, 0, 0, 624000, 0x3e8 }, 734 /* 169 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 735 DP_CMN_MOD_IEEE80211_T_VHT_20, 693300, 736 770400, 0, 0, 0, 693300, 0x3e9 }, 737 /* 170 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 738 DP_CMN_MOD_IEEE80211_T_VHT_20, 780000, 739 866700, 0, 0, 0, 780000, 0x3ea }, 740 /* 171 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 741 DP_CMN_MOD_IEEE80211_T_VHT_20, 866700, 742 963000, 0, 0, 0, 866700, 0x3eb }, 743 744 /* 11ac VHT40 rates */ 745 /* 172 MCS-00 */ { VHT40_MODE_VALID_MASK, 746 DP_CMN_MOD_IEEE80211_T_VHT_40, 13500, 747 15000, 0, 0, 0, 13500, 0x300 }, 748 /* 173 MCS-01 */ { VHT40_MODE_VALID_MASK, 749 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000, 750 30000, 0, 0, 0, 27000, 0x301 }, 751 /* 174 MCS-02 */ { VHT40_MODE_VALID_MASK, 752 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500, 753 45000, 0, 0, 0, 40500, 0x302 }, 754 /* 175 MCS-03 */ { VHT40_MODE_VALID_MASK, 755 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 756 60000, 0, 0, 0, 54000, 0x303 }, 757 /* 176 MCS-04 */ { VHT40_MODE_VALID_MASK, 758 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 759 90000, 0, 0, 0, 81000, 0x304 }, 760 /* 177 MCS-05 */ { VHT40_MODE_VALID_MASK, 761 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 762 120000, 0, 0, 0, 108000, 0x305 }, 763 /* 178 MCS-06 */ { VHT40_MODE_VALID_MASK, 764 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500, 765 135000, 0, 0, 0, 121500, 0x306 }, 766 /* 179 MCS-07 */ { VHT40_MODE_VALID_MASK, 767 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000, 768 150000, 0, 0, 0, 135000, 0x307 }, 769 /* 180 MCS-08 */ { VHT40_MODE_VALID_MASK, 770 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 771 180000, 0, 0, 0, 162000, 0x308 }, 772 /* 181 MCS-09 */ { VHT40_MODE_VALID_MASK, 773 DP_CMN_MOD_IEEE80211_T_VHT_40, 180000, 774 200000, 0, 0, 0, 180000, 0x309 }, 775 /* 182 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 776 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500, 777 225000, 0, 0, 0, 202500, 0x30a }, 778 /* 183 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 779 DP_CMN_MOD_IEEE80211_T_VHT_40, 225000, 780 250000, 0, 0, 0, 225000, 0x30b }, 781 782 /* when number of spatial streams > 1 */ 783 /* 184 MCS-00 */ { VHT40_MODE_VALID_MASK, 784 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000, 785 30000, 0, 0, 0, 27000, 0x320 }, 786 /* 185 MCS-01 */ { VHT40_MODE_VALID_MASK, 787 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 788 60000, 0, 0, 0, 54000, 0x321 }, 789 /* 186 MCS-02 */ { VHT40_MODE_VALID_MASK, 790 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 791 90000, 0, 0, 0, 81000, 0x322 }, 792 /* 187 MCS-03 */ { VHT40_MODE_VALID_MASK, 793 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 794 120000, 0, 0, 0, 108000, 0x323 }, 795 /* 188 MCS-04 */ { VHT40_MODE_VALID_MASK, 796 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 797 180000, 0, 0, 0, 162000, 0x324 }, 798 /* 189 MCS-05 */ { VHT40_MODE_VALID_MASK, 799 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000, 800 240000, 0, 0, 0, 216000, 0x325 }, 801 /* 190 MCS-06 */ { VHT40_MODE_VALID_MASK, 802 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000, 803 270000, 0, 0, 0, 243000, 0x326 }, 804 /* 191 MCS-07 */ { VHT40_MODE_VALID_MASK, 805 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000, 806 300000, 0, 0, 0, 270000, 0x327 }, 807 /* 192 MCS-08 */ { VHT40_MODE_VALID_MASK, 808 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 809 360000, 0, 0, 0, 324000, 0x328 }, 810 /* 193 MCS-09 */ { VHT40_MODE_VALID_MASK, 811 DP_CMN_MOD_IEEE80211_T_VHT_40, 360000, 812 400000, 0, 0, 0, 360000, 0x329 }, 813 /* 194 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 814 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 815 450000, 0, 0, 0, 405000, 0x32a }, 816 /* 195 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 817 DP_CMN_MOD_IEEE80211_T_VHT_40, 450000, 818 500000, 0, 0, 0, 450000, 0x32b }, 819 820 /* When number of spatial streams > 2 use below rate*/ 821 /* 196 MCS-00 */ { VHT40_MODE_VALID_MASK, 822 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500, 823 45000, 0, 0, 0, 40500, 0x340 }, 824 /* 197 MCS-01 */ { VHT40_MODE_VALID_MASK, 825 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 826 90000, 0, 0, 0, 81000, 0x341 }, 827 /* 198 MCS-02 */ { VHT40_MODE_VALID_MASK, 828 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500, 829 135000, 0, 0, 0, 121500, 0x342 }, 830 /* 199 MCS-03 */ { VHT40_MODE_VALID_MASK, 831 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 832 180000, 0, 0, 0, 162000, 0x343 }, 833 /* 200 MCS-04 */ { VHT40_MODE_VALID_MASK, 834 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000, 835 270000, 0, 0, 0, 243000, 0x344 }, 836 /* 201 MCS-05 */ { VHT40_MODE_VALID_MASK, 837 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 838 360000, 0, 0, 0, 324000, 0x345 }, 839 /* 202 MCS-06 */ { VHT40_MODE_VALID_MASK, 840 DP_CMN_MOD_IEEE80211_T_VHT_40, 364500, 841 405000, 0, 0, 0, 364500, 0x346 }, 842 /* 203 MCS-07 */ { VHT40_MODE_VALID_MASK, 843 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 844 450000, 0, 0, 0, 405000, 0x347 }, 845 /* 204 MCS-08 */ { VHT40_MODE_VALID_MASK, 846 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000, 847 540000, 0, 0, 0, 486000, 0x348 }, 848 /* 205 MCS-09 */ { VHT40_MODE_VALID_MASK, 849 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 850 600000, 0, 0, 0, 540000, 0x349 }, 851 /* 206 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 852 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500, 853 675000, 0, 0, 0, 607500, 0x34a}, 854 /* 207 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 855 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000, 856 750000, 0, 0, 0, 675000, 0x34b}, 857 858 /* When number of spatial streams > 3 use below rates */ 859 /* 208 MCS-00 */ { VHT40_MODE_VALID_MASK, 860 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 861 60000, 0, 0, 0, 54000, 0x360}, 862 /* 209 MCS-01 */ { VHT40_MODE_VALID_MASK, 863 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 864 120000, 0, 0, 0, 108000, 0x361}, 865 /* 210 MCS-02 */ { VHT40_MODE_VALID_MASK, 866 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 867 180000, 0, 0, 0, 162000, 0x362}, 868 /* 211 MCS-03 */ { VHT40_MODE_VALID_MASK, 869 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000, 870 240000, 0, 0, 0, 216000, 0x363}, 871 /* 212 MCS-04 */ { VHT40_MODE_VALID_MASK, 872 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 873 260000, 0, 0, 0, 324000, 0x364}, 874 /* 213 MCS-05 */ { VHT40_MODE_VALID_MASK, 875 DP_CMN_MOD_IEEE80211_T_VHT_40, 432000, 876 480000, 0, 0, 0, 432000, 0x365}, 877 /* 214 MCS-06 */ { VHT40_MODE_VALID_MASK, 878 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000, 879 540000, 0, 0, 0, 486000, 0x366}, 880 /* 215 MCS-07 */ { VHT40_MODE_VALID_MASK, 881 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 882 600000, 0, 0, 0, 540000, 0x367}, 883 /* 216 MCS-08 */ { VHT40_MODE_VALID_MASK, 884 DP_CMN_MOD_IEEE80211_T_VHT_40, 648000, 885 720000, 0, 0, 0, 648000, 0x368}, 886 /* 217 MCS-09 */ { VHT40_MODE_VALID_MASK, 887 DP_CMN_MOD_IEEE80211_T_VHT_40, 720000, 888 800000, 0, 0, 0, 720000, 0x369}, 889 /* 218 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 890 DP_CMN_MOD_IEEE80211_T_VHT_40, 810000, 891 900000, 0, 0, 0, 810000, 0x36a }, 892 /* 219 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 893 DP_CMN_MOD_IEEE80211_T_VHT_40, 900000, 894 1000000, 0, 0, 0, 900000, 0x36b }, 895 896 /* when number of spatial streams > 4 use below rates */ 897 /* 220 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 898 DP_CMN_MOD_IEEE80211_T_VHT_40, 67500, 899 75000, 0, 0, 0, 67500, 0x380 }, 900 /* 221 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 901 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000, 902 150000, 0, 0, 0, 135000, 0x381 }, 903 /* 222 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 904 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500, 905 225000, 0, 0, 0, 202500, 0x382 }, 906 /* 223 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 907 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000, 908 300000, 0, 0, 0, 270000, 0x383 }, 909 /* 224 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 910 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 911 450000, 0, 0, 0, 405000, 0x384 }, 912 /* 225 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 913 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 914 600000, 0, 0, 0, 540000, 0x385 }, 915 /* 226 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 916 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500, 917 675000, 0, 0, 0, 607500, 0x386 }, 918 /* 227 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 919 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000, 920 750000, 0, 0, 0, 675000, 0x387 }, 921 /* 228 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 922 DP_CMN_MOD_IEEE80211_T_VHT_40, 923 810000, 900000, 0, 0, 0, 810000, 924 0x388 }, 925 /* 229 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 926 DP_CMN_MOD_IEEE80211_T_VHT_40, 927 900000, 1000000, 0, 0, 0, 900000, 928 0x389 }, 929 /* 230 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 930 DP_CMN_MOD_IEEE80211_T_VHT_40, 931 1012500, 1125000, 0, 0, 0, 1012500, 932 0x38a }, 933 /* 231 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 934 DP_CMN_MOD_IEEE80211_T_VHT_40, 935 1125000, 1250000, 0, 0, 0, 1125000, 936 0x38b }, 937 938 /* when number of spatial streams > 5 use below rates*/ 939 /* 232 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 940 DP_CMN_MOD_IEEE80211_T_VHT_40, 941 81000, 90000, 0, 0, 0, 81000, 0x3a0 942 }, 943 /* 233 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 944 DP_CMN_MOD_IEEE80211_T_VHT_40, 945 162000, 180000, 0, 0, 0, 162000, 946 0x3a1 }, 947 /* 234 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 948 DP_CMN_MOD_IEEE80211_T_VHT_40, 949 243000, 270000, 0, 0, 0, 243000, 950 0x3a2 }, 951 /* 235 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 952 DP_CMN_MOD_IEEE80211_T_VHT_40, 953 324000, 360000, 0, 0, 0, 324000, 954 0x3a3 }, 955 /* 236 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 956 DP_CMN_MOD_IEEE80211_T_VHT_40, 957 486000, 540000, 0, 0, 0, 486000, 958 0x3a4 }, 959 /* 237 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 960 DP_CMN_MOD_IEEE80211_T_VHT_40, 961 648000, 720000, 0, 0, 0, 648000, 962 0x3a5 }, 963 /* 238 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 964 DP_CMN_MOD_IEEE80211_T_VHT_40, 965 729000, 815000, 0, 0, 0, 729000, 966 0x3a6 }, 967 /* 239 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 968 DP_CMN_MOD_IEEE80211_T_VHT_40, 969 810000, 900000, 0, 0, 0, 810000, 970 0x3a7 }, 971 /* 240 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 972 DP_CMN_MOD_IEEE80211_T_VHT_40, 973 972000, 1080000, 0, 0, 0, 972000, 974 0x3a8 }, 975 /* 241 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 976 DP_CMN_MOD_IEEE80211_T_VHT_40, 977 1080000, 1200000, 0, 0, 0, 1080000, 978 0x3a9 }, 979 /* 242 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 980 DP_CMN_MOD_IEEE80211_T_VHT_40, 981 1215000, 1350000, 0, 0, 0, 1215000, 982 0x3aa }, 983 /* 243 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 984 DP_CMN_MOD_IEEE80211_T_VHT_40, 985 1350000, 1500000, 0, 0, 0, 1350000, 986 0x3ab }, 987 988 /* when number of spatial streams > 6 use below rates */ 989 /* 244 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 990 DP_CMN_MOD_IEEE80211_T_VHT_40, 991 94500, 105000, 0, 0, 0, 94500, 0x3c0 992 }, 993 /* 245 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 994 DP_CMN_MOD_IEEE80211_T_VHT_40, 995 189000, 210000, 0, 0, 0, 189000, 996 0x3c1 }, 997 /* 246 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 998 DP_CMN_MOD_IEEE80211_T_VHT_40, 999 283500, 315000, 0, 0, 0, 283500, 1000 0x3c2 }, 1001 /* 247 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 1002 DP_CMN_MOD_IEEE80211_T_VHT_40, 1003 378000, 420000, 0, 0, 0, 378000, 1004 0x3c3 }, 1005 /* 248 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 1006 DP_CMN_MOD_IEEE80211_T_VHT_40, 1007 567000, 630000, 0, 0, 0, 567000, 1008 0x3c4 }, 1009 /* 249 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 1010 DP_CMN_MOD_IEEE80211_T_VHT_40, 1011 756000, 840000, 0, 0, 0, 756000, 1012 0x3c5 }, 1013 /* 250 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 1014 DP_CMN_MOD_IEEE80211_T_VHT_40, 1015 850500, 945000, 0, 0, 0, 850500, 1016 0x3c6 }, 1017 /* 251 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 1018 DP_CMN_MOD_IEEE80211_T_VHT_40, 1019 945000, 1050000, 0, 0, 0, 945000, 1020 0x3c7 }, 1021 /* 252 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 1022 DP_CMN_MOD_IEEE80211_T_VHT_40, 1023 1134000, 1260000, 0, 0, 0, 1134000, 1024 0x3c8 }, 1025 /* 253 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 1026 DP_CMN_MOD_IEEE80211_T_VHT_40, 1027 1260000, 1400000, 0, 0, 0, 1260000, 1028 0x3c9 }, 1029 /* 254 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 1030 DP_CMN_MOD_IEEE80211_T_VHT_40, 1031 1417500, 1575000, 0, 0, 0, 1417500, 1032 0x3ca }, 1033 /* 255 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 1034 DP_CMN_MOD_IEEE80211_T_VHT_40, 1035 1575000, 1750000, 0, 0, 0, 1575000, 1036 0x3cb }, 1037 1038 /* when number of spatial streams > 7 use below rates */ 1039 /* 256 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 1040 DP_CMN_MOD_IEEE80211_T_VHT_40, 1041 108000, 120000, 0, 0, 0, 108000, 1042 0x3e0 }, 1043 /* 257 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 1044 DP_CMN_MOD_IEEE80211_T_VHT_40, 1045 216000, 240000, 0, 0, 0, 216000, 1046 0x3e1 }, 1047 /* 258 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 1048 DP_CMN_MOD_IEEE80211_T_VHT_40, 1049 324000, 360000, 0, 0, 0, 324000, 1050 0x3e2 }, 1051 /* 259 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 1052 DP_CMN_MOD_IEEE80211_T_VHT_40, 1053 432000, 480000, 0, 0, 0, 432000, 1054 0x3e3 }, 1055 /* 260 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 1056 DP_CMN_MOD_IEEE80211_T_VHT_40, 1057 648000, 720000, 0, 0, 0, 648000, 1058 0x3e4 }, 1059 /* 261 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 1060 DP_CMN_MOD_IEEE80211_T_VHT_40, 1061 864000, 960000, 0, 0, 0, 864000, 1062 0x3e5 }, 1063 /* 262 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 1064 DP_CMN_MOD_IEEE80211_T_VHT_40, 1065 972000, 1080000, 0, 0, 0, 972000, 1066 0x3e6 }, 1067 /* 263 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 1068 DP_CMN_MOD_IEEE80211_T_VHT_40, 1069 1080000, 1200000, 0, 0, 0, 1080000, 1070 0x3e7 }, 1071 /* 264 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 1072 DP_CMN_MOD_IEEE80211_T_VHT_40, 1073 1296000, 1440000, 0, 0, 0, 1296000, 1074 0x3e8 }, 1075 /* 265 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 1076 DP_CMN_MOD_IEEE80211_T_VHT_40, 1077 1440000, 1600000, 0, 0, 0, 1440000, 1078 0x3e9 }, 1079 /* 266 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 1080 DP_CMN_MOD_IEEE80211_T_VHT_40, 1081 1620000, 1800000, 0, 0, 0, 1620000, 1082 0x3ea }, 1083 /* 267 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 1084 DP_CMN_MOD_IEEE80211_T_VHT_40, 1085 1800000, 2000000, 0, 0, 0, 1800000, 1086 0x3eb }, 1087 1088 /* 11ac VHT80 rates 1089 */ 1090 /* 268 MCS-00 */ { VHT80_MODE_VALID_MASK, 1091 DP_CMN_MOD_IEEE80211_T_VHT_80, 1092 29300, 32500, 0, 0, 0, 29300, 1093 0x300}, 1094 /* 269 MCS-01 */ { VHT80_MODE_VALID_MASK, 1095 DP_CMN_MOD_IEEE80211_T_VHT_80, 1096 58500, 65000, 0, 0, 0, 58500, 1097 0x301}, 1098 /* 270 MCS-02 */ { VHT80_MODE_VALID_MASK, 1099 DP_CMN_MOD_IEEE80211_T_VHT_80, 1100 87800, 97500, 0, 0, 0, 87800, 1101 0x302}, 1102 /* 271 MCS-03 */ { VHT80_MODE_VALID_MASK, 1103 DP_CMN_MOD_IEEE80211_T_VHT_80, 1104 117000, 130000, 0, 0, 0, 117000, 1105 0x303}, 1106 /* 272 MCS-04 */ { VHT80_MODE_VALID_MASK, 1107 DP_CMN_MOD_IEEE80211_T_VHT_80, 1108 175500, 195000, 0, 0, 0, 175500, 1109 0x304}, 1110 /* 273 MCS-05 */ { VHT80_MODE_VALID_MASK, 1111 DP_CMN_MOD_IEEE80211_T_VHT_80, 1112 234000, 260000, 0, 0, 0, 234000, 1113 0x305}, 1114 /* 274 MCS-06 */ { VHT80_MODE_VALID_MASK, 1115 DP_CMN_MOD_IEEE80211_T_VHT_80, 1116 263300, 292500, 0, 0, 0, 263300, 1117 0x306}, 1118 /* 275 MCS-07 */ { VHT80_MODE_VALID_MASK, 1119 DP_CMN_MOD_IEEE80211_T_VHT_80, 1120 292500, 325000, 0, 0, 0, 292500, 1121 0x307}, 1122 /* 276 MCS-08 */ { VHT80_MODE_VALID_MASK, 1123 DP_CMN_MOD_IEEE80211_T_VHT_80, 1124 351000, 390000, 0, 0, 0, 351000, 1125 0x308}, 1126 /* 277 MCS-09 */ { VHT80_MODE_VALID_MASK, 1127 DP_CMN_MOD_IEEE80211_T_VHT_80, 1128 390000, 433300, 0, 0, 0, 390000, 1129 0x309}, 1130 /* 278 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1131 DP_CMN_MOD_IEEE80211_T_VHT_80, 1132 438800, 487500, 0, 0, 0, 438800, 1133 0x30a}, 1134 /* 279 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1135 DP_CMN_MOD_IEEE80211_T_VHT_80, 1136 487500, 541700, 0, 0, 0, 487500, 1137 0x30b}, 1138 1139 /* When number of spatial streams > 1 use below rates*/ 1140 /* 280 MCS-00 */ { VHT80_MODE_VALID_MASK, 1141 DP_CMN_MOD_IEEE80211_T_VHT_80, 1142 58500, 65000, 0, 0, 0, 58500, 1143 0x320}, 1144 /* 281 MCS-01 */ { VHT80_MODE_VALID_MASK, 1145 DP_CMN_MOD_IEEE80211_T_VHT_80, 1146 117000, 130000, 0, 0, 0, 117000, 1147 0x321}, 1148 /* 282 MCS-02 */ { VHT80_MODE_VALID_MASK, 1149 DP_CMN_MOD_IEEE80211_T_VHT_80, 1150 175500, 195000, 0, 0, 0, 175500, 1151 0x322}, 1152 /* 283 MCS-03 */ { VHT80_MODE_VALID_MASK, 1153 DP_CMN_MOD_IEEE80211_T_VHT_80, 1154 234000, 260000, 0, 0, 0, 234000, 1155 0x323}, 1156 /* 284 MCS-04 */ { VHT80_MODE_VALID_MASK, 1157 DP_CMN_MOD_IEEE80211_T_VHT_80, 1158 351000, 390000, 0, 0, 0, 351000, 1159 0x324}, 1160 /* 285 MCS-05 */ { VHT80_MODE_VALID_MASK, 1161 DP_CMN_MOD_IEEE80211_T_VHT_80, 1162 468000, 520000, 0, 0, 0, 468000, 1163 0x325}, 1164 /* 286 MCS-06 */ { VHT80_MODE_VALID_MASK, 1165 DP_CMN_MOD_IEEE80211_T_VHT_80, 1166 526500, 585000, 0, 0, 0, 526500, 1167 0x326}, 1168 /* 287 MCS-07 */ { VHT80_MODE_VALID_MASK, 1169 DP_CMN_MOD_IEEE80211_T_VHT_80, 1170 585000, 650000, 0, 0, 0, 585000, 1171 0x327}, 1172 /* 288 MCS-08 */ { VHT80_MODE_VALID_MASK, 1173 DP_CMN_MOD_IEEE80211_T_VHT_80, 1174 702000, 780000, 0, 0, 0, 702000, 1175 0x328}, 1176 /* 289 MCS-09 */ { VHT80_MODE_VALID_MASK, 1177 DP_CMN_MOD_IEEE80211_T_VHT_80, 1178 780000, 866700, 0, 0, 0, 780000, 1179 0x329}, 1180 /* 290 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1181 DP_CMN_MOD_IEEE80211_T_VHT_80, 1182 877500, 975000, 0, 0, 0, 877500, 1183 0x32a}, 1184 /* 291 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1185 DP_CMN_MOD_IEEE80211_T_VHT_80, 1186 975000, 1083300, 0, 0, 0, 975000, 1187 0x32b}, 1188 1189 /* When number of spatial streams > 2 use below rates */ 1190 /* 292 MCS-00 */ { VHT80_MODE_VALID_MASK, 1191 DP_CMN_MOD_IEEE80211_T_VHT_80, 1192 87800, 97500, 0, 0, 0, 87800, 0x340 1193 }, 1194 /* 293 MCS-01 */ { VHT80_MODE_VALID_MASK, 1195 DP_CMN_MOD_IEEE80211_T_VHT_80, 1196 175500, 195000, 0, 0, 0, 175500, 1197 0x341 }, 1198 /* 294 MCS-02 */ { VHT80_MODE_VALID_MASK, 1199 DP_CMN_MOD_IEEE80211_T_VHT_80, 1200 263300, 292500, 0, 0, 0, 263300, 1201 0x342 }, 1202 /* 295 MCS-03 */ { VHT80_MODE_VALID_MASK, 1203 DP_CMN_MOD_IEEE80211_T_VHT_80, 1204 351000, 390000, 0, 0, 0, 351000, 1205 0x343 }, 1206 /* 296 MCS-04 */ { VHT80_MODE_VALID_MASK, 1207 DP_CMN_MOD_IEEE80211_T_VHT_80, 1208 526500, 585000, 0, 0, 0, 526500, 1209 0x344 }, 1210 /* 297 MCS-05 */ { VHT80_MODE_VALID_MASK, 1211 DP_CMN_MOD_IEEE80211_T_VHT_80, 1212 702000, 780000, 0, 0, 0, 702000, 1213 0x345 }, 1214 /* 298 MCS-06 */ { VHT_INVALID_RATES_MASK, 1215 DP_CMN_MOD_IEEE80211_T_VHT_80, 1216 789800, 877500, 0, 0, 0, 789800, 1217 0x346 }, 1218 /* 299 MCS-07 */ { VHT80_MODE_VALID_MASK, 1219 DP_CMN_MOD_IEEE80211_T_VHT_80, 1220 877500, 975000, 0, 0, 0, 877500, 1221 0x347 }, 1222 /* 300 MCS-08 */ { VHT80_MODE_VALID_MASK, 1223 DP_CMN_MOD_IEEE80211_T_VHT_80, 1224 1053000, 1170000, 0, 0, 0, 1053000, 1225 0x348 }, 1226 /* 301 MCS-09 */ { VHT80_MODE_VALID_MASK, 1227 DP_CMN_MOD_IEEE80211_T_VHT_80, 1228 1170000, 1300000, 0, 0, 0, 1170000, 1229 0x349 }, 1230 /* 302 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1231 DP_CMN_MOD_IEEE80211_T_VHT_80, 1232 1316300, 1462500, 0, 0, 0, 1316300, 1233 0x34a }, 1234 /* 303 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1235 DP_CMN_MOD_IEEE80211_T_VHT_80, 1236 1462500, 1625000, 0, 0, 0, 1462500, 1237 0x34b }, 1238 /* When number of spatial streams > 3 use below rates */ 1239 /* 304 MCS-00 */ { VHT80_MODE_VALID_MASK, 1240 DP_CMN_MOD_IEEE80211_T_VHT_80, 1241 117000, 130000, 0, 0, 0, 117000, 1242 0x360 }, 1243 /* 305 MCS-01 */ { VHT80_MODE_VALID_MASK, 1244 DP_CMN_MOD_IEEE80211_T_VHT_80, 1245 234000, 260000, 0, 0, 0, 234000, 1246 0x361 }, 1247 /* 306 MCS-02 */ { VHT80_MODE_VALID_MASK, 1248 DP_CMN_MOD_IEEE80211_T_VHT_80, 1249 351000, 390000, 0, 0, 0, 351000, 1250 0x362 }, 1251 /* 307 MCS-03 */ { VHT80_MODE_VALID_MASK, 1252 DP_CMN_MOD_IEEE80211_T_VHT_80, 1253 468000, 520000, 0, 0, 0, 468000, 1254 0x363 }, 1255 /* 308 MCS-04 */ { VHT80_MODE_VALID_MASK, 1256 DP_CMN_MOD_IEEE80211_T_VHT_80, 1257 702000, 780000, 0, 0, 0, 702000, 1258 0x364 }, 1259 /* 309 MCS-05 */ { VHT80_MODE_VALID_MASK, 1260 DP_CMN_MOD_IEEE80211_T_VHT_80, 1261 936000, 1040000, 0, 0, 0, 936000, 1262 0x365 }, 1263 /* 310 MCS-06 */ { VHT80_MODE_VALID_MASK, 1264 DP_CMN_MOD_IEEE80211_T_VHT_80, 1265 1053000, 1170000, 0, 0, 0, 1053000, 1266 0x366 }, 1267 /* 311 MCS-07 */ { VHT80_MODE_VALID_MASK, 1268 DP_CMN_MOD_IEEE80211_T_VHT_80, 1269 1170000, 1300000, 0, 0, 0, 1170000, 1270 0x367 }, 1271 /* 312 MCS-08 */ { VHT80_MODE_VALID_MASK, 1272 DP_CMN_MOD_IEEE80211_T_VHT_80, 1273 1404000, 1560000, 0, 0, 0, 1404000, 1274 0x368 }, 1275 /* 313 MCS-09 */ { VHT80_MODE_VALID_MASK, 1276 DP_CMN_MOD_IEEE80211_T_VHT_80, 1277 1560000, 1733000, 0, 0, 0, 1560000, 1278 0x369 }, 1279 /* 314 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1280 DP_CMN_MOD_IEEE80211_T_VHT_80, 1281 1755000, 1950000, 0, 0, 0, 1755000, 1282 0x36a }, 1283 /* 315 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1284 DP_CMN_MOD_IEEE80211_T_VHT_80, 1285 1950000, 2166700, 0, 0, 0, 1950000, 1286 0x36b }, 1287 /* When number of spatial streams > 4 use below rates */ 1288 /* 316 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1289 DP_CMN_MOD_IEEE80211_T_VHT_80, 1290 146300, 162500, 0, 0, 0, 146300, 1291 0x380 }, 1292 /* 317 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1293 DP_CMN_MOD_IEEE80211_T_VHT_80, 1294 292500, 325000, 0, 0, 0, 292500, 1295 0x381 }, 1296 /* 318 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1297 DP_CMN_MOD_IEEE80211_T_VHT_80, 1298 438800, 487500, 0, 0, 0, 438800, 1299 0x382 }, 1300 /* 319 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1301 DP_CMN_MOD_IEEE80211_T_VHT_80, 1302 585000, 650000, 0, 0, 0, 585000, 1303 0x383 }, 1304 /* 320 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1305 DP_CMN_MOD_IEEE80211_T_VHT_80, 1306 877500, 975000, 0, 0, 0, 877500, 1307 0x384 }, 1308 /* 321 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1309 DP_CMN_MOD_IEEE80211_T_VHT_80, 1310 1170000, 1300000, 0, 0, 0, 1170000, 1311 0x385 }, 1312 /* 322 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1313 DP_CMN_MOD_IEEE80211_T_VHT_80, 1314 1316300, 1462500, 0, 0, 0, 1316300, 1315 0x386 }, 1316 /* 323 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1317 DP_CMN_MOD_IEEE80211_T_VHT_80, 1318 1462500, 1625000, 0, 0, 0, 1462500, 1319 0x387 }, 1320 /* 324 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1321 DP_CMN_MOD_IEEE80211_T_VHT_80, 1322 1755000, 1950000, 0, 0, 0, 1755000, 1323 0x388 }, 1324 /* 325 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1325 DP_CMN_MOD_IEEE80211_T_VHT_80, 1326 1950000, 2166700, 0, 0, 0, 1950000, 1327 0x389 }, 1328 /* 326 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1329 DP_CMN_MOD_IEEE80211_T_VHT_80, 1330 2193800, 2437500, 0, 0, 0, 2193800, 1331 0x38a }, 1332 /* 327 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1333 DP_CMN_MOD_IEEE80211_T_VHT_80, 1334 2437500, 2708300, 0, 0, 0, 2437500, 1335 0x38b }, 1336 /* When number of spatial streams > 5 use below rates */ 1337 /* 328 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1338 DP_CMN_MOD_IEEE80211_T_VHT_80, 1339 175500, 195000, 0, 0, 0, 175500, 1340 0x3a0 }, 1341 /* 329 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1342 DP_CMN_MOD_IEEE80211_T_VHT_80, 1343 351000, 390000, 0, 0, 0, 351000, 1344 0x3a1 }, 1345 /* 330 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1346 DP_CMN_MOD_IEEE80211_T_VHT_80, 1347 526500, 585500, 0, 0, 0, 526500, 1348 0x3a2 }, 1349 /* 331 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1350 DP_CMN_MOD_IEEE80211_T_VHT_80, 1351 702000, 780000, 0, 0, 0, 702000, 1352 0x3a3 }, 1353 /* 332 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1354 DP_CMN_MOD_IEEE80211_T_VHT_80, 1355 1053000, 1170000, 0, 0, 0, 1053000, 1356 0x3a4 }, 1357 /* 333 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1358 DP_CMN_MOD_IEEE80211_T_VHT_80, 1359 1404000, 1560000, 0, 0, 0, 1404000, 1360 0x3a5 }, 1361 /* 334 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1362 DP_CMN_MOD_IEEE80211_T_VHT_80, 1363 1579500, 1755000, 0, 0, 0, 1579500, 1364 0x3a6 }, 1365 /* 335 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1366 DP_CMN_MOD_IEEE80211_T_VHT_80, 1367 1755000, 1950000, 0, 0, 0, 1755000, 1368 0x3a7 }, 1369 /* 336 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1370 DP_CMN_MOD_IEEE80211_T_VHT_80, 1371 2106000, 2340000, 0, 0, 0, 2106000, 1372 0x3a8 }, 1373 /* 337 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1374 DP_CMN_MOD_IEEE80211_T_VHT_80, 1375 2340000, 2600000, 0, 0, 0, 2340000, 1376 0x3a9 }, 1377 /* 338 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1378 DP_CMN_MOD_IEEE80211_T_VHT_80, 1379 2632500, 2925000, 0, 0, 0, 2632500, 1380 0x3aa }, 1381 /* 339 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1382 DP_CMN_MOD_IEEE80211_T_VHT_80, 1383 2925000, 3250000, 0, 0, 0, 2925000, 1384 0x3ab }, 1385 /* When number of spatial streams > 6 use below rates*/ 1386 /* 340 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1387 DP_CMN_MOD_IEEE80211_T_VHT_80, 1388 204800, 227500, 0, 0, 0, 204800, 1389 0x3c0 }, 1390 /* 341 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1391 DP_CMN_MOD_IEEE80211_T_VHT_80, 1392 409500, 455000, 0, 0, 0, 409500, 1393 0x3c1 }, 1394 /* 342 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1395 DP_CMN_MOD_IEEE80211_T_VHT_80, 1396 614300, 682500, 0, 0, 0, 614300, 1397 0x3c2 }, 1398 /* 343 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1399 DP_CMN_MOD_IEEE80211_T_VHT_80, 1400 819000, 910000, 0, 0, 0, 819000, 1401 0x3c3 }, 1402 /* 344 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1403 DP_CMN_MOD_IEEE80211_T_VHT_80, 1404 1288500, 1365000, 0, 0, 0, 1288500, 1405 0x3c4 }, 1406 /* 345 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1407 DP_CMN_MOD_IEEE80211_T_VHT_80, 1408 1638000, 1820000, 0, 0, 0, 1638000, 1409 0x3c5 }, 1410 /* 346 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1411 DP_CMN_MOD_IEEE80211_T_VHT_80, 1412 1842800, 2047500, 0, 0, 0, 1842800, 1413 0x3c6 }, 1414 /* 347 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1415 DP_CMN_MOD_IEEE80211_T_VHT_80, 1416 2047500, 2275000, 0, 0, 0, 2047500, 1417 0x3c7 }, 1418 /* 348 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1419 DP_CMN_MOD_IEEE80211_T_VHT_80, 1420 2457000, 2730000, 0, 0, 0, 2457000, 1421 0x3c8 }, 1422 /* 349 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1423 DP_CMN_MOD_IEEE80211_T_VHT_80, 1424 2730000, 3033300, 0, 0, 0, 2730000, 1425 0x3c9 }, 1426 /* 350 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1427 DP_CMN_MOD_IEEE80211_T_VHT_80, 1428 3071300, 3412500, 0, 0, 0, 3071300, 1429 0x3ca }, 1430 /* 351 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1431 DP_CMN_MOD_IEEE80211_T_VHT_80, 1432 3412500, 3791700, 0, 0, 0, 3412500, 1433 0x3cb }, 1434 /* When number of spatial streams > 7 use below rates*/ 1435 /* 352 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1436 DP_CMN_MOD_IEEE80211_T_VHT_80, 1437 234000, 260000, 0, 0, 0, 234000, 1438 0x3e0 }, 1439 /* 353 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1440 DP_CMN_MOD_IEEE80211_T_VHT_80, 1441 468000, 520000, 0, 0, 0, 468000, 1442 0x3e1}, 1443 /* 354 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1444 DP_CMN_MOD_IEEE80211_T_VHT_80, 1445 702000, 780000, 0, 0, 0, 702000, 1446 0x3e2}, 1447 /* 355 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1448 DP_CMN_MOD_IEEE80211_T_VHT_80, 1449 936000, 1040000, 0, 0, 0, 936000, 1450 0x3e3}, 1451 /* 356 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1452 DP_CMN_MOD_IEEE80211_T_VHT_80, 1453 1404000, 1560000, 0, 0, 0, 1404000, 1454 0x3e4}, 1455 /* 357 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1456 DP_CMN_MOD_IEEE80211_T_VHT_80, 1457 1872000, 2080000, 0, 0, 0, 1872000, 1458 0x3e5}, 1459 /* 358 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1460 DP_CMN_MOD_IEEE80211_T_VHT_80, 1461 2106000, 2340000, 0, 0, 0, 2106000, 1462 0x3e6}, 1463 /* 359 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1464 DP_CMN_MOD_IEEE80211_T_VHT_80, 1465 2340000, 2600000, 0, 0, 0, 2340000, 1466 0x3e7}, 1467 /* 360 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1468 DP_CMN_MOD_IEEE80211_T_VHT_80, 1469 2808000, 3120000, 0, 0, 0, 2808000, 1470 0x3e8}, 1471 /* 361 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1472 DP_CMN_MOD_IEEE80211_T_VHT_80, 1473 3120000, 3466700, 0, 0, 0, 3120000, 1474 0x3e9}, 1475 /* 362 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1476 DP_CMN_MOD_IEEE80211_T_VHT_80, 1477 3510000, 3900000, 0, 0, 0, 3510000, 1478 0x3ea}, 1479 /* 363 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1480 DP_CMN_MOD_IEEE80211_T_VHT_80, 1481 3900000, 4333300, 0, 0, 0, 3900000, 1482 0x3eb}, 1483 1484 /* 11ac VHT160 rates 1485 */ 1486 /* 364 MCS-00 */ { VHT160_MODE_VALID_MASK, 1487 DP_CMN_MOD_IEEE80211_T_VHT_160, 1488 58500, 65000, 0, 0, 0, 58500, 1489 0x300}, 1490 /* 365 MCS-01 */ { VHT160_MODE_VALID_MASK, 1491 DP_CMN_MOD_IEEE80211_T_VHT_160, 1492 117000, 130000, 0, 0, 0, 117000, 1493 0x301}, 1494 /* 366 MCS-02 */ { VHT160_MODE_VALID_MASK, 1495 DP_CMN_MOD_IEEE80211_T_VHT_160, 1496 175500, 195000, 0, 0, 0, 175500, 1497 0x302}, 1498 /* 367 MCS-03 */ { VHT160_MODE_VALID_MASK, 1499 DP_CMN_MOD_IEEE80211_T_VHT_160, 1500 234000, 260000, 0, 0, 0, 234000, 1501 0x303}, 1502 /* 368 MCS-04 */ { VHT160_MODE_VALID_MASK, 1503 DP_CMN_MOD_IEEE80211_T_VHT_160, 1504 351000, 390000, 0, 0, 0, 351000, 1505 0x304}, 1506 /* 369 MCS-05 */ { VHT160_MODE_VALID_MASK, 1507 DP_CMN_MOD_IEEE80211_T_VHT_160, 1508 468000, 520000, 0, 0, 0, 468000, 1509 0x305}, 1510 /* 370 MCS-06 */ { VHT160_MODE_VALID_MASK, 1511 DP_CMN_MOD_IEEE80211_T_VHT_160, 1512 526500, 585000, 0, 0, 0, 526500, 1513 0x306}, 1514 /* 371 MCS-07 */ { VHT160_MODE_VALID_MASK, 1515 DP_CMN_MOD_IEEE80211_T_VHT_160, 1516 585000, 650000, 0, 0, 0, 585000, 1517 0x307}, 1518 /* 372 MCS-08 */ { VHT160_MODE_VALID_MASK, 1519 DP_CMN_MOD_IEEE80211_T_VHT_160, 1520 702000, 780000, 0, 0, 0, 702000, 1521 0x308}, 1522 /* 373 MCS-09 */ { VHT160_MODE_VALID_MASK, 1523 DP_CMN_MOD_IEEE80211_T_VHT_160, 1524 780000, 866700, 0, 0, 0, 780000, 1525 0x309}, 1526 /* 374 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1527 DP_CMN_MOD_IEEE80211_T_VHT_160, 1528 877500, 975000, 0, 0, 0, 877500, 1529 0x30a }, 1530 /* 375 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1531 DP_CMN_MOD_IEEE80211_T_VHT_160, 1532 975000, 1083300, 0, 0, 0, 975000, 1533 0x30b }, 1534 /* If maximum number of spatial streams supported 1535 * at 160MHZ > 1 use below rates 1536 */ 1537 /* 376 MCS-00 */ { VHT160_MODE_VALID_MASK, 1538 DP_CMN_MOD_IEEE80211_T_VHT_160, 1539 117000, 130000, 0, 0, 0, 117000, 1540 0x320}, 1541 /* 377 MCS-01 */ { VHT160_MODE_VALID_MASK, 1542 DP_CMN_MOD_IEEE80211_T_VHT_160, 1543 234000, 260000, 0, 0, 0, 234000, 1544 0x321}, 1545 /* 378 MCS-02 */ { VHT160_MODE_VALID_MASK, 1546 DP_CMN_MOD_IEEE80211_T_VHT_160, 1547 351000, 390000, 0, 0, 0, 351000, 1548 0x322}, 1549 /* 379 MCS-03 */ { VHT160_MODE_VALID_MASK, 1550 DP_CMN_MOD_IEEE80211_T_VHT_160, 1551 468000, 520000, 0, 0, 0, 468000, 1552 0x323}, 1553 /* 380 MCS-04 */ { VHT160_MODE_VALID_MASK, 1554 DP_CMN_MOD_IEEE80211_T_VHT_160, 1555 702000, 780000, 0, 0, 0, 702000, 1556 0x324}, 1557 /* 381 MCS-05 */ { VHT160_MODE_VALID_MASK, 1558 DP_CMN_MOD_IEEE80211_T_VHT_160, 1559 936000, 1040000, 0, 0, 0, 936000, 1560 0x325}, 1561 /* 382 MCS-06 */ { VHT160_MODE_VALID_MASK, 1562 DP_CMN_MOD_IEEE80211_T_VHT_160, 1563 1053000, 1170000, 0, 0, 0, 1053000, 1564 0x326}, 1565 /* 383 MCS-07 */ { VHT160_MODE_VALID_MASK, 1566 DP_CMN_MOD_IEEE80211_T_VHT_160, 1567 1170000, 1300000, 0, 0, 0, 1170000, 1568 0x327}, 1569 /* 384 MCS-08 */ { VHT160_MODE_VALID_MASK, 1570 DP_CMN_MOD_IEEE80211_T_VHT_160, 1571 1404000, 1560000, 0, 0, 0, 1404000, 1572 0x328}, 1573 /* 385 MCS-09 */ { VHT160_MODE_VALID_MASK, 1574 DP_CMN_MOD_IEEE80211_T_VHT_160, 1575 1560000, 1733300, 0, 0, 0, 1560000, 1576 0x329}, 1577 /* 386 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1578 DP_CMN_MOD_IEEE80211_T_VHT_160, 1579 1755000, 1950000, 0, 0, 0, 1755000, 1580 0x32a}, 1581 /* 387 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1582 DP_CMN_MOD_IEEE80211_T_VHT_160, 1583 1950000, 2166700, 0, 0, 0, 1950000, 1584 0x32b}, 1585 /* If maximum number of spatial streams supported 1586 * at 160MHZ > 2 use below rates 1587 */ 1588 /* 388 MCS-00 */ { VHT160_MODE_VALID_MASK, 1589 DP_CMN_MOD_IEEE80211_T_VHT_160, 1590 175500, 195000, 0, 0, 0, 175500, 1591 0x340 }, 1592 /* 389 MCS-01 */ { VHT160_MODE_VALID_MASK, 1593 DP_CMN_MOD_IEEE80211_T_VHT_160, 1594 351000, 390000, 0, 0, 0, 351000, 1595 0x341 }, 1596 /* 390 MCS-02 */ { VHT160_MODE_VALID_MASK, 1597 DP_CMN_MOD_IEEE80211_T_VHT_160, 1598 526500, 585000, 0, 0, 0, 526500, 1599 0x342 }, 1600 /* 391 MCS-03 */ { VHT160_MODE_VALID_MASK, 1601 DP_CMN_MOD_IEEE80211_T_VHT_160, 1602 702000, 780000, 0, 0, 0, 702000, 1603 0x343 }, 1604 /* 392 MCS-04 */ { VHT160_MODE_VALID_MASK, 1605 DP_CMN_MOD_IEEE80211_T_VHT_160, 1606 1053000, 1170000, 0, 0, 0, 1053000, 1607 0x344 }, 1608 /* 393 MCS-05 */ { VHT160_MODE_VALID_MASK, 1609 DP_CMN_MOD_IEEE80211_T_VHT_160, 1610 1404000, 1560000, 0, 0, 0, 1404000, 1611 0x345 }, 1612 /* 394 MCS-06 */ { VHT160_MODE_VALID_MASK, 1613 DP_CMN_MOD_IEEE80211_T_VHT_160, 1614 1579500, 1755000, 0, 0, 0, 1579500, 1615 0x346 }, 1616 /* 395 MCS-07 */ { VHT160_MODE_VALID_MASK, 1617 DP_CMN_MOD_IEEE80211_T_VHT_160, 1618 1755000, 1755000, 0, 0, 0, 1755000, 1619 0x347 }, 1620 /* 396 MCS-08 */ { VHT160_MODE_VALID_MASK, 1621 DP_CMN_MOD_IEEE80211_T_VHT_160, 1622 2106000, 2340000, 0, 0, 0, 2106000, 1623 0x348 }, 1624 /* 397 MCS-09 */ { VHT160_MODE_VALID_MASK, 1625 DP_CMN_MOD_IEEE80211_T_VHT_160, 1626 2340000, 2600000, 0, 0, 0, 2340000, 1627 0x349 }, 1628 /* 398 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1629 DP_CMN_MOD_IEEE80211_T_VHT_160, 1630 2632500, 2925000, 0, 0, 0, 2632500, 1631 0x34a }, 1632 /* 399 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1633 DP_CMN_MOD_IEEE80211_T_VHT_160, 1634 2925000, 3250000, 0, 0, 0, 2925000, 1635 0x34b }, 1636 /* If maximum number of spatial streams supported 1637 * at 160MHZ > 3 use below rates 1638 */ 1639 /* 400 MCS-00 */ { VHT160_MODE_VALID_MASK, 1640 DP_CMN_MOD_IEEE80211_T_VHT_160, 1641 234000, 260000, 0, 0, 0, 234000, 1642 0x360 }, 1643 /* 401 MCS-01 */ { VHT160_MODE_VALID_MASK, 1644 DP_CMN_MOD_IEEE80211_T_VHT_160, 1645 468000, 520000, 0, 0, 0, 468000, 1646 0x361 }, 1647 /* 402 MCS-02 */ { VHT160_MODE_VALID_MASK, 1648 DP_CMN_MOD_IEEE80211_T_VHT_160, 1649 702000, 780000, 0, 0, 0, 702000, 1650 0x362 }, 1651 /* 403 MCS-03 */ { VHT160_MODE_VALID_MASK, 1652 DP_CMN_MOD_IEEE80211_T_VHT_160, 1653 936000, 1040000, 0, 0, 0, 936000, 1654 0x363 }, 1655 /* 404 MCS-04 */ { VHT160_MODE_VALID_MASK, 1656 DP_CMN_MOD_IEEE80211_T_VHT_160, 1657 1404000, 1560000, 0, 0, 0, 1404000, 1658 0x364 }, 1659 /* 405 MCS-05 */ { VHT160_MODE_VALID_MASK, 1660 DP_CMN_MOD_IEEE80211_T_VHT_160, 1661 1872000, 2080000, 0, 0, 0, 1872000, 1662 0x365 }, 1663 /* 406 MCS-06 */ { VHT160_MODE_VALID_MASK, 1664 DP_CMN_MOD_IEEE80211_T_VHT_160, 1665 2106000, 2340000, 0, 0, 0, 2106000, 1666 0x366 }, 1667 /* 407 MCS-07 */ { VHT160_MODE_VALID_MASK, 1668 DP_CMN_MOD_IEEE80211_T_VHT_160, 1669 2340000, 2600000, 0, 0, 0, 2340000, 1670 0x367 }, 1671 /* 408 MCS-08 */ { VHT160_MODE_VALID_MASK, 1672 DP_CMN_MOD_IEEE80211_T_VHT_160, 1673 2808000, 3120000, 0, 0, 0, 2808000, 1674 0x368 }, 1675 /* 409 MCS-09 */ { VHT160_LDPC_ONLY_MASKS, 1676 DP_CMN_MOD_IEEE80211_T_VHT_160, 1677 3120000, 3466700, 0, 0, 0, 3120000, 1678 0x369 }, 1679 /* 410 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1680 DP_CMN_MOD_IEEE80211_T_VHT_160, 1681 3510000, 3900000, 0, 0, 0, 3510000, 1682 0x36a }, 1683 /* 411 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1684 DP_CMN_MOD_IEEE80211_T_VHT_160, 1685 3900000, 4333300, 0, 0, 0, 3900000, 1686 0x36b }, 1687 1688 /* 11ax RU242 rates 1689 */ 1690 /* 412 MCS-00 */ { HE20_MODE_VALID_MASK, 1691 DP_CMN_MOD_IEEE80211_T_HE_20, 1692 8600, 8900, 8100, 7300, 4300, 8600, 0x400}, 1693 /* 413 MCS-01 */ { HE20_MODE_VALID_MASK, 1694 DP_CMN_MOD_IEEE80211_T_HE_20, 1695 17200, 17700, 16300, 14600, 8600, 17200, 1696 0x401}, 1697 /* 414 MCS-02 */ { HE20_MODE_VALID_MASK, 1698 DP_CMN_MOD_IEEE80211_T_HE_20, 1699 25800, 26600, 24400, 21900, 0, 25800, 1700 0x402}, 1701 /* 415 MCS-03 */ { HE20_MODE_VALID_MASK, 1702 DP_CMN_MOD_IEEE80211_T_HE_20, 1703 34400, 35500, 32500, 29300, 17700, 34400, 1704 0x403}, 1705 /* 416 MCS-04 */ { HE20_MODE_VALID_MASK, 1706 DP_CMN_MOD_IEEE80211_T_HE_20, 1707 51600, 53200, 48800, 43900, 25800, 51600, 1708 0x404}, 1709 /* 417 MCS-05 */ { HE20_MODE_VALID_MASK, 1710 DP_CMN_MOD_IEEE80211_T_HE_20, 1711 68800, 70900, 65000, 58500, 0, 68800, 1712 0x405}, 1713 /* 418 MCS-06 */ { HE20_MODE_VALID_MASK, 1714 DP_CMN_MOD_IEEE80211_T_HE_20, 1715 77400, 79800, 73100, 65800, 0, 77400, 1716 0x406}, 1717 /* 419 MCS-07 */ { HE20_MODE_VALID_MASK, 1718 DP_CMN_MOD_IEEE80211_T_HE_20, 1719 86000, 88600, 81300, 73100, 0, 86000, 1720 0x407}, 1721 /* 420 MCS-08 */ { HE20_MODE_VALID_MASK, 1722 DP_CMN_MOD_IEEE80211_T_HE_20, 1723 103200, 106400, 97500, 87800, 0, 103200, 1724 0x408}, 1725 /* 421 MCS-09 */ { HE20_MODE_VALID_MASK, 1726 DP_CMN_MOD_IEEE80211_T_HE_20, 1727 114700, 118200, 108300, 97500, 0, 114700, 1728 0x409}, 1729 /* 422 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1730 DP_CMN_MOD_IEEE80211_T_HE_20, 1731 129000, 133000, 121900, 109700, 0, 129000, 1732 0x40a}, 1733 /* 423 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1734 DP_CMN_MOD_IEEE80211_T_HE_20, 1735 143400, 147700, 135400, 121900, 0, 143400, 1736 0x40b}, 1737 /* When number spatial streams > 1 use below rates */ 1738 /* 424 MCS-00 */ { HE20_MODE_VALID_MASK, 1739 DP_CMN_MOD_IEEE80211_T_HE_20, 1740 17200, 17700, 16300, 14600, 8600, 17200, 1741 0x420}, 1742 /* 425 MCS-01 */ { HE20_MODE_VALID_MASK, 1743 DP_CMN_MOD_IEEE80211_T_HE_20, 1744 34400, 35500, 32500, 29300, 17700, 34400, 1745 0x421}, 1746 /* 426 MCS-02 */ { HE20_MODE_VALID_MASK, 1747 DP_CMN_MOD_IEEE80211_T_HE_20, 1748 51600, 53200, 48800, 43900, 0, 51600, 1749 0x422}, 1750 /* 427 MCS-03 */ { HE20_MODE_VALID_MASK, 1751 DP_CMN_MOD_IEEE80211_T_HE_20, 1752 68800, 70900, 65000, 58500, 34400, 68800, 1753 0x423}, 1754 /* 428 MCS-04 */ { HE20_MODE_VALID_MASK, 1755 DP_CMN_MOD_IEEE80211_T_HE_20, 1756 103200, 106400, 97500, 87800, 51600, 103200, 1757 0x424}, 1758 /* 429 MCS-05 */ { HE20_MODE_VALID_MASK, 1759 DP_CMN_MOD_IEEE80211_T_HE_20, 1760 137600, 141800, 130000, 117000, 0, 137600, 1761 0x425}, 1762 /* 430 MCS-06 */ { HE20_MODE_VALID_MASK, 1763 DP_CMN_MOD_IEEE80211_T_HE_20, 1764 154900, 159500, 146300, 131600, 0, 154900, 1765 0x426}, 1766 /* 431 MCS-07 */ { HE20_MODE_VALID_MASK, 1767 DP_CMN_MOD_IEEE80211_T_HE_20, 1768 172100, 177300, 162500, 146300, 0, 172100, 1769 0x427}, 1770 /* 432 MCS-08 */ { HE20_MODE_VALID_MASK, 1771 DP_CMN_MOD_IEEE80211_T_HE_20, 1772 206500, 212700, 195000, 175500, 0, 206500, 1773 0x428}, 1774 /* 433 MCS-09 */ { HE20_MODE_VALID_MASK, 1775 DP_CMN_MOD_IEEE80211_T_HE_20, 1776 229400, 236400, 216700, 195000, 0, 229400, 1777 0x429}, 1778 /* 434 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1779 DP_CMN_MOD_IEEE80211_T_HE_20, 1780 258100, 265900, 243800, 219400, 0, 258100, 1781 0x42a}, 1782 /* 435 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1783 DP_CMN_MOD_IEEE80211_T_HE_20, 1784 286800, 295500, 270800, 243800, 0, 286800, 1785 0x42b}, 1786 1787 /* When number of spatial streams > 2 1788 * use below rates 1789 */ 1790 /* 436 MCS-00 */ { HE20_MODE_VALID_MASK, 1791 DP_CMN_MOD_IEEE80211_T_HE_20, 1792 25800, 26600, 24400, 21900, 12900, 25800, 1793 0x440}, 1794 /* 437 MCS-01 */ { HE20_MODE_VALID_MASK, 1795 DP_CMN_MOD_IEEE80211_T_HE_20, 1796 51600, 53200, 48800, 43900, 25800, 51600, 1797 0x441}, 1798 /* 438 MCS-02 */ { HE20_MODE_VALID_MASK, 1799 DP_CMN_MOD_IEEE80211_T_HE_20, 1800 77400, 79800, 73100, 65800, 0, 77400, 1801 0x442}, 1802 /* 439 MCS-03 */ { HE20_MODE_VALID_MASK, 1803 DP_CMN_MOD_IEEE80211_T_HE_20, 1804 103200, 106400, 97500, 87800, 51600, 103200, 1805 0x443}, 1806 /* 440 MCS-04 */ { HE20_MODE_VALID_MASK, 1807 DP_CMN_MOD_IEEE80211_T_HE_20, 1808 154900, 159500, 146300, 131600, 77400, 154900, 1809 0x444}, 1810 /* 441 MCS-05 */ { HE20_MODE_VALID_MASK, 1811 DP_CMN_MOD_IEEE80211_T_HE_20, 1812 206500, 212700, 195000, 175500, 0, 206500, 1813 0x445}, 1814 /* 442 MCS-06 */ { HE20_MODE_VALID_MASK, 1815 DP_CMN_MOD_IEEE80211_T_HE_20, 1816 232300, 239300, 219400, 197400, 0, 232300, 1817 0x446}, 1818 /* 443 MCS-07 */ { HE20_MODE_VALID_MASK, 1819 DP_CMN_MOD_IEEE80211_T_HE_20, 1820 258100, 265900, 243800, 219400, 0, 258100, 1821 0x447}, 1822 /* 444 MCS-08 */ { HE20_MODE_VALID_MASK, 1823 DP_CMN_MOD_IEEE80211_T_HE_20, 1824 309700, 319100, 292500, 263300, 0, 309700, 1825 0x448}, 1826 /* 445 MCS-09 */ { HE20_MODE_VALID_MASK, 1827 DP_CMN_MOD_IEEE80211_T_HE_20, 1828 344100, 354500, 325000, 292500, 0, 344100, 1829 0x449}, 1830 /* 446 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1831 DP_CMN_MOD_IEEE80211_T_HE_20, 1832 387100, 398900, 365600, 329100, 0, 387100, 1833 0x44a}, 1834 /* 447 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1835 DP_CMN_MOD_IEEE80211_T_HE_20, 1836 430100, 443200, 406300, 365600, 0, 430100, 1837 0x44b}, 1838 1839 /* When number of spatial streams > 3 1840 * use below rates 1841 */ 1842 /* 448 MCS-00 */ { HE20_MODE_VALID_MASK, 1843 DP_CMN_MOD_IEEE80211_T_HE_20, 1844 34400, 35500, 32500, 29300, 17700, 34400, 1845 0x460}, 1846 /* 449 MCS-01 */ { HE20_MODE_VALID_MASK, 1847 DP_CMN_MOD_IEEE80211_T_HE_20, 1848 68800, 70900, 65000, 58500, 34400, 68800, 1849 0x461}, 1850 /* 450 MCS-02 */ { HE20_MODE_VALID_MASK, 1851 DP_CMN_MOD_IEEE80211_T_HE_20, 1852 103200, 106400, 97500, 87800, 0, 103200, 1853 0x462}, 1854 /* 451 MCS-03 */ { HE20_MODE_VALID_MASK, 1855 DP_CMN_MOD_IEEE80211_T_HE_20, 1856 137600, 141800, 130000, 117000, 68800, 137600, 1857 0x463}, 1858 /* 452 MCS-04 */ { HE20_MODE_VALID_MASK, 1859 DP_CMN_MOD_IEEE80211_T_HE_20, 1860 206500, 212700, 195000, 175500, 103200, 206500, 1861 0x464}, 1862 /* 453 MCS-05 */ { HE20_MODE_VALID_MASK, 1863 DP_CMN_MOD_IEEE80211_T_HE_20, 1864 275300, 283600, 260000, 234000, 0, 275300, 1865 0x465}, 1866 /* 454 MCS-06 */ { HE20_MODE_VALID_MASK, 1867 DP_CMN_MOD_IEEE80211_T_HE_20, 1868 309700, 319100, 292500, 263300, 0, 309700, 1869 0x466}, 1870 /* 455 MCS-07 */ { HE20_MODE_VALID_MASK, 1871 DP_CMN_MOD_IEEE80211_T_HE_20, 1872 344100, 354500, 325000, 292500, 0, 344100, 1873 0x467}, 1874 /* 456 MCS-08 */ { HE20_MODE_VALID_MASK, 1875 DP_CMN_MOD_IEEE80211_T_HE_20, 1876 412900, 425500, 390000, 351000, 0, 412900, 1877 0x468}, 1878 /* 457 MCS-09 */ { HE20_MODE_VALID_MASK, 1879 DP_CMN_MOD_IEEE80211_T_HE_20, 1880 455800, 472700, 433300, 390000, 0, 455800, 1881 0x469}, 1882 /* 458 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1883 DP_CMN_MOD_IEEE80211_T_HE_20, 1884 516200, 531800, 487500, 438800, 0, 516200, 1885 0x46a}, 1886 /* 459 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1887 DP_CMN_MOD_IEEE80211_T_HE_20, 1888 573500, 590900, 541700, 487500, 0, 573500, 1889 0x46b}, 1890 1891 /* When number of spatial streams > 4 1892 * use below rates 1893 */ 1894 /* 460 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 1895 DP_CMN_MOD_IEEE80211_T_HE_20, 1896 43000, 43300, 40600, 36600, 21500, 43000, 1897 0x480}, 1898 /* 461 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 1899 DP_CMN_MOD_IEEE80211_T_HE_20, 1900 86000, 88600, 81300, 73100, 43000, 86000, 1901 0x481}, 1902 /* 462 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 1903 DP_CMN_MOD_IEEE80211_T_HE_20, 1904 129000, 133000, 121900, 109700, 0, 129000, 1905 0x482}, 1906 /* 463 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 1907 DP_CMN_MOD_IEEE80211_T_HE_20, 1908 172100, 177300, 162500, 146300, 86000, 172100, 1909 0x483}, 1910 /* 464 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 1911 DP_CMN_MOD_IEEE80211_T_HE_20, 1912 258100, 265900, 243800, 219400, 129000, 258100, 1913 0x484}, 1914 /* 465 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 1915 DP_CMN_MOD_IEEE80211_T_HE_20, 1916 344100, 354500, 325000, 292500, 0, 344100, 1917 0x485}, 1918 /* 466 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 1919 DP_CMN_MOD_IEEE80211_T_HE_20, 1920 387100, 398900, 365600, 329100, 0, 387100, 1921 0x486}, 1922 /* 467 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 1923 DP_CMN_MOD_IEEE80211_T_HE_20, 1924 430100, 443200, 406300, 365600, 0, 430100, 1925 0x487}, 1926 /* 468 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 1927 DP_CMN_MOD_IEEE80211_T_HE_20, 1928 516200, 531800, 487500, 438800, 0, 516200, 1929 0x488}, 1930 /* 469 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 1931 DP_CMN_MOD_IEEE80211_T_HE_20, 1932 573500, 590900, 541700, 487500, 0, 573500, 1933 0x489}, 1934 /* 470 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1935 DP_CMN_MOD_IEEE80211_T_HE_20, 1936 645200, 664800, 609400, 548400, 0, 645200, 1937 0x48a}, 1938 /* 471 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1939 DP_CMN_MOD_IEEE80211_T_HE_20, 1940 716900, 738600, 677100, 609400, 0, 716900, 1941 0x48b}, 1942 1943 /* When number of spatial streams > 5 1944 * use below rates 1945 */ 1946 /* 472 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 1947 DP_CMN_MOD_IEEE80211_T_HE_20, 1948 51600, 53200, 48800, 43900, 25800, 51600, 1949 0x4a0}, 1950 /* 473 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 1951 DP_CMN_MOD_IEEE80211_T_HE_20, 1952 103200, 106400, 97500, 87800, 51600, 103200, 1953 0x4a1}, 1954 /* 474 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 1955 DP_CMN_MOD_IEEE80211_T_HE_20, 1956 154900, 159500, 146300, 131600, 0, 154900, 1957 0x4a2}, 1958 /* 475 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 1959 DP_CMN_MOD_IEEE80211_T_HE_20, 1960 206500, 212700, 195000, 175500, 103200, 206500, 1961 0x4a3}, 1962 /* 476 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 1963 DP_CMN_MOD_IEEE80211_T_HE_20, 1964 309700, 319100, 292500, 263300, 154900, 309700, 1965 0x4a4}, 1966 /* 477 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 1967 DP_CMN_MOD_IEEE80211_T_HE_20, 1968 412900, 425500, 390000, 351000, 0, 412900, 1969 0x4a5}, 1970 /* 478 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 1971 DP_CMN_MOD_IEEE80211_T_HE_20, 1972 464600, 478600, 438000, 394900, 0, 464600, 1973 0x4a6}, 1974 /* 479 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 1975 DP_CMN_MOD_IEEE80211_T_HE_20, 1976 516200, 531800, 487500, 438800, 0, 516200, 1977 0x4a7}, 1978 /* 480 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 1979 DP_CMN_MOD_IEEE80211_T_HE_20, 1980 619400, 638200, 585000, 526500, 0, 619400, 1981 0x4a8}, 1982 /* 481 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 1983 DP_CMN_MOD_IEEE80211_T_HE_20, 1984 688200, 709100, 650000, 585000, 0, 688200, 1985 0x4a9}, 1986 /* 482 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1987 DP_CMN_MOD_IEEE80211_T_HE_20, 1988 774300, 797700, 731300, 658100, 0, 774300, 1989 0x4aa}, 1990 /* 483 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1991 DP_CMN_MOD_IEEE80211_T_HE_20, 1992 860300, 886400, 812500, 731300, 0, 860300, 1993 0x4ab}, 1994 1995 /* When number of spatial streams > 6 1996 * use below rates 1997 */ 1998 /* 484 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 1999 DP_CMN_MOD_IEEE80211_T_HE_20, 2000 60200, 62000, 56900, 51200, 30100, 60200, 2001 0x4c0}, 2002 /* 485 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 2003 DP_CMN_MOD_IEEE80211_T_HE_20, 2004 120400, 124100, 113800, 102400, 60200, 120400, 2005 0x4c1}, 2006 /* 486 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 2007 DP_CMN_MOD_IEEE80211_T_HE_20, 2008 180700, 186100, 170600, 153600, 0, 180700, 2009 0x4c2}, 2010 /* 487 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 2011 DP_CMN_MOD_IEEE80211_T_HE_20, 2012 240900, 248200, 227500, 204800, 120400, 240900, 2013 0x4c3}, 2014 /* 488 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 2015 DP_CMN_MOD_IEEE80211_T_HE_20, 2016 361300, 372300, 341300, 307100, 180700, 361300, 2017 0x4c4}, 2018 /* 489 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 2019 DP_CMN_MOD_IEEE80211_T_HE_20, 2020 481800, 496400, 455000, 409500, 0, 481800, 2021 0x4c5}, 2022 /* 490 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 2023 DP_CMN_MOD_IEEE80211_T_HE_20, 2024 542000, 558400, 511900, 460700, 0, 542000, 2025 0x4c6}, 2026 /* 491 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 2027 DP_CMN_MOD_IEEE80211_T_HE_20, 2028 602200, 620500, 568800, 511900, 0, 602200, 2029 0x4c7}, 2030 /* 492 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 2031 DP_CMN_MOD_IEEE80211_T_HE_20, 2032 722600, 744500, 682500, 614300, 0, 722600, 2033 0x4c8}, 2034 /* 493 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 2035 DP_CMN_MOD_IEEE80211_T_HE_20, 2036 802900, 827300, 758300, 682500, 0, 802900, 2037 0x4c9}, 2038 /* 494 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 2039 DP_CMN_MOD_IEEE80211_T_HE_20, 2040 903300, 930700, 853100, 767800, 0, 903300, 2041 0x4ca}, 2042 /* 495 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 2043 DP_CMN_MOD_IEEE80211_T_HE_20, 2044 1003700, 1034100, 947900, 853100, 0, 1003700, 2045 0x4cb}, 2046 2047 /* When number of spatial streams > 7 2048 * use below rates 2049 */ 2050 /* 496 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 2051 DP_CMN_MOD_IEEE80211_T_HE_20, 2052 68800, 70900, 65000, 58500, 34400, 68800, 2053 0x4e0}, 2054 /* 497 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 2055 DP_CMN_MOD_IEEE80211_T_HE_20, 2056 137600, 141800, 130000, 117000, 68800, 137600, 2057 0x4e1}, 2058 /* 498 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 2059 DP_CMN_MOD_IEEE80211_T_HE_20, 2060 206500, 212700, 195000, 175500, 0, 206500, 2061 0x4e2}, 2062 /* 499 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 2063 DP_CMN_MOD_IEEE80211_T_HE_20, 2064 275300, 283600, 260000, 234000, 137600, 275300, 2065 0x4e3}, 2066 /* 500 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 2067 DP_CMN_MOD_IEEE80211_T_HE_20, 2068 412900, 425500, 390000, 351000, 206500, 412900, 2069 0x4e4}, 2070 /* 501 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 2071 DP_CMN_MOD_IEEE80211_T_HE_20, 2072 550600, 567300, 520000, 468000, 0, 550600, 2073 0x4e5}, 2074 /* 502 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 2075 DP_CMN_MOD_IEEE80211_T_HE_20, 2076 619400, 638200, 585000, 526500, 0, 619400, 2077 0x4e6}, 2078 /* 503 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 2079 DP_CMN_MOD_IEEE80211_T_HE_20, 2080 688200, 709100, 650000, 585000, 0, 688200, 2081 0x4e7}, 2082 /* 504 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 2083 DP_CMN_MOD_IEEE80211_T_HE_20, 2084 825900, 850900, 780000, 702000, 0, 825900, 2085 0x4e8}, 2086 /* 505 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 2087 DP_CMN_MOD_IEEE80211_T_HE_20, 2088 917600, 945500, 866700, 780000, 0, 917600, 2089 0x4e9}, 2090 /* 506 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 2091 DP_CMN_MOD_IEEE80211_T_HE_20, 2092 1032400, 1063600, 975000, 877500, 0, 1032400, 2093 0x4ea}, 2094 /* 507 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 2095 DP_CMN_MOD_IEEE80211_T_HE_20, 2096 1147100, 1181800, 1083300, 975000, 0, 1147100, 2097 0x4eb}, 2098 2099 /* 11ax RU484 rates 2100 */ 2101 /* 508 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2102 DP_CMN_MOD_IEEE80211_T_HE_40, 2103 17200, 17700, 16300, 14600, 8600, 17200, 0x400 2104 }, 2105 /* 509 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2106 DP_CMN_MOD_IEEE80211_T_HE_40, 2107 34400, 35500, 32500, 29300, 17700, 34400, 0x401 2108 }, 2109 /* 510 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2110 DP_CMN_MOD_IEEE80211_T_HE_40, 2111 51600, 53200, 48800, 43900, 25800, 51600, 0x402 2112 }, 2113 /* 511 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2114 DP_CMN_MOD_IEEE80211_T_HE_40, 2115 68800, 70900, 65000, 58500, 0, 68800, 0x403 2116 }, 2117 /* 512 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2118 DP_CMN_MOD_IEEE80211_T_HE_40, 2119 103200, 106400, 97500, 87800, 0, 103200, 2120 0x404 }, 2121 /* 513 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2122 DP_CMN_MOD_IEEE80211_T_HE_40, 2123 137600, 141800, 130000, 117000, 0, 137600, 2124 0x405 }, 2125 /* 514 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2126 DP_CMN_MOD_IEEE80211_T_HE_40, 2127 154900, 159500, 146300, 131600, 0, 154900, 2128 0x406 }, 2129 /* 515 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2130 DP_CMN_MOD_IEEE80211_T_HE_40, 2131 172100, 177300, 162500, 146300, 0, 172100, 2132 0x407 }, 2133 /* 516 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2134 DP_CMN_MOD_IEEE80211_T_HE_40, 2135 206500, 212700, 195000, 175500, 0, 206500, 2136 0x408 }, 2137 /* 517 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2138 DP_CMN_MOD_IEEE80211_T_HE_40, 2139 229400, 236400, 216700, 195000, 0, 229400, 2140 0x409 }, 2141 /* 518 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2142 DP_CMN_MOD_IEEE80211_T_HE_40, 2143 258100, 265900, 243800, 219400, 0, 258100, 2144 0x40a }, 2145 /* 519 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2146 DP_CMN_MOD_IEEE80211_T_HE_40, 2147 286800, 295500, 270800, 243800, 0, 286800, 2148 0x40b }, 2149 /* When number of spatial streams > 1 2150 * use below rates 2151 */ 2152 /* 520 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2153 DP_CMN_MOD_IEEE80211_T_HE_40, 2154 34400, 35500, 32500, 29300, 17700, 34400, 0x420 2155 }, 2156 /* 521 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2157 DP_CMN_MOD_IEEE80211_T_HE_40, 2158 68800, 70900, 65000, 58500, 34400, 68800, 0x421 2159 }, 2160 /* 522 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2161 DP_CMN_MOD_IEEE80211_T_HE_40, 2162 103200, 106400, 97500, 87800, 0, 103200, 2163 0x422 }, 2164 /* 523 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2165 DP_CMN_MOD_IEEE80211_T_HE_40, 2166 137600, 141800, 130000, 117000, 68800, 137600, 2167 0x423 }, 2168 /* 524 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2169 DP_CMN_MOD_IEEE80211_T_HE_40, 2170 206500, 212700, 195000, 175500, 103200, 206500, 2171 0x424 }, 2172 /* 525 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2173 DP_CMN_MOD_IEEE80211_T_HE_40, 2174 275300, 283600, 260000, 234000, 0, 275300, 2175 0x425 }, 2176 /* 526 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2177 DP_CMN_MOD_IEEE80211_T_HE_40, 2178 309700, 319100, 292500, 263300, 0, 309700, 2179 0x426 }, 2180 /* 527 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2181 DP_CMN_MOD_IEEE80211_T_HE_40, 2182 344100, 354500, 325000, 292500, 0, 344100, 2183 0x427 }, 2184 /* 528 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2185 DP_CMN_MOD_IEEE80211_T_HE_40, 2186 412900, 425500, 390000, 351000, 0, 412900, 2187 0x428 }, 2188 /* 529 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2189 DP_CMN_MOD_IEEE80211_T_HE_40, 2190 455800, 472700, 433300, 390000, 0, 455800, 2191 0x429 }, 2192 /* 530 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2193 DP_CMN_MOD_IEEE80211_T_HE_40, 2194 516200, 531800, 487500, 438800, 0, 516200, 2195 0x42a }, 2196 /* 531 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2197 DP_CMN_MOD_IEEE80211_T_HE_40, 2198 573500, 590900, 541700, 487500, 0, 573500, 2199 0x42b }, 2200 2201 /* When number of spatial streams > 2 2202 * use below rates 2203 */ 2204 /* 532 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2205 DP_CMN_MOD_IEEE80211_T_HE_40, 2206 51600, 53200, 48800, 43900, 25800, 51600, 0x440 2207 }, 2208 /* 533 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2209 DP_CMN_MOD_IEEE80211_T_HE_40, 2210 103200, 106400, 97500, 87800, 51600, 103200, 2211 0x441 }, 2212 /* 534 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2213 DP_CMN_MOD_IEEE80211_T_HE_40, 2214 154900, 159500, 146300, 131600, 0, 154900, 2215 0x442 }, 2216 /* 535 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2217 DP_CMN_MOD_IEEE80211_T_HE_40, 2218 206500, 212700, 195000, 175500, 103200, 206500, 2219 0x443 }, 2220 /* 536 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2221 DP_CMN_MOD_IEEE80211_T_HE_40, 2222 309700, 319100, 292500, 263300, 154900, 309700, 2223 0x444 }, 2224 /* 537 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2225 DP_CMN_MOD_IEEE80211_T_HE_40, 2226 412900, 425500, 390000, 351000, 0, 412900, 2227 0x445 }, 2228 /* 538 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2229 DP_CMN_MOD_IEEE80211_T_HE_40, 2230 464600, 478600, 438000, 394900, 0, 464600, 2231 0x446 }, 2232 /* 539 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2233 DP_CMN_MOD_IEEE80211_T_HE_40, 2234 516200, 531800, 487500, 438800, 0, 516200, 2235 0x447 }, 2236 /* 540 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2237 DP_CMN_MOD_IEEE80211_T_HE_40, 2238 619400, 638200, 585000, 526500, 0, 619400, 2239 0x448 }, 2240 /* 541 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2241 DP_CMN_MOD_IEEE80211_T_HE_40, 2242 688200, 709100, 650000, 585000, 0, 688200, 2243 0x449 }, 2244 /* 542 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2245 DP_CMN_MOD_IEEE80211_T_HE_40, 2246 774300, 797700, 731300, 658100, 0, 774300, 2247 0x44a }, 2248 /* 543 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2249 DP_CMN_MOD_IEEE80211_T_HE_40, 2250 860300, 886400, 812500, 731300, 0, 860300, 2251 0x44b }, 2252 2253 /* When number of spatial streams > 3 2254 * use below rates 2255 */ 2256 /* 544 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2257 DP_CMN_MOD_IEEE80211_T_HE_40, 2258 68800, 70900, 65000, 58500, 34400, 68800, 0x460 2259 }, 2260 /* 545 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2261 DP_CMN_MOD_IEEE80211_T_HE_40, 2262 137600, 141800, 130000, 117000, 68800, 137600, 2263 0x461 }, 2264 /* 546 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2265 DP_CMN_MOD_IEEE80211_T_HE_40, 2266 206500, 212700, 195000, 175500, 0, 206500, 2267 0x462 }, 2268 /* 547 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2269 DP_CMN_MOD_IEEE80211_T_HE_40, 2270 275300, 283600, 260000, 234000, 137600, 275300, 2271 0x463 }, 2272 /* 548 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2273 DP_CMN_MOD_IEEE80211_T_HE_40, 2274 412900, 425500, 390000, 351000, 206500, 412900, 2275 0x464 }, 2276 /* 549 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2277 DP_CMN_MOD_IEEE80211_T_HE_40, 2278 550600, 567300, 520000, 468000, 0, 550600, 2279 0x465 }, 2280 /* 550 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2281 DP_CMN_MOD_IEEE80211_T_HE_40, 2282 619400, 638200, 585000, 526500, 0, 619400, 2283 0x466 }, 2284 /* 551 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2285 DP_CMN_MOD_IEEE80211_T_HE_40, 2286 688200, 709100, 650000, 585000, 0, 688200, 2287 0x467 }, 2288 /* 552 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2289 DP_CMN_MOD_IEEE80211_T_HE_40, 2290 825900, 850900, 780000, 702000, 0, 825900, 2291 0x468 }, 2292 /* 553 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2293 DP_CMN_MOD_IEEE80211_T_HE_40, 2294 917600, 945500, 866700, 780000, 0, 917600, 2295 0x469 }, 2296 /* 554 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2297 DP_CMN_MOD_IEEE80211_T_HE_40, 2298 1032400, 1063600, 975000, 877500, 0, 1032400, 2299 0x46a }, 2300 /* 555 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2301 DP_CMN_MOD_IEEE80211_T_HE_40, 2302 1147100, 1181800, 1083300, 975000, 0, 1147100, 2303 0x46b }, 2304 2305 /* When number of spatial streams > 4 2306 * use below rates 2307 */ 2308 /* 556 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2309 DP_CMN_MOD_IEEE80211_T_HE_40, 2310 86000, 88600, 81300, 73100, 43000, 86000, 0x480 2311 }, 2312 /* 557 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2313 DP_CMN_MOD_IEEE80211_T_HE_40, 2314 172100, 177300, 162500, 146300, 86000, 172100, 2315 0x481 }, 2316 /* 558 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2317 DP_CMN_MOD_IEEE80211_T_HE_40, 2318 258100, 265900, 243800, 219400, 0, 258100, 2319 0x482 }, 2320 /* 559 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2321 DP_CMN_MOD_IEEE80211_T_HE_40, 2322 344100, 354500, 325000, 292500, 172100, 344100, 2323 0x483 }, 2324 /* 560 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2325 DP_CMN_MOD_IEEE80211_T_HE_40, 2326 516200, 531800, 487500, 438800, 258100, 516200, 2327 0x484 }, 2328 /* 561 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2329 DP_CMN_MOD_IEEE80211_T_HE_40, 2330 688200, 709100, 650000, 585000, 0, 688200, 2331 0x485 }, 2332 /* 562 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2333 DP_CMN_MOD_IEEE80211_T_HE_40, 2334 774300, 797700, 731300, 658100, 0, 774300, 2335 0x486 }, 2336 /* 563 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2337 DP_CMN_MOD_IEEE80211_T_HE_40, 2338 860300, 886400, 812500, 731300, 0, 860300, 2339 0x487 }, 2340 /* 564 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2341 DP_CMN_MOD_IEEE80211_T_HE_40, 2342 1032400, 1063600, 975000, 877500, 0, 1032400, 2343 0x488 }, 2344 /* 565 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2345 DP_CMN_MOD_IEEE80211_T_HE_40, 2346 1147100, 1181800, 1083300, 975000, 0, 1147100, 2347 0x489 }, 2348 /* 566 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2349 DP_CMN_MOD_IEEE80211_T_HE_40, 2350 1290400, 1329500, 1218800, 1096900, 0, 1290400, 2351 0x48a }, 2352 /* 567 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2353 DP_CMN_MOD_IEEE80211_T_HE_40, 2354 1433800, 1477300, 1354200, 1218800, 0, 1433800, 2355 0x48b }, 2356 2357 /* When number of spatial streams > 5 2358 * use below rates 2359 */ 2360 /* 568 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2361 DP_CMN_MOD_IEEE80211_T_HE_40, 2362 103200, 106400, 97500, 87800, 51600, 103200, 2363 0x4a0 }, 2364 /* 569 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2365 DP_CMN_MOD_IEEE80211_T_HE_40, 2366 206500, 212700, 195000, 175500, 103200, 206500, 2367 0x4a1 }, 2368 /* 570 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2369 DP_CMN_MOD_IEEE80211_T_HE_40, 2370 309700, 319100, 292500, 263300, 0, 309700, 2371 0x4a2 }, 2372 /* 571 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2373 DP_CMN_MOD_IEEE80211_T_HE_40, 2374 412900, 425500, 390000, 351000, 206500, 412900, 2375 0x4a3 }, 2376 /* 572 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2377 DP_CMN_MOD_IEEE80211_T_HE_40, 2378 619400, 638200, 585000, 526500, 309700, 619400, 2379 0x4a4 }, 2380 /* 573 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2381 DP_CMN_MOD_IEEE80211_T_HE_40, 2382 825900, 850900, 780000, 702000, 0, 825900, 2383 0x4a5 }, 2384 /* 574 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2385 DP_CMN_MOD_IEEE80211_T_HE_40, 2386 929100, 957300, 877500, 789800, 0, 929100, 2387 0x4a6 }, 2388 /* 575 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2389 DP_CMN_MOD_IEEE80211_T_HE_40, 2390 1032400, 1063600, 975000, 877500, 0, 1032400, 2391 0x4a7 }, 2392 /* 576 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2393 DP_CMN_MOD_IEEE80211_T_HE_40, 2394 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2395 0x4a8 }, 2396 /* 577 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2397 DP_CMN_MOD_IEEE80211_T_HE_40, 2398 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2399 0x4a9 }, 2400 /* 578 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2401 DP_CMN_MOD_IEEE80211_T_HE_40, 2402 1548500, 1595500, 1462500, 1316300, 0, 1548500, 2403 0x4aa }, 2404 /* 579 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2405 DP_CMN_MOD_IEEE80211_T_HE_40, 2406 1720600, 1772700, 1625000, 1462500, 0, 1720600, 2407 0x4ab }, 2408 /* When number spatial streams > 6 2409 * use below rates 2410 */ 2411 /* 580 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2412 DP_CMN_MOD_IEEE80211_T_HE_40, 2413 120400, 124100, 113800, 102400, 60200, 120400, 2414 0x4c0 }, 2415 /* 581 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2416 DP_CMN_MOD_IEEE80211_T_HE_40, 2417 240900, 248200, 227500, 204800, 120400, 240900, 2418 0x4c1 }, 2419 /* 582 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2420 DP_CMN_MOD_IEEE80211_T_HE_40, 2421 361300, 372300, 341300, 307100, 180600, 361300, 2422 0x4c2 }, 2423 /* 583 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2424 DP_CMN_MOD_IEEE80211_T_HE_40, 2425 481800, 496400, 455000, 409500, 0, 481800, 2426 0x4c3 }, 2427 /* 584 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2428 DP_CMN_MOD_IEEE80211_T_HE_40, 2429 722600, 744500, 682500, 614300, 0, 722600, 2430 0x4c4 }, 2431 /* 585 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2432 DP_CMN_MOD_IEEE80211_T_HE_40, 2433 963500, 992700, 910000, 819000, 0, 963500, 2434 0x4c5 }, 2435 /* 586 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2436 DP_CMN_MOD_IEEE80211_T_HE_40, 2437 1084000, 1116800, 1023800, 921400, 0, 1084000, 2438 0x4c6 }, 2439 /* 587 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2440 DP_CMN_MOD_IEEE80211_T_HE_40, 2441 1204400, 1240900, 1137500, 1023800, 0, 1204400, 2442 0x4c7 }, 2443 /* 588 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2444 DP_CMN_MOD_IEEE80211_T_HE_40, 2445 1445300, 1489100, 1365000, 1228500, 0, 1445300, 2446 0x4c8 }, 2447 /* 589 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2448 DP_CMN_MOD_IEEE80211_T_HE_40, 2449 1605900, 1654500, 1516700, 1365000, 0, 1605900, 2450 0x4c9 }, 2451 /* 590 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2452 DP_CMN_MOD_IEEE80211_T_HE_40, 2453 1806600, 1861400, 1706300, 1535600, 0, 1806600, 2454 0x4ca }, 2455 /* 591 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2456 DP_CMN_MOD_IEEE80211_T_HE_40, 2457 2007400, 2068200, 1895800, 1706300, 0, 2007400, 2458 0x4cb }, 2459 2460 /* When number of spatial streams > 7 2461 * use below rates 2462 */ 2463 /* 592 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2464 DP_CMN_MOD_IEEE80211_T_HE_40, 2465 137600, 141800, 130000, 117000, 68800, 137600, 2466 0x4e0 }, 2467 /* 593 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2468 DP_CMN_MOD_IEEE80211_T_HE_40, 2469 275300, 283600, 260000, 234000, 137600, 275300, 2470 0x4e1 }, 2471 /* 594 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2472 DP_CMN_MOD_IEEE80211_T_HE_40, 2473 412900, 425500, 390000, 351000, 206500, 412900, 2474 0x4e2 }, 2475 /* 595 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2476 DP_CMN_MOD_IEEE80211_T_HE_40, 2477 550600, 567300, 520000, 468000, 0, 550600, 2478 0x4e3 }, 2479 /* 596 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2480 DP_CMN_MOD_IEEE80211_T_HE_40, 2481 825900, 850900, 780000, 702000, 0, 825900, 2482 0x4e4 }, 2483 /* 597 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2484 DP_CMN_MOD_IEEE80211_T_HE_40, 2485 1101200, 1134500, 1040000, 936000, 0, 1101200, 2486 0x4e5 }, 2487 /* 598 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2488 DP_CMN_MOD_IEEE80211_T_HE_40, 2489 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2490 0x4e6 }, 2491 /* 599 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2492 DP_CMN_MOD_IEEE80211_T_HE_40, 2493 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2494 0x4e7 }, 2495 /* 600 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2496 DP_CMN_MOD_IEEE80211_T_HE_40, 2497 1651800, 1701800, 1560000, 1404000, 0, 1651800, 2498 0x4e8 }, 2499 /* 601 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2500 DP_CMN_MOD_IEEE80211_T_HE_40, 2501 1835300, 1890900, 1733300, 1560000, 0, 1835300, 2502 0x4e9 }, 2503 /* 602 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2504 DP_CMN_MOD_IEEE80211_T_HE_40, 2505 2064700, 2127300, 1950000, 1755000, 0, 2064700, 2506 0x4ea }, 2507 /* 603 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2508 DP_CMN_MOD_IEEE80211_T_HE_40, 2509 2294100, 2363600, 2166700, 1950000, 0, 2294100, 2510 0x4eb }, 2511 2512 /* 11ax RU996 rates 2513 */ 2514 /* 604 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2515 DP_CMN_MOD_IEEE80211_T_HE_80, 2516 36000, 37100, 34000, 30600, 18000, 36000, 0x400 2517 }, 2518 /* 605 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2519 DP_CMN_MOD_IEEE80211_T_HE_80, 2520 72100, 74200, 68100, 61300, 36000, 72100, 0x401 2521 }, 2522 /* 606 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2523 DP_CMN_MOD_IEEE80211_T_HE_80, 2524 108100, 111400, 102100, 91900, 0, 108100, 2525 0x402 }, 2526 /* 607 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2527 DP_CMN_MOD_IEEE80211_T_HE_80, 2528 144100, 148500, 136100, 122500, 72100, 144100, 2529 0x403 }, 2530 /* 608 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2531 DP_CMN_MOD_IEEE80211_T_HE_80, 2532 216200, 222700, 204200, 183800, 108100, 216200, 2533 0x404 }, 2534 /* 609 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2535 DP_CMN_MOD_IEEE80211_T_HE_80, 2536 288200, 297000, 272200, 245000, 0, 288200, 2537 0x405 }, 2538 /* 610 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2539 DP_CMN_MOD_IEEE80211_T_HE_80, 2540 324300, 334100, 306300, 275600, 0, 324300, 2541 0x406 }, 2542 /* 611 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2543 DP_CMN_MOD_IEEE80211_T_HE_80, 2544 360300, 371200, 340300, 306300, 0, 360300, 2545 0x407 }, 2546 /* 612 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2547 DP_CMN_MOD_IEEE80211_T_HE_80, 2548 432400, 445500, 408300, 367500, 0, 432400, 2549 0x408 }, 2550 /* 613 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2551 DP_CMN_MOD_IEEE80211_T_HE_80, 2552 480400, 494900, 453700, 408300, 0, 480400, 2553 0x409 }, 2554 /* 614 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2555 DP_CMN_MOD_IEEE80211_T_HE_80, 2556 540400, 556800, 510400, 459400, 0, 540400, 2557 0x40a }, 2558 /* 615 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2559 DP_CMN_MOD_IEEE80211_T_HE_80, 2560 600500, 618700, 567100, 510400, 0, 600500, 2561 0x40b }, 2562 /* When number spatial streams > 1 2563 * use below rates 2564 */ 2565 /* 616 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2566 DP_CMN_MOD_IEEE80211_T_HE_80, 2567 72100, 74200, 68100, 61300, 36000, 72100, 0x420 2568 }, 2569 /* 617 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2570 DP_CMN_MOD_IEEE80211_T_HE_80, 2571 144100, 148500, 136100, 122500, 72100, 144100, 2572 0x421 }, 2573 /* 618 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2574 DP_CMN_MOD_IEEE80211_T_HE_80, 2575 216200, 222700, 204200, 183800, 0, 216200, 2576 0x422 }, 2577 /* 619 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2578 DP_CMN_MOD_IEEE80211_T_HE_80, 2579 288200, 297000, 272200, 245000, 144100, 288200, 2580 0x423 }, 2581 /* 620 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2582 DP_CMN_MOD_IEEE80211_T_HE_80, 2583 432400, 445500, 408300, 367500, 216200, 432400, 2584 0x424 }, 2585 /* 621 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2586 DP_CMN_MOD_IEEE80211_T_HE_80, 2587 576500, 593900, 544400, 490000, 0, 576500, 2588 0x425 }, 2589 /* 622 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2590 DP_CMN_MOD_IEEE80211_T_HE_80, 2591 648500, 668200, 612500, 551300, 0, 648500, 2592 0x426 }, 2593 /* 623 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2594 DP_CMN_MOD_IEEE80211_T_HE_80, 2595 720600, 742400, 680600, 612500, 0, 720600, 2596 0x427 }, 2597 /* 624 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2598 DP_CMN_MOD_IEEE80211_T_HE_80, 2599 864700, 890900, 816700, 735000, 0, 864700, 2600 0x428 }, 2601 /* 625 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2602 DP_CMN_MOD_IEEE80211_T_HE_80, 2603 960800, 989900, 907400, 816700, 0, 960800, 2604 0x429 }, 2605 /* 626 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2606 DP_CMN_MOD_IEEE80211_T_HE_80, 2607 1080900, 1113600, 1020800, 918800, 0, 1080900, 2608 0x42a }, 2609 /* 627 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2610 DP_CMN_MOD_IEEE80211_T_HE_80, 2611 1201000, 1237400, 1134300, 1020800, 0, 1201000, 2612 0x42b }, 2613 2614 /* When number of spatial streams > 2 2615 * use below rates 2616 */ 2617 /* 628 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2618 DP_CMN_MOD_IEEE80211_T_HE_80, 2619 108100, 111400, 102100, 91900, 54000, 108100, 2620 0x440 }, 2621 /* 629 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2622 DP_CMN_MOD_IEEE80211_T_HE_80, 2623 216200, 222700, 204200, 183800, 108100, 216200, 2624 0x441 }, 2625 /* 630 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2626 DP_CMN_MOD_IEEE80211_T_HE_80, 2627 324300, 334100, 306300, 275600, 0, 324300, 2628 0x442 }, 2629 /* 631 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2630 DP_CMN_MOD_IEEE80211_T_HE_80, 2631 432400, 445500, 408300, 367500, 0, 432400, 2632 0x443 }, 2633 /* 632 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2634 DP_CMN_MOD_IEEE80211_T_HE_80, 2635 648500, 668200, 612500, 551300, 0, 648500, 2636 0x444 }, 2637 /* 633 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2638 DP_CMN_MOD_IEEE80211_T_HE_80, 2639 864700, 890900, 816700, 735000, 0, 864700, 2640 0x445 }, 2641 /* 634 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2642 DP_CMN_MOD_IEEE80211_T_HE_80, 2643 972800, 1002300, 918800, 826900, 0, 972800, 2644 0x446 }, 2645 /* 635 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2646 DP_CMN_MOD_IEEE80211_T_HE_80, 2647 1080900, 1113600, 1020800, 918800, 0, 1080900, 2648 0x447 }, 2649 /* 636 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2650 DP_CMN_MOD_IEEE80211_T_HE_80, 2651 1297100, 1336400, 1225000, 1102500, 0, 1297100, 2652 0x448 }, 2653 /* 637 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2654 DP_CMN_MOD_IEEE80211_T_HE_80, 2655 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2656 0x449 }, 2657 /* 638 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2658 DP_CMN_MOD_IEEE80211_T_HE_80, 2659 1621300, 1670500, 1531300, 1378100, 0, 1621300, 2660 0x44a }, 2661 /* 639 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2662 DP_CMN_MOD_IEEE80211_T_HE_80, 2663 1801500, 1856100, 1701400, 1531300, 0, 1801500, 2664 0x44b }, 2665 2666 /* When number of spatial streams > 3 2667 * use below rates 2668 */ 2669 /* 640 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2670 DP_CMN_MOD_IEEE80211_T_HE_80, 2671 144100, 148500, 136100, 122500, 72100, 144100, 2672 0x460 }, 2673 /* 641 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2674 DP_CMN_MOD_IEEE80211_T_HE_80, 2675 288200, 297000, 272200, 245000, 144100, 288200, 2676 0x461 }, 2677 /* 642 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2678 DP_CMN_MOD_IEEE80211_T_HE_80, 2679 432400, 445500, 408300, 367500, 0, 432400, 2680 0x462 }, 2681 /* 643 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2682 DP_CMN_MOD_IEEE80211_T_HE_80, 2683 576500, 593900, 544400, 490000, 288200, 576500, 2684 0x463 }, 2685 /* 644 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2686 DP_CMN_MOD_IEEE80211_T_HE_80, 2687 864700, 890900, 816700, 735000, 432400, 864700, 2688 0x464 }, 2689 /* 645 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2690 DP_CMN_MOD_IEEE80211_T_HE_80, 2691 1152900, 1187900, 1088900, 980000, 0, 1152900, 2692 0x465 }, 2693 /* 646 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2694 DP_CMN_MOD_IEEE80211_T_HE_80, 2695 1297100, 1336400, 1225000, 1102500, 0, 1297100, 2696 0x466 }, 2697 /* 647 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2698 DP_CMN_MOD_IEEE80211_T_HE_80, 2699 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2700 0x467 }, 2701 /* 648 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2702 DP_CMN_MOD_IEEE80211_T_HE_80, 2703 1729400, 1781800, 1633300, 1470000, 0, 1729400, 2704 0x468 }, 2705 /* 649 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2706 DP_CMN_MOD_IEEE80211_T_HE_80, 2707 1921600, 1979800, 1814800, 1633300, 0, 1921600, 2708 0x469 }, 2709 /* 650 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2710 DP_CMN_MOD_IEEE80211_T_HE_80, 2711 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2712 0x46a }, 2713 /* 651 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2714 DP_CMN_MOD_IEEE80211_T_HE_80, 2715 2402000, 2474700, 2268500, 2041700, 0, 2402000, 2716 0x46b }, 2717 2718 /* When number spatial streams > 4 2719 * use below rates 2720 */ 2721 /* 652 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2722 DP_CMN_MOD_IEEE80211_T_HE_80, 2723 180100, 185600, 170100, 153100, 90100, 180100, 2724 0x480 }, 2725 /* 653 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2726 DP_CMN_MOD_IEEE80211_T_HE_80, 2727 360300, 371200, 340300, 306300, 180100, 360300, 2728 0x481 }, 2729 /* 654 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2730 DP_CMN_MOD_IEEE80211_T_HE_80, 2731 540400, 556800, 510400, 459400, 0, 540400, 2732 0x482 }, 2733 /* 655 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2734 DP_CMN_MOD_IEEE80211_T_HE_80, 2735 720600, 742400, 680600, 612500, 0, 720600, 2736 0x483 }, 2737 /* 656 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2738 DP_CMN_MOD_IEEE80211_T_HE_80, 2739 1080900, 1113600, 1020800, 918800, 0, 1080900, 2740 0x484 }, 2741 /* 657 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2742 DP_CMN_MOD_IEEE80211_T_HE_80, 2743 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2744 0x485 }, 2745 /* 658 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2746 DP_CMN_MOD_IEEE80211_T_HE_80, 2747 1621300, 1670500, 1531300, 1378100, 0, 1621300, 2748 0x486 }, 2749 /* 659 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2750 DP_CMN_MOD_IEEE80211_T_HE_80, 2751 1801500, 1856100, 1701400, 1531300, 0, 1801500, 2752 0x487 }, 2753 /* 660 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2754 DP_CMN_MOD_IEEE80211_T_HE_80, 2755 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2756 0x488 }, 2757 /* 661 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2758 DP_CMN_MOD_IEEE80211_T_HE_80, 2759 2402000, 2474700, 2268500, 2041700, 0, 2402000, 2760 0x489 }, 2761 /* 662 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2762 DP_CMN_MOD_IEEE80211_T_HE_80, 2763 2702200, 2784100, 2552100, 2296900, 0, 2702200, 2764 0x48a }, 2765 /* 663 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2766 DP_CMN_MOD_IEEE80211_T_HE_80, 2767 3002500, 3093400, 2835600, 2552100, 0, 3002500, 2768 0x48b }, 2769 2770 /* When number of spatial streams > 5 2771 * use below rates 2772 */ 2773 /* 664 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2774 DP_CMN_MOD_IEEE80211_T_HE_80, 2775 216200, 222700, 204200, 183800, 108100, 216200, 2776 0x4a0 }, 2777 /* 665 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2778 DP_CMN_MOD_IEEE80211_T_HE_80, 2779 432400, 445500, 408300, 367500, 216200, 432400, 2780 0x4a1 }, 2781 /* 666 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2782 DP_CMN_MOD_IEEE80211_T_HE_80, 2783 648500, 668200, 612500, 551300, 0, 648500, 2784 0x4a2 }, 2785 /* 667 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2786 DP_CMN_MOD_IEEE80211_T_HE_80, 2787 864700, 890900, 816700, 735000, 432400, 864700, 2788 0x4a3 }, 2789 /* 668 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2790 DP_CMN_MOD_IEEE80211_T_HE_80, 2791 1297100, 1336400, 1225000, 1102500, 648500, 1297100, 2792 0x4a4 }, 2793 /* 669 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2794 DP_CMN_MOD_IEEE80211_T_HE_80, 2795 1729400, 1781800, 1633300, 1470000, 0, 1729400, 2796 0x4a5 }, 2797 /* 670 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2798 DP_CMN_MOD_IEEE80211_T_HE_80, 2799 1945600, 2004500, 1837500, 1653800, 0, 1945600, 2800 0x4a6 }, 2801 /* 671 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2802 DP_CMN_MOD_IEEE80211_T_HE_80, 2803 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2804 0x4a7 }, 2805 /* 672 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2806 DP_CMN_MOD_IEEE80211_T_HE_80, 2807 2594100, 2672700, 2450000, 2205000, 0, 2594100, 2808 0x4a8 }, 2809 /* 673 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2810 DP_CMN_MOD_IEEE80211_T_HE_80, 2811 2882400, 2969700, 2722200, 2450000, 0, 2882400, 2812 0x4a9 }, 2813 /* 674 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2814 DP_CMN_MOD_IEEE80211_T_HE_80, 2815 3242600, 3340900, 3062500, 2756300, 0, 3242600, 2816 0x4aa }, 2817 /* 675 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2818 DP_CMN_MOD_IEEE80211_T_HE_80, 2819 3602900, 3712100, 3402800, 3062500, 0, 3602900, 2820 0x4ab }, 2821 2822 /* When number of spatial streams > 6 2823 * use below rates 2824 */ 2825 /* 676 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2826 DP_CMN_MOD_IEEE80211_T_HE_80, 2827 252200, 259800, 238200, 214400, 129900, 252200, 2828 0x4c0 }, 2829 /* 677 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2830 DP_CMN_MOD_IEEE80211_T_HE_80, 2831 504400, 519700, 476400, 428800, 252200, 504400, 2832 0x4c1 }, 2833 /* 678 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2834 DP_CMN_MOD_IEEE80211_T_HE_80, 2835 756600, 779500, 714600, 643100, 0, 756600, 2836 0x4c2 }, 2837 /* 679 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2838 DP_CMN_MOD_IEEE80211_T_HE_80, 2839 1008800, 1039400, 952800, 857500, 504400, 1008800, 2840 0x4c3 }, 2841 /* 680 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2842 DP_CMN_MOD_IEEE80211_T_HE_80, 2843 1513200, 1559100, 1429200, 1286300, 756600, 1513200, 2844 0x4c4 }, 2845 /* 681 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2846 DP_CMN_MOD_IEEE80211_T_HE_80, 2847 2017600, 2078800, 1905600, 1715000, 0, 2017600, 2848 0x4c5 }, 2849 /* 682 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2850 DP_CMN_MOD_IEEE80211_T_HE_80, 2851 2269900, 2338600, 2143800, 1929400, 0, 2269900, 2852 0x4c6 }, 2853 /* 683 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2854 DP_CMN_MOD_IEEE80211_T_HE_80, 2855 2522100, 2598500, 2381900, 2143800, 0, 2522100, 2856 0x4c7 }, 2857 /* 684 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2858 DP_CMN_MOD_IEEE80211_T_HE_80, 2859 3026500, 3118200, 2858300, 2572500, 0, 3026500, 2860 0x4c8 }, 2861 /* 685 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2862 DP_CMN_MOD_IEEE80211_T_HE_80, 2863 3362700, 3464600, 3175900, 2858300, 0, 3362700, 2864 0x4c9 }, 2865 /* 686 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2866 DP_CMN_MOD_IEEE80211_T_HE_80, 2867 3783100, 3897700, 3572900, 3215600, 0, 3783100, 2868 0x4ca }, 2869 /* 687 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2870 DP_CMN_MOD_IEEE80211_T_HE_80, 2871 4203400, 4330800, 3969900, 3572900, 0, 4203400, 2872 0x4cb }, 2873 2874 /* When number of spatial streams > 7 2875 * use below rates 2876 */ 2877 /* 688 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2878 DP_CMN_MOD_IEEE80211_T_HE_80, 2879 288200, 297000, 272200, 245000, 144100, 288200, 2880 0x4e0 }, 2881 /* 689 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2882 DP_CMN_MOD_IEEE80211_T_HE_80, 2883 576500, 593900, 544400, 490000, 288200, 576500, 2884 0x4e1 }, 2885 /* 690 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2886 DP_CMN_MOD_IEEE80211_T_HE_80, 2887 864700, 890900, 816700, 735000, 0, 864700, 2888 0x4e2 }, 2889 /* 691 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2890 DP_CMN_MOD_IEEE80211_T_HE_80, 2891 1152900, 1187900, 1088900, 980000, 576500, 1152900, 2892 0x4e3 }, 2893 /* 692 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2894 DP_CMN_MOD_IEEE80211_T_HE_80, 2895 1729400, 1781800, 1633300, 1470000, 864700, 1729400, 2896 0x4e4 }, 2897 /* 693 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2898 DP_CMN_MOD_IEEE80211_T_HE_80, 2899 2305900, 2375800, 2177800, 1960000, 0, 2305900, 2900 0x4e5 }, 2901 /* 694 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2902 DP_CMN_MOD_IEEE80211_T_HE_80, 2903 2594100, 2672700, 2450000, 2205000, 0, 2594100, 2904 0x4e6 }, 2905 /* 695 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2906 DP_CMN_MOD_IEEE80211_T_HE_80, 2907 2882400, 2969700, 2722200, 2450000, 0, 2882400, 2908 0x4e7 }, 2909 /* 696 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2910 DP_CMN_MOD_IEEE80211_T_HE_80, 2911 3458800, 3563600, 3266700, 2940000, 0, 3458800, 2912 0x4e8 }, 2913 /* 697 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2914 DP_CMN_MOD_IEEE80211_T_HE_80, 2915 3843100, 3959600, 3629600, 3266700, 0, 3843100, 2916 0x4e9 }, 2917 /* 698 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2918 DP_CMN_MOD_IEEE80211_T_HE_80, 2919 4323500, 4454500, 4083300, 3675000, 0, 4323500, 2920 0x4ea }, 2921 /* 699 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2922 DP_CMN_MOD_IEEE80211_T_HE_80, 2923 4803900, 4949500, 4537000, 4083300, 0, 4803900, 2924 0x4eb }, 2925 2926 /* 11ax RU996x2 rates 2927 */ 2928 /* 700 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 2929 DP_CMN_MOD_IEEE80211_T_HE_160, 2930 72100, 74200, 68100, 61300, 36000, 72100, 2931 0x400}, 2932 /* 701 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 2933 DP_CMN_MOD_IEEE80211_T_HE_160, 2934 144100, 148500, 136100, 122500, 72100, 144100, 2935 0x401}, 2936 /* 702 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 2937 DP_CMN_MOD_IEEE80211_T_HE_160, 2938 216200, 222700, 204200, 183800, 0, 216200, 2939 0x402}, 2940 /* 703 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 2941 DP_CMN_MOD_IEEE80211_T_HE_160, 2942 288200, 297000, 272200, 245000, 144100, 288200, 2943 0x403}, 2944 /* 704 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 2945 DP_CMN_MOD_IEEE80211_T_HE_160, 2946 432400, 445500, 408300, 367500, 216200, 432400, 2947 0x404}, 2948 /* 705 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 2949 DP_CMN_MOD_IEEE80211_T_HE_160, 2950 576500, 593900, 544400, 490000, 0, 576500, 2951 0x405}, 2952 /* 706 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 2953 DP_CMN_MOD_IEEE80211_T_HE_160, 2954 648500, 668200, 612500, 551300, 0, 648500, 2955 0x406}, 2956 /* 707 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 2957 DP_CMN_MOD_IEEE80211_T_HE_160, 2958 720600, 742400, 680600, 612500, 0, 720600, 2959 0x407}, 2960 /* 708 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 2961 DP_CMN_MOD_IEEE80211_T_HE_160, 2962 864700, 890900, 816700, 735000, 0, 864700, 2963 0x408}, 2964 /* 709 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 2965 DP_CMN_MOD_IEEE80211_T_HE_160, 2966 960800, 989900, 907400, 816700, 0, 960800, 2967 0x409}, 2968 /* 710 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 2969 DP_CMN_MOD_IEEE80211_T_HE_160, 2970 1080900, 1113600, 1020800, 918800, 0, 1080900, 2971 0x40a}, 2972 /* 711 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 2973 DP_CMN_MOD_IEEE80211_T_HE_160, 2974 1201000, 1237400, 1134300, 1020800, 0, 1201000, 2975 0x40b}, 2976 /* When maximum spatial streams supported at 160MHZ > 1 2977 * use below rates 2978 */ 2979 /* 712 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 2980 DP_CMN_MOD_IEEE80211_T_HE_160, 2981 144100, 148500, 136100, 122500, 72100, 144100, 2982 0x420}, 2983 /* 713 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 2984 DP_CMN_MOD_IEEE80211_T_HE_160, 2985 288200, 297000, 272200, 245000, 144100, 288200, 2986 0x421}, 2987 /* 714 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 2988 DP_CMN_MOD_IEEE80211_T_HE_160, 2989 432400, 445500, 408300, 367500, 0, 432400, 2990 0x422}, 2991 /* 715 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 2992 DP_CMN_MOD_IEEE80211_T_HE_160, 2993 576500, 593900, 544400, 490000, 288200, 576500, 2994 0x423}, 2995 /* 716 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 2996 DP_CMN_MOD_IEEE80211_T_HE_160, 2997 864700, 890900, 816700, 735000, 432400, 864700, 2998 0x424}, 2999 /* 717 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3000 DP_CMN_MOD_IEEE80211_T_HE_160, 3001 1152900, 1187900, 1088900, 980000, 0, 1152900, 3002 0x425}, 3003 /* 718 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3004 DP_CMN_MOD_IEEE80211_T_HE_160, 3005 1297100, 1336400, 1225000, 1102500, 0, 1297100, 3006 0x426}, 3007 /* 719 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3008 DP_CMN_MOD_IEEE80211_T_HE_160, 3009 1441200, 1484800, 1361100, 1225000, 0, 1441200, 3010 0x427}, 3011 /* 720 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3012 DP_CMN_MOD_IEEE80211_T_HE_160, 3013 1729400, 1781800, 1633300, 1470000, 0, 1729400, 3014 0x428}, 3015 /* 721 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3016 DP_CMN_MOD_IEEE80211_T_HE_160, 3017 1921600, 1979800, 1814800, 1633300, 0, 1921600, 3018 0x429}, 3019 /* 722 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3020 DP_CMN_MOD_IEEE80211_T_HE_160, 3021 2161800, 2227300, 2041700, 1837500, 0, 2161800, 3022 0x42a}, 3023 /* 723 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3024 DP_CMN_MOD_IEEE80211_T_HE_160, 3025 2402000, 2474700, 2268500, 2041700, 0, 2402000, 3026 0x42b}, 3027 3028 /* When maximum spatial streams supported at 160MHZ > 2 3029 * use below rates 3030 */ 3031 /* 724 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3032 DP_CMN_MOD_IEEE80211_T_HE_160, 3033 216200, 222700, 204200, 183800, 108100, 216200, 3034 0x440}, 3035 /* 725 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3036 DP_CMN_MOD_IEEE80211_T_HE_160, 3037 432400, 445500, 408300, 367500, 216200, 432400, 3038 0x441}, 3039 /* 726 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3040 DP_CMN_MOD_IEEE80211_T_HE_160, 3041 648500, 668200, 612500, 551300, 0, 648500, 3042 0x442}, 3043 /* 727 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3044 DP_CMN_MOD_IEEE80211_T_HE_160, 3045 864700, 890900, 816700, 735000, 432400, 864700, 3046 0x443}, 3047 /* 728 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3048 DP_CMN_MOD_IEEE80211_T_HE_160, 3049 1297100, 1336400, 1225000, 1102500, 648500, 1297100, 3050 0x444}, 3051 /* 729 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3052 DP_CMN_MOD_IEEE80211_T_HE_160, 3053 1729400, 1781800, 1633300, 1470000, 0, 1729400, 3054 0x445}, 3055 /* 730 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3056 DP_CMN_MOD_IEEE80211_T_HE_160, 3057 1945600, 2004500, 1837500, 1653800, 0, 1945600, 3058 0x446}, 3059 /* 731 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3060 DP_CMN_MOD_IEEE80211_T_HE_160, 3061 2161800, 2227300, 2041700, 1837500, 0, 2161800, 3062 0x447}, 3063 /* 732 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3064 DP_CMN_MOD_IEEE80211_T_HE_160, 3065 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3066 0x448}, 3067 /* 733 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3068 DP_CMN_MOD_IEEE80211_T_HE_160, 3069 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3070 0x449}, 3071 /* 734 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3072 DP_CMN_MOD_IEEE80211_T_HE_160, 3073 3242600, 3340900, 3062500, 2756300, 0, 3242600, 3074 0x44a}, 3075 /* 735 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3076 DP_CMN_MOD_IEEE80211_T_HE_160, 3077 3602900, 3712100, 3402800, 3062500, 0, 3602900, 3078 0x44b}, 3079 3080 /* When maximum spatial streams supported at 160MHZ > 3 3081 * use below rates 3082 */ 3083 /* 736 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3084 DP_CMN_MOD_IEEE80211_T_HE_160, 3085 288200, 297000, 272200, 245000, 144100, 288200, 3086 0x460}, 3087 /* 737 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3088 DP_CMN_MOD_IEEE80211_T_HE_160, 3089 576500, 593900, 544400, 490000, 288200, 576500, 3090 0x461}, 3091 /* 738 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3092 DP_CMN_MOD_IEEE80211_T_HE_160, 3093 864700, 890900, 816700, 735000, 0, 864700, 3094 0x462}, 3095 /* 739 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3096 DP_CMN_MOD_IEEE80211_T_HE_160, 3097 1152900, 1187900, 1088900, 980000, 576500, 1152900, 3098 0x463}, 3099 /* 740 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3100 DP_CMN_MOD_IEEE80211_T_HE_160, 3101 1729400, 1781800, 1633300, 1470000, 864700, 1729400, 3102 0x464}, 3103 /* 741 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3104 DP_CMN_MOD_IEEE80211_T_HE_160, 3105 2305900, 2375800, 2177800, 1960000, 0, 2305900, 3106 0x465}, 3107 /* 742 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3108 DP_CMN_MOD_IEEE80211_T_HE_160, 3109 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3110 0x466}, 3111 /* 743 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3112 DP_CMN_MOD_IEEE80211_T_HE_160, 3113 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3114 0x467}, 3115 /* 744 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3116 DP_CMN_MOD_IEEE80211_T_HE_160, 3117 3458800, 3563600, 3266700, 2940000, 0, 3458800, 3118 0x468}, 3119 /* 745 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3120 DP_CMN_MOD_IEEE80211_T_HE_160, 3121 3843100, 3959600, 3629600, 3266700, 0, 3843100, 3122 0x469}, 3123 /* 746 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3124 DP_CMN_MOD_IEEE80211_T_HE_160, 3125 4323500, 4454500, 4083300, 3675000, 0, 4323500, 3126 0x46a}, 3127 /* 747 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3128 DP_CMN_MOD_IEEE80211_T_HE_160, 3129 4803900, 4949500, 4537000, 4083300, 0, 4803900, 3130 0x46b} 3131 }, 3132 }; 3133 3134 static const uint16_t _rc_idx[DP_CMN_MOD_IEEE80211_T_MAX_PHY] = { 3135 CCK_RATE_TABLE_INDEX, 3136 OFDM_RATE_TABLE_INDEX, 3137 HT_20_RATE_TABLE_INDEX, 3138 HT_40_RATE_TABLE_INDEX, 3139 VHT_20_RATE_TABLE_INDEX, 3140 VHT_40_RATE_TABLE_INDEX, 3141 VHT_80_RATE_TABLE_INDEX, 3142 VHT_160_RATE_TABLE_INDEX, 3143 HE_20_RATE_TABLE_INDEX, 3144 HE_40_RATE_TABLE_INDEX, 3145 HE_80_RATE_TABLE_INDEX, 3146 HE_160_RATE_TABLE_INDEX, 3147 }; 3148 3149 /* 3150 * dp_getmodulation - return rate modulation given code spatial width 3151 * @pream_type - preamble type 3152 * @width - bandwidth 3153 * 3154 * return - modulation type 3155 */ 3156 enum DP_CMN_MODULATION_TYPE dp_getmodulation( 3157 uint16_t pream_type, 3158 uint8_t width) 3159 { 3160 static const enum DP_CMN_MODULATION_TYPE _vht_bw_mod[] = { 3161 DP_CMN_MOD_IEEE80211_T_VHT_20, 3162 DP_CMN_MOD_IEEE80211_T_VHT_40, 3163 DP_CMN_MOD_IEEE80211_T_VHT_80, 3164 DP_CMN_MOD_IEEE80211_T_VHT_160 3165 }; 3166 3167 static const enum DP_CMN_MODULATION_TYPE _he_bw_mod[] = { 3168 DP_CMN_MOD_IEEE80211_T_HE_20, 3169 DP_CMN_MOD_IEEE80211_T_HE_40, 3170 DP_CMN_MOD_IEEE80211_T_HE_80, 3171 DP_CMN_MOD_IEEE80211_T_HE_160 3172 }; 3173 3174 enum DP_CMN_MODULATION_TYPE modulation; 3175 3176 CMN_DP_ASSERT(width < CMN_BW_CNT); 3177 3178 switch (pream_type) { 3179 case DP_CMN_RATECODE_PREAM_HT: 3180 if (width) 3181 modulation = DP_CMN_MOD_IEEE80211_T_HT_40; 3182 else 3183 modulation = DP_CMN_MOD_IEEE80211_T_HT_20; 3184 break; 3185 3186 case DP_CMN_RATECODE_PREAM_CCK: 3187 modulation = DP_CMN_MOD_IEEE80211_T_CCK; 3188 break; 3189 3190 case DP_CMN_RATECODE_PREAM_VHT: 3191 modulation = _vht_bw_mod[width]; 3192 break; 3193 3194 case DP_CMN_RATECODE_PREAM_HE: 3195 modulation = _he_bw_mod[width]; 3196 break; 3197 3198 default: 3199 modulation = DP_CMN_MOD_IEEE80211_T_OFDM; 3200 break; 3201 } 3202 3203 return modulation; 3204 } 3205 3206 /* dp_getrateindex - calculate ratekbps 3207 * @mcs - MCS index 3208 * @nss - NSS 1...8 3209 * preamble - preamble 3210 * @bw - Transmission Bandwidth 3211 * 3212 * return - rate in kbps 3213 */ 3214 uint32_t 3215 dp_getrateindex(uint32_t gi, uint16_t mcs, uint8_t nss, uint8_t preamble, 3216 uint8_t bw) 3217 { 3218 uint32_t ratekbps = 0, res = RT_INVALID_INDEX; /* represents failure */ 3219 uint16_t rc; 3220 enum DP_CMN_MODULATION_TYPE mod; 3221 3222 mod = dp_getmodulation(preamble, bw); 3223 rc = mcs; 3224 3225 /* get the base of corresponding rate table entry */ 3226 res = _rc_idx[mod]; 3227 3228 switch (preamble) { 3229 case DP_CMN_RATECODE_PREAM_HE: 3230 res += rc + nss * NUM_HE_MCS; 3231 break; 3232 3233 case DP_CMN_RATECODE_PREAM_VHT: 3234 res += rc + nss * NUM_VHT_MCS; 3235 break; 3236 3237 case DP_CMN_RATECODE_PREAM_HT: 3238 res += rc + nss * NUM_HT_MCS; 3239 break; 3240 3241 case DP_CMN_RATECODE_PREAM_CCK: 3242 rc &= ~HW_RATECODE_CCK_SHORT_PREAM_MASK; 3243 res += rc; 3244 break; 3245 3246 case DP_CMN_RATECODE_PREAM_OFDM: 3247 res += rc; 3248 break; 3249 3250 default: 3251 break; 3252 } 3253 if (res >= DP_RATE_TABLE_SIZE) 3254 return ratekbps; 3255 3256 if (!gi) { 3257 ratekbps = dp_11abgnratetable.info[res].userratekbps; 3258 } else { 3259 switch (gi) { 3260 case CDP_SGI_0_4_US: 3261 ratekbps = dp_11abgnratetable.info[res].ratekbpssgi; 3262 break; 3263 case CDP_SGI_1_6_US: 3264 ratekbps = dp_11abgnratetable.info[res].ratekbpsdgi; 3265 break; 3266 case CDP_SGI_3_2_US: 3267 ratekbps = dp_11abgnratetable.info[res].ratekbpsqgi; 3268 break; 3269 } 3270 } 3271 3272 return ratekbps; 3273 } 3274 3275 qdf_export_symbol(dp_getrateindex); 3276 3277 /* dp_rate_idx_to_kbps - get rate kbps from index 3278 * @rate_idx - rate index 3279 * @gintval - guard interval 3280 * 3281 * return - rate index in kbps with help of ratetable 3282 */ 3283 int dp_rate_idx_to_kbps(uint8_t rate_idx, uint8_t gintval) 3284 { 3285 if (rate_idx >= DP_RATE_TABLE_SIZE) 3286 return 0; 3287 3288 if (!gintval) 3289 return RT_GET_RAW_KBPS(&dp_11abgnratetable, rate_idx); 3290 else 3291 return RT_GET_SGI_KBPS(&dp_11abgnratetable, rate_idx); 3292 return 0; 3293 } 3294 3295 qdf_export_symbol(dp_rate_idx_to_kbps); 3296