0001
0002
0003
0004
0005
0006 #ifndef __iwl_fw_api_rs_h__
0007 #define __iwl_fw_api_rs_h__
0008
0009 #include "mac.h"
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 enum iwl_tlc_mng_cfg_flags {
0026 IWL_TLC_MNG_CFG_FLAGS_STBC_MSK = BIT(0),
0027 IWL_TLC_MNG_CFG_FLAGS_LDPC_MSK = BIT(1),
0028 IWL_TLC_MNG_CFG_FLAGS_HE_STBC_160MHZ_MSK = BIT(2),
0029 IWL_TLC_MNG_CFG_FLAGS_HE_DCM_NSS_1_MSK = BIT(3),
0030 IWL_TLC_MNG_CFG_FLAGS_HE_DCM_NSS_2_MSK = BIT(4),
0031 };
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 enum iwl_tlc_mng_cfg_cw {
0042 IWL_TLC_MNG_CH_WIDTH_20MHZ,
0043 IWL_TLC_MNG_CH_WIDTH_40MHZ,
0044 IWL_TLC_MNG_CH_WIDTH_80MHZ,
0045 IWL_TLC_MNG_CH_WIDTH_160MHZ,
0046 IWL_TLC_MNG_CH_WIDTH_LAST = IWL_TLC_MNG_CH_WIDTH_160MHZ,
0047 };
0048
0049
0050
0051
0052
0053
0054 enum iwl_tlc_mng_cfg_chains {
0055 IWL_TLC_MNG_CHAIN_A_MSK = BIT(0),
0056 IWL_TLC_MNG_CHAIN_B_MSK = BIT(1),
0057 };
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 enum iwl_tlc_mng_cfg_mode {
0071 IWL_TLC_MNG_MODE_CCK = 0,
0072 IWL_TLC_MNG_MODE_OFDM_NON_HT = IWL_TLC_MNG_MODE_CCK,
0073 IWL_TLC_MNG_MODE_NON_HT = IWL_TLC_MNG_MODE_CCK,
0074 IWL_TLC_MNG_MODE_HT,
0075 IWL_TLC_MNG_MODE_VHT,
0076 IWL_TLC_MNG_MODE_HE,
0077 IWL_TLC_MNG_MODE_INVALID,
0078 IWL_TLC_MNG_MODE_NUM = IWL_TLC_MNG_MODE_INVALID,
0079 };
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097 enum iwl_tlc_mng_ht_rates {
0098 IWL_TLC_MNG_HT_RATE_MCS0 = 0,
0099 IWL_TLC_MNG_HT_RATE_MCS1,
0100 IWL_TLC_MNG_HT_RATE_MCS2,
0101 IWL_TLC_MNG_HT_RATE_MCS3,
0102 IWL_TLC_MNG_HT_RATE_MCS4,
0103 IWL_TLC_MNG_HT_RATE_MCS5,
0104 IWL_TLC_MNG_HT_RATE_MCS6,
0105 IWL_TLC_MNG_HT_RATE_MCS7,
0106 IWL_TLC_MNG_HT_RATE_MCS8,
0107 IWL_TLC_MNG_HT_RATE_MCS9,
0108 IWL_TLC_MNG_HT_RATE_MCS10,
0109 IWL_TLC_MNG_HT_RATE_MCS11,
0110 IWL_TLC_MNG_HT_RATE_MAX = IWL_TLC_MNG_HT_RATE_MCS11,
0111 };
0112
0113 enum IWL_TLC_MNG_NSS {
0114 IWL_TLC_NSS_1,
0115 IWL_TLC_NSS_2,
0116 IWL_TLC_NSS_MAX
0117 };
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 enum IWL_TLC_MCS_PER_BW {
0128 IWL_TLC_MCS_PER_BW_80,
0129 IWL_TLC_MCS_PER_BW_160,
0130 IWL_TLC_MCS_PER_BW_320,
0131 IWL_TLC_MCS_PER_BW_NUM_V3 = IWL_TLC_MCS_PER_BW_160 + 1,
0132 IWL_TLC_MCS_PER_BW_NUM_V4 = IWL_TLC_MCS_PER_BW_320 + 1,
0133 };
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154 struct iwl_tlc_config_cmd_v3 {
0155 u8 sta_id;
0156 u8 reserved1[3];
0157 u8 max_ch_width;
0158 u8 mode;
0159 u8 chains;
0160 u8 amsdu;
0161 __le16 flags;
0162 __le16 non_ht_rates;
0163 __le16 ht_rates[IWL_TLC_NSS_MAX][IWL_TLC_MCS_PER_BW_NUM_V3];
0164 __le16 max_mpdu_len;
0165 u8 sgi_ch_width_supp;
0166 u8 reserved2;
0167 __le32 max_tx_op;
0168 } __packed;
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187 struct iwl_tlc_config_cmd_v4 {
0188 u8 sta_id;
0189 u8 reserved1[3];
0190 u8 max_ch_width;
0191 u8 mode;
0192 u8 chains;
0193 u8 sgi_ch_width_supp;
0194 __le16 flags;
0195 __le16 non_ht_rates;
0196 __le16 ht_rates[IWL_TLC_NSS_MAX][IWL_TLC_MCS_PER_BW_NUM_V4];
0197 __le16 max_mpdu_len;
0198 __le16 max_tx_op;
0199 } __packed;
0200
0201
0202
0203
0204
0205
0206 enum iwl_tlc_update_flags {
0207 IWL_TLC_NOTIF_FLAG_RATE = BIT(0),
0208 IWL_TLC_NOTIF_FLAG_AMSDU = BIT(1),
0209 };
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220 struct iwl_tlc_update_notif {
0221 u8 sta_id;
0222 u8 reserved[3];
0223 __le32 flags;
0224 __le32 rate;
0225 __le32 amsdu_size;
0226 __le32 amsdu_enabled;
0227 } __packed;
0228
0229
0230 #define IWL_MAX_MCS_DISPLAY_SIZE 12
0231
0232 struct iwl_rate_mcs_info {
0233 char mbps[IWL_MAX_MCS_DISPLAY_SIZE];
0234 char mcs[IWL_MAX_MCS_DISPLAY_SIZE];
0235 };
0236
0237
0238
0239
0240
0241
0242 enum {
0243 IWL_RATE_1M_INDEX = 0,
0244 IWL_FIRST_CCK_RATE = IWL_RATE_1M_INDEX,
0245 IWL_RATE_2M_INDEX,
0246 IWL_RATE_5M_INDEX,
0247 IWL_RATE_11M_INDEX,
0248 IWL_LAST_CCK_RATE = IWL_RATE_11M_INDEX,
0249 IWL_RATE_6M_INDEX,
0250 IWL_FIRST_OFDM_RATE = IWL_RATE_6M_INDEX,
0251 IWL_RATE_MCS_0_INDEX = IWL_RATE_6M_INDEX,
0252 IWL_FIRST_HT_RATE = IWL_RATE_MCS_0_INDEX,
0253 IWL_FIRST_VHT_RATE = IWL_RATE_MCS_0_INDEX,
0254 IWL_RATE_9M_INDEX,
0255 IWL_RATE_12M_INDEX,
0256 IWL_RATE_MCS_1_INDEX = IWL_RATE_12M_INDEX,
0257 IWL_RATE_18M_INDEX,
0258 IWL_RATE_MCS_2_INDEX = IWL_RATE_18M_INDEX,
0259 IWL_RATE_24M_INDEX,
0260 IWL_RATE_MCS_3_INDEX = IWL_RATE_24M_INDEX,
0261 IWL_RATE_36M_INDEX,
0262 IWL_RATE_MCS_4_INDEX = IWL_RATE_36M_INDEX,
0263 IWL_RATE_48M_INDEX,
0264 IWL_RATE_MCS_5_INDEX = IWL_RATE_48M_INDEX,
0265 IWL_RATE_54M_INDEX,
0266 IWL_RATE_MCS_6_INDEX = IWL_RATE_54M_INDEX,
0267 IWL_LAST_NON_HT_RATE = IWL_RATE_54M_INDEX,
0268 IWL_RATE_60M_INDEX,
0269 IWL_RATE_MCS_7_INDEX = IWL_RATE_60M_INDEX,
0270 IWL_LAST_HT_RATE = IWL_RATE_MCS_7_INDEX,
0271 IWL_RATE_MCS_8_INDEX,
0272 IWL_RATE_MCS_9_INDEX,
0273 IWL_LAST_VHT_RATE = IWL_RATE_MCS_9_INDEX,
0274 IWL_RATE_MCS_10_INDEX,
0275 IWL_RATE_MCS_11_INDEX,
0276 IWL_LAST_HE_RATE = IWL_RATE_MCS_11_INDEX,
0277 IWL_RATE_COUNT_LEGACY = IWL_LAST_NON_HT_RATE + 1,
0278 IWL_RATE_COUNT = IWL_LAST_HE_RATE + 1,
0279 IWL_RATE_INVM_INDEX = IWL_RATE_COUNT,
0280 IWL_RATE_INVALID = IWL_RATE_COUNT,
0281 };
0282
0283 #define IWL_RATE_BIT_MSK(r) BIT(IWL_RATE_##r##M_INDEX)
0284
0285
0286 enum {
0287 IWL_RATE_6M_PLCP = 13,
0288 IWL_RATE_9M_PLCP = 15,
0289 IWL_RATE_12M_PLCP = 5,
0290 IWL_RATE_18M_PLCP = 7,
0291 IWL_RATE_24M_PLCP = 9,
0292 IWL_RATE_36M_PLCP = 11,
0293 IWL_RATE_48M_PLCP = 1,
0294 IWL_RATE_54M_PLCP = 3,
0295 IWL_RATE_1M_PLCP = 10,
0296 IWL_RATE_2M_PLCP = 20,
0297 IWL_RATE_5M_PLCP = 55,
0298 IWL_RATE_11M_PLCP = 110,
0299 IWL_RATE_INVM_PLCP = -1,
0300 };
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320 #define RATE_MCS_HT_POS 8
0321 #define RATE_MCS_HT_MSK_V1 BIT(RATE_MCS_HT_POS)
0322
0323
0324 #define RATE_MCS_CCK_POS_V1 9
0325 #define RATE_MCS_CCK_MSK_V1 BIT(RATE_MCS_CCK_POS_V1)
0326
0327
0328 #define RATE_MCS_VHT_POS_V1 26
0329 #define RATE_MCS_VHT_MSK_V1 BIT(RATE_MCS_VHT_POS_V1)
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355 #define RATE_HT_MCS_RATE_CODE_MSK_V1 0x7
0356 #define RATE_HT_MCS_NSS_POS_V1 3
0357 #define RATE_HT_MCS_NSS_MSK_V1 (3 << RATE_HT_MCS_NSS_POS_V1)
0358 #define RATE_HT_MCS_MIMO2_MSK BIT(RATE_HT_MCS_NSS_POS_V1)
0359
0360
0361 #define RATE_HT_MCS_GF_POS 10
0362 #define RATE_HT_MCS_GF_MSK (1 << RATE_HT_MCS_GF_POS)
0363
0364 #define RATE_HT_MCS_INDEX_MSK_V1 0x3f
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377 #define RATE_VHT_MCS_RATE_CODE_MSK 0xf
0378 #define RATE_VHT_MCS_NSS_POS 4
0379 #define RATE_VHT_MCS_NSS_MSK (3 << RATE_VHT_MCS_NSS_POS)
0380 #define RATE_VHT_MCS_MIMO2_MSK BIT(RATE_VHT_MCS_NSS_POS)
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404 #define RATE_LEGACY_RATE_MSK_V1 0xff
0405
0406
0407 #define RATE_MCS_HE_POS_V1 10
0408 #define RATE_MCS_HE_MSK_V1 BIT(RATE_MCS_HE_POS_V1)
0409
0410
0411
0412
0413
0414 #define RATE_MCS_CHAN_WIDTH_POS 11
0415 #define RATE_MCS_CHAN_WIDTH_MSK_V1 (3 << RATE_MCS_CHAN_WIDTH_POS)
0416
0417
0418 #define RATE_MCS_SGI_POS_V1 13
0419 #define RATE_MCS_SGI_MSK_V1 BIT(RATE_MCS_SGI_POS_V1)
0420
0421
0422 #define RATE_MCS_ANT_POS 14
0423 #define RATE_MCS_ANT_A_MSK (1 << RATE_MCS_ANT_POS)
0424 #define RATE_MCS_ANT_B_MSK (2 << RATE_MCS_ANT_POS)
0425 #define RATE_MCS_ANT_AB_MSK (RATE_MCS_ANT_A_MSK | \
0426 RATE_MCS_ANT_B_MSK)
0427 #define RATE_MCS_ANT_MSK RATE_MCS_ANT_AB_MSK
0428
0429
0430 #define RATE_MCS_STBC_POS 17
0431 #define RATE_MCS_STBC_MSK BIT(RATE_MCS_STBC_POS)
0432
0433
0434 #define RATE_HE_DUAL_CARRIER_MODE 18
0435 #define RATE_HE_DUAL_CARRIER_MODE_MSK BIT(RATE_HE_DUAL_CARRIER_MODE)
0436
0437
0438 #define RATE_MCS_BF_POS 19
0439 #define RATE_MCS_BF_MSK (1 << RATE_MCS_BF_POS)
0440
0441
0442
0443
0444
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460 #define RATE_MCS_HE_GI_LTF_POS 20
0461 #define RATE_MCS_HE_GI_LTF_MSK_V1 (3 << RATE_MCS_HE_GI_LTF_POS)
0462
0463
0464 #define RATE_MCS_HE_TYPE_POS_V1 22
0465 #define RATE_MCS_HE_TYPE_SU_V1 (0 << RATE_MCS_HE_TYPE_POS_V1)
0466 #define RATE_MCS_HE_TYPE_EXT_SU_V1 BIT(RATE_MCS_HE_TYPE_POS_V1)
0467 #define RATE_MCS_HE_TYPE_MU_V1 (2 << RATE_MCS_HE_TYPE_POS_V1)
0468 #define RATE_MCS_HE_TYPE_TRIG_V1 (3 << RATE_MCS_HE_TYPE_POS_V1)
0469 #define RATE_MCS_HE_TYPE_MSK_V1 (3 << RATE_MCS_HE_TYPE_POS_V1)
0470
0471
0472 #define RATE_MCS_DUP_POS_V1 24
0473 #define RATE_MCS_DUP_MSK_V1 (3 << RATE_MCS_DUP_POS_V1)
0474
0475
0476 #define RATE_MCS_LDPC_POS_V1 27
0477 #define RATE_MCS_LDPC_MSK_V1 BIT(RATE_MCS_LDPC_POS_V1)
0478
0479
0480 #define RATE_MCS_HE_106T_POS_V1 28
0481 #define RATE_MCS_HE_106T_MSK_V1 BIT(RATE_MCS_HE_106T_POS_V1)
0482
0483
0484 #define RATE_MCS_RTS_REQUIRED_POS (30)
0485 #define RATE_MCS_RTS_REQUIRED_MSK (0x1 << RATE_MCS_RTS_REQUIRED_POS)
0486
0487 #define RATE_MCS_CTS_REQUIRED_POS (31)
0488 #define RATE_MCS_CTS_REQUIRED_MSK (0x1 << RATE_MCS_CTS_REQUIRED_POS)
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503 #define RATE_MCS_MOD_TYPE_POS 8
0504 #define RATE_MCS_MOD_TYPE_MSK (0x7 << RATE_MCS_MOD_TYPE_POS)
0505 #define RATE_MCS_CCK_MSK (0 << RATE_MCS_MOD_TYPE_POS)
0506 #define RATE_MCS_LEGACY_OFDM_MSK (1 << RATE_MCS_MOD_TYPE_POS)
0507 #define RATE_MCS_HT_MSK (2 << RATE_MCS_MOD_TYPE_POS)
0508 #define RATE_MCS_VHT_MSK (3 << RATE_MCS_MOD_TYPE_POS)
0509 #define RATE_MCS_HE_MSK (4 << RATE_MCS_MOD_TYPE_POS)
0510 #define RATE_MCS_EHT_MSK (5 << RATE_MCS_MOD_TYPE_POS)
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524
0525
0526
0527
0528
0529
0530
0531
0532 #define RATE_LEGACY_RATE_MSK 0x7
0533
0534
0535
0536
0537
0538
0539 #define RATE_HT_MCS_CODE_MSK 0x7
0540 #define RATE_MCS_NSS_POS 4
0541 #define RATE_MCS_NSS_MSK (1 << RATE_MCS_NSS_POS)
0542 #define RATE_MCS_CODE_MSK 0xf
0543 #define RATE_HT_MCS_INDEX(r) ((((r) & RATE_MCS_NSS_MSK) >> 1) | \
0544 ((r) & RATE_HT_MCS_CODE_MSK))
0545
0546
0547
0548
0549
0550
0551 #define RATE_MCS_CHAN_WIDTH_MSK (0x7 << RATE_MCS_CHAN_WIDTH_POS)
0552 #define RATE_MCS_CHAN_WIDTH_20 (0 << RATE_MCS_CHAN_WIDTH_POS)
0553 #define RATE_MCS_CHAN_WIDTH_40 (1 << RATE_MCS_CHAN_WIDTH_POS)
0554 #define RATE_MCS_CHAN_WIDTH_80 (2 << RATE_MCS_CHAN_WIDTH_POS)
0555 #define RATE_MCS_CHAN_WIDTH_160 (3 << RATE_MCS_CHAN_WIDTH_POS)
0556 #define RATE_MCS_CHAN_WIDTH_320 (4 << RATE_MCS_CHAN_WIDTH_POS)
0557
0558
0559
0560
0561
0562
0563
0564
0565
0566 #define RATE_MCS_LDPC_POS 16
0567 #define RATE_MCS_LDPC_MSK (1 << RATE_MCS_LDPC_POS)
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599 #define RATE_MCS_HE_GI_LTF_MSK (0x7 << RATE_MCS_HE_GI_LTF_POS)
0600 #define RATE_MCS_SGI_POS RATE_MCS_HE_GI_LTF_POS
0601 #define RATE_MCS_SGI_MSK (1 << RATE_MCS_SGI_POS)
0602 #define RATE_MCS_HE_SU_4_LTF 3
0603 #define RATE_MCS_HE_SU_4_LTF_08_GI 4
0604
0605
0606 #define RATE_MCS_HE_TYPE_POS 23
0607 #define RATE_MCS_HE_TYPE_SU (0 << RATE_MCS_HE_TYPE_POS)
0608 #define RATE_MCS_HE_TYPE_EXT_SU (1 << RATE_MCS_HE_TYPE_POS)
0609 #define RATE_MCS_HE_TYPE_MU (2 << RATE_MCS_HE_TYPE_POS)
0610 #define RATE_MCS_HE_TYPE_TRIG (3 << RATE_MCS_HE_TYPE_POS)
0611 #define RATE_MCS_HE_TYPE_MSK (3 << RATE_MCS_HE_TYPE_POS)
0612
0613
0614
0615
0616
0617
0618
0619
0620
0621 #define RATE_MCS_DUP_POS 25
0622 #define RATE_MCS_DUP_MSK (1 << RATE_MCS_DUP_POS)
0623
0624
0625 #define RATE_MCS_HE_106T_POS 26
0626 #define RATE_MCS_HE_106T_MSK (1 << RATE_MCS_HE_106T_POS)
0627
0628
0629
0630
0631 #define RATE_MCS_EHT_EXTRA_LTF_POS 27
0632 #define RATE_MCS_EHT_EXTRA_LTF_MSK (1 << RATE_MCS_EHT_EXTRA_LTF_POS)
0633
0634
0635
0636
0637
0638
0639 #define LQ_MAX_RETRY_NUM 16
0640
0641
0642
0643
0644 #define LQ_FLAG_USE_RTS_POS 0
0645 #define LQ_FLAG_USE_RTS_MSK (1 << LQ_FLAG_USE_RTS_POS)
0646
0647
0648 #define LQ_FLAG_COLOR_POS 1
0649 #define LQ_FLAG_COLOR_MSK (7 << LQ_FLAG_COLOR_POS)
0650 #define LQ_FLAG_COLOR_GET(_f) (((_f) & LQ_FLAG_COLOR_MSK) >>\
0651 LQ_FLAG_COLOR_POS)
0652 #define LQ_FLAGS_COLOR_INC(_c) ((((_c) + 1) << LQ_FLAG_COLOR_POS) &\
0653 LQ_FLAG_COLOR_MSK)
0654 #define LQ_FLAG_COLOR_SET(_f, _c) ((_c) | ((_f) & ~LQ_FLAG_COLOR_MSK))
0655
0656
0657
0658
0659
0660
0661 #define LQ_FLAG_RTS_BW_SIG_POS 4
0662 #define LQ_FLAG_RTS_BW_SIG_NONE (0 << LQ_FLAG_RTS_BW_SIG_POS)
0663 #define LQ_FLAG_RTS_BW_SIG_STATIC (1 << LQ_FLAG_RTS_BW_SIG_POS)
0664 #define LQ_FLAG_RTS_BW_SIG_DYNAMIC (2 << LQ_FLAG_RTS_BW_SIG_POS)
0665
0666
0667
0668
0669 #define LQ_FLAG_DYNAMIC_BW_POS 6
0670 #define LQ_FLAG_DYNAMIC_BW_MSK (1 << LQ_FLAG_DYNAMIC_BW_POS)
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682
0683
0684 #define LQ_SS_STBC_ALLOWED_POS 0
0685 #define LQ_SS_STBC_ALLOWED_MSK (3 << LQ_SS_STBC_ALLOWED_MSK)
0686
0687
0688 #define LQ_SS_STBC_1SS_ALLOWED (1 << LQ_SS_STBC_ALLOWED_POS)
0689
0690
0691 #define LQ_SS_BFER_ALLOWED_POS 2
0692 #define LQ_SS_BFER_ALLOWED (1 << LQ_SS_BFER_ALLOWED_POS)
0693
0694
0695
0696
0697
0698
0699 #define LQ_SS_FORCE_POS 3
0700 #define LQ_SS_FORCE (1 << LQ_SS_FORCE_POS)
0701
0702
0703
0704
0705 #define LQ_SS_PARAMS_VALID_POS 31
0706 #define LQ_SS_PARAMS_VALID (1 << LQ_SS_PARAMS_VALID_POS)
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734 struct iwl_lq_cmd {
0735 u8 sta_id;
0736 u8 reduced_tpc;
0737 __le16 control;
0738
0739 u8 flags;
0740 u8 mimo_delim;
0741 u8 single_stream_ant_msk;
0742 u8 dual_stream_ant_msk;
0743 u8 initial_rate_index[AC_NUM];
0744
0745 __le16 agg_time_limit;
0746 u8 agg_disable_start_th;
0747 u8 agg_frame_cnt_limit;
0748 __le32 reserved2;
0749 __le32 rs_table[LQ_MAX_RETRY_NUM];
0750 __le32 ss_params;
0751 };
0752
0753 u8 iwl_fw_rate_idx_to_plcp(int idx);
0754 u32 iwl_new_rate_from_v1(u32 rate_v1);
0755 const struct iwl_rate_mcs_info *iwl_rate_mcs(int idx);
0756 const char *iwl_rs_pretty_ant(u8 ant);
0757 const char *iwl_rs_pretty_bw(int bw);
0758 int rs_pretty_print_rate(char *buf, int bufsz, const u32 rate);
0759 bool iwl_he_is_sgi(u32 rate_n_flags);
0760
0761 #endif