Lines Matching +full:2 +full:- +full:bit

1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
3 * Copyright (C) 2012-2014, 2018-2022, 2024 Intel Corporation
12 * enum iwl_tlc_mng_cfg_flags - options for TLC config flags
22 * for BPSK (MCS 0) with 2 spatial
27 IWL_TLC_MNG_CFG_FLAGS_STBC_MSK = BIT(0),
28 IWL_TLC_MNG_CFG_FLAGS_LDPC_MSK = BIT(1),
29 IWL_TLC_MNG_CFG_FLAGS_HE_STBC_160MHZ_MSK = BIT(2),
30 IWL_TLC_MNG_CFG_FLAGS_HE_DCM_NSS_1_MSK = BIT(3),
31 IWL_TLC_MNG_CFG_FLAGS_HE_DCM_NSS_2_MSK = BIT(4),
32 IWL_TLC_MNG_CFG_FLAGS_EHT_EXTRA_LTF_MSK = BIT(6),
36 * enum iwl_tlc_mng_cfg_cw - channel width options
52 * enum iwl_tlc_mng_cfg_chains - possible chains
57 IWL_TLC_MNG_CHAIN_A_MSK = BIT(0),
58 IWL_TLC_MNG_CHAIN_B_MSK = BIT(1),
62 * enum iwl_tlc_mng_cfg_mode - supported modes
82 * enum iwl_tlc_mng_ht_rates - HT/VHT/HE rates
120 * enum IWL_TLC_MCS_PER_BW - mcs index per BW
121 * @IWL_TLC_MCS_PER_BW_80: mcs for bw - 20Hhz, 40Hhz, 80Hhz
122 * @IWL_TLC_MCS_PER_BW_160: mcs for bw - 160Mhz
123 * @IWL_TLC_MCS_PER_BW_320: mcs for bw - 320Mhz
136 * struct iwl_tlc_config_cmd_v3 - TLC configuration
146 * <nss, channel-width> pair (0 - 80mhz width and below, 1 - 160mhz).
149 * use BIT(@enum iwl_tlc_mng_cfg_cw)
171 * struct iwl_tlc_config_cmd_v4 - TLC configuration
178 * use BIT(&enum iwl_tlc_mng_cfg_cw)
181 * @ht_rates: bitmap of &enum iwl_tlc_mng_ht_rates, per <nss, channel-width>
182 * pair (0 - 80mhz width and below, 1 - 160mhz, 2 - 320mhz).
202 * enum iwl_tlc_update_flags - updated fields
207 IWL_TLC_NOTIF_FLAG_RATE = BIT(0),
208 IWL_TLC_NOTIF_FLAG_AMSDU = BIT(1),
212 * struct iwl_tlc_update_notif - TLC notification from FW
218 * @amsdu_enabled: bitmap for per-TID AMSDU enablement
283 #define IWL_RATE_BIT_MSK(r) BIT(IWL_RATE_##r##M_INDEX)
285 /* fw API values for legacy bit rates, both OFDM and CCK */
299 IWL_RATE_INVM_PLCP = -1,
303 * rate_n_flags bit fields version 1
305 * The 32-bit value has different layouts in the low 8 bites depending on the
309 * High-throughput (HT) rate format
310 * bit 8 is 1, bit 26 is 0, bit 9 is 0 (OFDM)
311 * Very High-throughput (VHT) rate format
312 * bit 8 is 0, bit 26 is 1, bit 9 is 0 (OFDM)
314 * bit 8 is 0, bit 26 is 0, bit 9 is 0 (OFDM)
316 * bit 8 is 0, bit 26 is 0, bit 9 is 1 (CCK)
319 /* Bit 8: (1) HT format, (0) legacy or VHT format */
321 #define RATE_MCS_HT_MSK_V1 BIT(RATE_MCS_HT_POS)
323 /* Bit 9: (1) CCK, (0) OFDM. HT (bit 8) must be "0" for this bit to be valid */
325 #define RATE_MCS_CCK_MSK_V1 BIT(RATE_MCS_CCK_POS_V1)
327 /* Bit 26: (1) VHT format, (0) legacy format in bits 8:0 */
329 #define RATE_MCS_VHT_MSK_V1 BIT(RATE_MCS_VHT_POS_V1)
333 * High-throughput (HT) rate format for bits 7:0
335 * 2-0: MCS rate base
338 * 2) 18 Mbps
344 * 4-3: 0) Single stream (SISO)
346 * 2) Triple stream (MIMO)
348 * (bits 7-6 are zero)
351 * support MCSes above 15/23, and 0-7 have one stream, 8-15 have two
352 * streams and 16-23 have three streams. We could also support MCS 32
353 * which is the duplicate 20 MHz MCS (bit 5 set, all others zero.)
358 #define RATE_HT_MCS_MIMO2_MSK BIT(RATE_HT_MCS_NSS_POS_V1)
360 /* Bit 10: (1) Use Green Field preamble */
367 * Very High-throughput (VHT) rate format for bits 7:0
369 * 3-0: VHT MCS (0-9)
370 * 5-4: number of streams - 1:
373 * 2) Triple stream (MIMO)
376 /* Bit 4-5: (0) SISO, (1) MIMO2 (2) MIMO3 */
382 * 3-0: 0xD) 6 Mbps
390 * (bits 7-4 are 0)
393 * bit 8 is 0, bit 26 is 0, bit 9 is 1 (CCK):
395 * 6-0: 10) 1 Mbps
396 * 20) 2 Mbps
399 * (bit 7 is 0)
403 /* Bit 10 - OFDM HE */
405 #define RATE_MCS_HE_MSK_V1 BIT(RATE_MCS_HE_POS_V1)
408 * Bit 11-12: (0) 20MHz, (1) 40MHz, (2) 80MHz, (3) 160MHz
409 * 0 and 1 are valid for HT and VHT, 2 and 3 only for VHT
414 /* Bit 13: (1) Short guard interval (0.4 usec), (0) normal GI (0.8 usec) */
416 #define RATE_MCS_SGI_MSK_V1 BIT(RATE_MCS_SGI_POS_V1)
418 /* Bit 14-16: Antenna selection (1) Ant A, (2) Ant B, (4) Ant C */
421 #define RATE_MCS_ANT_B_MSK (2 << RATE_MCS_ANT_POS)
426 /* Bit 17: (0) SS, (1) SS*2 */
428 #define RATE_MCS_STBC_MSK BIT(RATE_MCS_STBC_POS)
430 /* Bit 18: OFDM-HE dual carrier mode */
432 #define RATE_HE_DUAL_CARRIER_MODE_MSK BIT(RATE_HE_DUAL_CARRIER_MODE)
434 /* Bit 19: (0) Beamforming is off, (1) Beamforming is on */
439 * Bit 20-21: HE LTF type and guard interval
442 * 1 2xLTF+0.8us
443 * 2 2xLTF+1.6us
444 * 3 & SGI (bit 13) clear 4xLTF+3.2us
445 * 3 & SGI (bit 13) set 4xLTF+0.8us
448 * 1 2xLTF+0.8us
449 * 2 2xLTF+1.6us
451 * HE-EHT TRIG:
453 * 1 2xLTF+1.6us
454 * 2 4xLTF+3.2us
457 * 0 2xLTF+0.8us
458 * 1 2xLTF+1.6us
459 * 2 4xLTF+0.8us
465 /* Bit 22-23: HE type. (0) SU, (1) SU_EXT, (2) MU, (3) trigger based */
468 #define RATE_MCS_HE_TYPE_EXT_SU_V1 BIT(RATE_MCS_HE_TYPE_POS_V1)
469 #define RATE_MCS_HE_TYPE_MU_V1 (2 << RATE_MCS_HE_TYPE_POS_V1)
473 /* Bit 24-25: (0) 20MHz (no dup), (1) 2x20MHz, (2) 4x20MHz, 3 8x20MHz */
477 /* Bit 27: (1) LDPC enabled, (0) LDPC disabled */
479 #define RATE_MCS_LDPC_MSK_V1 BIT(RATE_MCS_LDPC_POS_V1)
481 /* Bit 28: (1) 106-tone RX (8 MHz RU), (0) normal bandwidth */
483 #define RATE_MCS_HE_106T_MSK_V1 BIT(RATE_MCS_HE_106T_POS_V1)
485 /* Bit 30-31: (1) RTS, (2) CTS */
492 /* rate_n_flags bit field version 2
494 * The 32-bit value has different layouts in the low 8 bits depending on the
500 /* Bits 10-8: rate format
501 * (0) Legacy CCK (1) Legacy OFDM (2) High-throughput (HT)
502 * (3) Very High-throughput (VHT) (4) High-efficiency (HE)
503 * (5) Extremely High-throughput (EHT)
509 #define RATE_MCS_HT_MSK (2 << RATE_MCS_MOD_TYPE_POS)
517 * (0) 0xa - 1 Mbps
518 * (1) 0x14 - 2 Mbps
519 * (2) 0x37 - 5.5 Mbps
520 * (3) 0x6e - 11 nbps
526 * (2) 12 Mbps
538 * 3-0: MCS
548 /* Bits 7-5: reserved */
551 * Bits 13-11: (0) 20MHz, (1) 40MHz, (2) 80MHz, (3) 160MHz, (4) 320MHz
558 #define RATE_MCS_CHAN_WIDTH_80_VAL 2
565 /* Bit 15-14: Antenna selection:
566 * Bit 14: Ant A active
567 * Bit 15: Ant B active
572 /* Bit 16 (1) LDPC enables, (0) LDPC disabled */
576 /* Bit 17: (0) SS, (1) SS*2 (same as v1) */
578 /* Bit 18: OFDM-HE dual carrier mode (same as v1) */
580 /* Bit 19: (0) Beamforming is off, (1) Beamforming is on (same as v1) */
583 * Bit 22-20: HE LTF type and guard interval
592 * 1 2xLTF+0.8us
593 * 2 2xLTF+1.6us
598 * 1 2xLTF+0.8us
599 * 2 2xLTF+1.6us
603 * 1 2xLTF+1.6us
604 * 2 4xLTF+3.2us
612 /* Bit 24-23: HE type. (0) SU, (1) SU_EXT, (2) MU, (3) trigger based */
616 #define RATE_MCS_HE_TYPE_MU (2 << RATE_MCS_HE_TYPE_POS)
620 /* Bit 25: duplicate channel enabled
622 * if this bit is set, duplicate is according to BW (bits 11-13):
624 * CCK: 2x 20MHz
625 * OFDM Legacy: N x 20Mhz, (N = BW \ 2 , either 2, 4, 8, 16)
626 * EHT: 2 x BW/2, (80 - 2x40, 160 - 2x80, 320 - 2x160)
631 /* Bit 26: (1) 106-tone RX (8 MHz RU), (0) normal bandwidth */
635 /* Bit 27: EHT extra LTF:
636 * instead of 1 LTF for SISO use 2 LTFs,
637 * instead of 2 LTFs for NSTS=2 use 4 LTFs*/
641 /* Bit 31-28: reserved */
648 /* Link quality command flags bit fields */
650 /* Bit 0: (0) Don't use RTS (1) Use RTS */
654 /* Bit 1-3: LQ command color. Used to match responses to LQ commands */
663 /* Bit 4-5: Tx RTS BW Signalling
666 * (2) Dynamic BW signalling
671 #define LQ_FLAG_RTS_BW_SIG_DYNAMIC (2 << LQ_FLAG_RTS_BW_SIG_POS)
673 /* Bit 6: (0) No dynamic BW selection (1) Allow dynamic BW selection
679 /* Single Stream Tx Parameters (lq_cmd->ss_params)
684 /* Bit 0-1: Max STBC streams allowed. Can be 0-3.
685 * (0) - No STBC allowed
686 * (1) - 2x1 STBC allowed (HT/VHT)
687 * (2) - 4x2 STBC allowed (HT/VHT)
688 * (3) - 3x2 STBC allowed (HT only)
689 * All our chips are at most 2 antennas so only (1) is valid for now.
694 /* 2x1 STBC is allowed */
697 /* Bit 2: Beamformer (VHT only) is allowed */
698 #define LQ_SS_BFER_ALLOWED_POS 2
701 /* Bit 3: Force BFER or STBC for testing
709 /* Bit 31: ss_params field is valid. Used for FW backward compatibility
716 * struct iwl_lq_cmd - link quality command
729 * @agg_disable_start_th: try-count threshold for starting aggregation.
730 * If a frame has higher try-count, it should not be selected for
735 * 2 - 0x3f: maximal number of frames (up to 3f == 63)