]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: fw: api: add UHR data definitions
authorJohannes Berg <johannes.berg@intel.com>
Mon, 10 Nov 2025 13:02:23 +0000 (15:02 +0200)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 21 Jan 2026 12:23:02 +0000 (14:23 +0200)
Add the necessary data definitions for the sniffer-related fields
reported for the various UHR frame formats by the firmware/hardware
to be able to later add the necessary sniffer code.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20251110150012.358b51dd8cb2.I16178416dd7019cb88a45e55f81eb28510982028@changeid
drivers/net/wireless/intel/iwlwifi/fw/api/rx.h

index 6d0523497663880418a47bccba82bbe1282db398..beb20eadf6d61d98367c7c1bd9aef5b289b83175 100644 (file)
@@ -1269,19 +1269,82 @@ struct iwl_eht_tb_sigs {
 };
 
 struct iwl_uhr_sigs {
-       __le32 usig_a1, usig_a1_uhr, usig_a2_uhr, b1, b2;
+       /* same as EHT above */
+       __le32 usig_a1;
+#define OFDM_RX_FRAME_UHR_BSS_COLOR2                   0x0000003f
+       __le32 usig_a1_uhr;
+#define        OFDM_RX_FRAME_UHR_PPDU_TYPE                     0x00000003
+#define        OFDM_RX_FRAME_UHR_COBF_CSR_DISABLE              0x00000004
+#define        OFDM_RX_FRAME_UHR_PUNC_CHANNEL                  0x000000f8
+#define        OFDM_RX_FRAME_UHR_USIG2_VALIDATE_B8             0x00000100
+#define        OFDM_RX_FRAME_UHR_SIG_MCS                       0x00000600
+#define        OFDM_RX_FRAME_UHR_SIG_SYM_NUM                   0x0000f800
+#define        OFDM_RX_FRAME_UHR_TRIG_SPATIAL_REUSE_1          0x000f0000
+#define        OFDM_RX_FRAME_UHR_TRIG_SPATIAL_REUSE_2          0x00f00000
+#define        OFDM_RX_FRAME_UHR_TRIG_USIG2_DISREGARD          0x1f000000
+       __le32 usig_a2_uhr;
+#define OFDM_RX_FRAME_UHR_SPATIAL_REUSE                        0x0000000f
+#define OFDM_RX_FRAME_UHR_GI_LTF_TYPE                  0x00000030
+#define OFDM_RX_FRAME_UHR_NUM_OF_LTF_SYM               0x000001c0
+#define OFDM_RX_FRAME_UHR_CODING_EXTRA_SYM             0x00000200
+#define OFDM_RX_FRAME_UHR_PE_A_FACTOR                  0x00000c00
+#define OFDM_RX_FRAME_UHR_PE_DISAMBIGUITY              0x00001000
+#define OFDM_RX_FRAME_UHR_IM_DISABLE                   0x00002000
+#define OFDM_RX_FRAME_UHR_USIG_OVF_DISREGARD           0x0000c000
+#define OFDM_RX_FRAME_UHR_NUM_OF_USERS                 0x00070000
+#define OFDM_RX_FRAME_UHR_NSTS                         0x00f00000
+#define OFDM_RX_FRAME_UHR_BF                           0x01000000
+#define OFDM_RX_FRAME_UHR_USIG_OVF_NDP_DISREGARD       0x06000000
+#define OFDM_RX_FRAME_UHR_COMM_CC1_CRC_OK              0x08000000
+#define OFDM_RX_FRAME_UHR_COMM_CC2_CRC_OK              0x10000000
+#define OFDM_RX_FRAME_UHR_NON_VALID_RU_ALLOC           0x20000000
+       __le32 b1;
+#define OFDM_RX_FRAME_UHR_MCS                          0x000001f0
+#define OFDM_RX_FRAME_UHR_CODING                       0x00000200
+#define OFDM_RX_FRAME_UHR_SPATIAL_CONFIG               0x00003c00
+#define OFDM_RX_FRAME_UHR_STA_RU                       0x003fc000
+#define OFDM_RX_FRAME_UHR_STA_RU_PS160                 0x00400000
+#define OFDM_RX_FRAME_UHR_UEQM                         0x00800000
+#define OFDM_RX_FRAME_UHR_2XLDPC                       0x01000000
+#define OFDM_RX_FRAME_UHR_UEQM_PATTERN                 0x06000000
+#define OFDM_RX_FRAME_UHR_IS_MU_MIMO_USER_FIELD                0x08000000
+#define OFDM_RX_FRAME_UHR_USER_FIELD_CRC_OK            0x40000000
+       __le32 b2;
+#define OFDM_RX_UHR_NUM_OF_DATA_SYM                    0x000007ff
+#define OFDM_RX_UHR_PE_DURATION                                0x00003800
        __le32 sig2;
+       /* same as EHT above: OFDM_RX_FRAME_EHT_RU_ALLOC_* */
        __le32 cmn[6];
+#define OFDM_RX_FRAME_UHR_USER_FIELD_ID                        0x000007ff
        __le32 user_id;
 };
 
 struct iwl_uhr_tb_sigs {
-       __le32 usig_a1, usig_a2_uhr, tb_rx0, tb_rx1;
+       /* same as UHR above */
+       __le32 usig_a1, usig_a2_uhr;
+       /* same as HE above */
+       __le32 tb_rx0, tb_rx1;
 };
 
 struct iwl_uhr_elr_sigs {
+       /* same as UHR above */
        __le32 usig_a1, usig_a2_uhr;
-       __le32 uhr_sig_elr1, uhr_sig_elr2;
+#define OFDM_RX_VECTOR_UHR_ELR_VER_ID                  0x00000007
+#define OFDM_RX_VECTOR_UHR_ELR_UPLINK_FLAG             0x00000008
+#define OFDM_RX_VECTOR_UHR_ELR_MCS                     0x00000010
+#define OFDM_RX_VECTOR_UHR_ELR_CODING                  0x00000020
+#define OFDM_RX_VECTOR_UHR_ELR_LENGTH_IN_SYM           0x00007fc0
+#define OFDM_RX_VECTOR_UHR_ELR_CODING_EXTRA_SYM                0x00008000
+#define OFDM_RX_VECTOR_UHR_ELR_SIG1_CRC_OK             0x00010000
+#define OFDM_RX_VECTOR_UHR_ELR_STA_ID                  0x0ffe0000
+#define OFDM_RX_VECTOR_UHR_ELR_DISREGARD               0x70000000
+       __le32 uhr_sig_elr1;
+#define OFDM_RX_VECTOR_UHR_ELR_MARK_BSS_COLOR          0x0000003f
+#define OFDM_RX_VECTOR_UHR_ELR_SIG_ID_INDX             0x00000e00
+#define OFDM_RX_VECTOR_UHR_ELR_STA_RU                  0x000ff000
+#define OFDM_RX_VECTOR_UHR_ELR_STA_RU_PS160            0x00100000
+#define OFDM_RX_VECTOR_UHR_ELR_SIG2_CRC_OK             0x00200000
+       __le32 uhr_sig_elr2;
 };
 
 union iwl_sigs {