qcacmn: Add EHT radiotap header fields

Add the EHT radiotap header definition and
support to parse these fields.

Change-Id: If988753b497cc2feb79f358afea2674effd8270c
CRs-Fixed: 3092818
このコミットが含まれているのは:
Rakesh Pillai
2021-12-10 02:04:36 -08:00
committed by Madan Koyyalamudi
コミット 1c6617edf5
3個のファイルの変更325行の追加27行の削除

ファイルの表示

@@ -212,6 +212,8 @@ typedef __qdf_nbuf_queue_t qdf_nbuf_queue_t;
#define RADIOTAP_HE_FLAGS_LEN (12 + 1)
#define RADIOTAP_HE_MU_FLAGS_LEN (8 + 1)
#define RADIOTAP_HE_MU_OTHER_FLAGS_LEN (18 + 1)
#define RADIOTAP_U_SIG_FLAGS_LEN (12 + 3)
#define RADIOTAP_EHT_FLAGS_LEN (32 + 3)
#define RADIOTAP_FIXED_HEADER_LEN 17
#define RADIOTAP_HT_FLAGS_LEN 3
#define RADIOTAP_AMPDU_STATUS_LEN (8 + 3)
@@ -234,7 +236,9 @@ typedef __qdf_nbuf_queue_t qdf_nbuf_queue_t;
RADIOTAP_HE_MU_OTHER_FLAGS_LEN + \
RADIOTAP_VENDOR_NS_LEN + \
RADIOTAP_HEADER_EXT_LEN + \
RADIOTAP_HEADER_EXT2_LEN)
RADIOTAP_HEADER_EXT2_LEN + \
RADIOTAP_U_SIG_FLAGS_LEN + \
RADIOTAP_EHT_FLAGS_LEN)
/**
* struct mon_rx_status - This will have monitor mode rx_status extracted from
@@ -252,12 +256,15 @@ typedef __qdf_nbuf_queue_t qdf_nbuf_queue_t;
* @he_flags: HE (11ax) flags, only present in HE frames
* @he_mu_flags: HE-MU (11ax) flags, only present in HE frames
* @he_mu_other_flags: HE-MU-OTHER (11ax) flags, only present in HE frames
* @usig_flags: USIG flags, only present in 802.11BE and subsequent protocol
* @eht_flags: EHT (11be) flags, only present in EHT frames
* @he_sig_A1_known: HE (11ax) sig A1 known field
* @he_sig_A2_known: HE (11ax) sig A2 known field
* @he_sig_b_common: HE (11ax) sig B common field
* @he_sig_b_common_known: HE (11ax) sig B common known field
* @l_sig_a_info: L_SIG_A value coming in Rx descriptor
* @l_sig_b_info: L_SIG_B value coming in Rx descriptor
* @num_eht_user_info_valid: Number of valid EHT user info
* @rate: Rate in terms 500Kbps
* @rtap_flags: Bit map of available fields in the radiotap
* @ant_signal_db: Rx packet RSSI
@@ -319,6 +326,12 @@ typedef __qdf_nbuf_queue_t qdf_nbuf_queue_t;
* @punctured_bw: puntured bw
* @rx_user_status: pointer to mon_rx_user_status, when set update
* radiotap header will use userinfo from this structure.
* @usig_common: U-SIG property of received frame
* @usig_value: U-SIG property of received frame
* @usig_mask: U-SIG property of received frame
* @eht_known: EHT property of received frame
* @eht_data: EHT property of received frame
* @eht_user_info: EHT USER property of received frame
*/
struct mon_rx_status {
uint64_t tsft;
@@ -333,12 +346,15 @@ struct mon_rx_status {
uint16_t he_flags;
uint16_t he_mu_flags;
uint16_t he_mu_other_flags;
uint16_t usig_flags;
uint16_t eht_flags;
uint16_t he_sig_A1_known;
uint16_t he_sig_A2_known;
uint16_t he_sig_b_common;
uint16_t he_sig_b_common_known;
uint32_t l_sig_a_info;
uint32_t l_sig_b_info;
uint8_t num_eht_user_info_valid;
uint8_t rate;
uint8_t rtap_flags;
uint8_t ant_signal_db;
@@ -411,6 +427,12 @@ struct mon_rx_status {
uint8_t punctured_bw;
#endif
struct mon_rx_user_status *rx_user_status;
uint32_t usig_common;
uint32_t usig_value;
uint32_t usig_mask;
uint32_t eht_known;
uint32_t eht_data[6];
uint32_t eht_user_info[4];
};
/**
@@ -740,6 +762,145 @@ struct qdf_radiotap_ext2 {
#define QDF_MON_STATUS_STA_DCM_KNOWN 0x40
#define QDF_MON_STATUS_STA_CODING_KNOWN 0x80
/* U-SIG Common Mask */
#define QDF_MON_STATUS_USIG_PHY_VERSION_KNOWN 0x00000001
#define QDF_MON_STATUS_USIG_BW_KNOWN 0x00000002
#define QDF_MON_STATUS_USIG_UL_DL_KNOWN 0x00000004
#define QDF_MON_STATUS_USIG_BSS_COLOR_KNOWN 0x00000008
#define QDF_MON_STATUS_USIG_TXOP_KNOWN 0x00000010
#define QDF_MON_STATUS_USIG_PHY_VERSION_SHIFT 12
#define QDF_MON_STATUS_USIG_BW_SHIFT 15
#define QDF_MON_STATUS_USIG_UL_DL_SHIFT 18
#define QDF_MON_STATUS_USIG_BSS_COLOR_SHIFT 19
#define QDF_MON_STATUS_USIG_TXOP_SHIFT 25
/* U-SIG MU/TB Value */
#define QDF_MON_STATUS_USIG_DISREGARD_SHIFT 0
#define QDF_MON_STATUS_USIG_PPDU_TYPE_N_COMP_MODE_SHIFT 6
#define QDF_MON_STATUS_USIG_VALIDATE_SHIFT 8
#define QDF_MON_STATUS_USIG_MU_VALIDATE1_SHIFT 5
#define QDF_MON_STATUS_USIG_MU_PUNCTURE_CH_INFO_SHIFT 9
#define QDF_MON_STATUS_USIG_MU_VALIDATE2_SHIFT 12
#define QDF_MON_STATUS_USIG_MU_EHT_SIG_MCS_SHIFT 15
#define QDF_MON_STATUS_USIG_MU_NUM_EHT_SIG_SYM_SHIFT 17
#define QDF_MON_STATUS_USIG_TB_SPATIAL_REUSE_1_SHIFT 9
#define QDF_MON_STATUS_USIG_TB_SPATIAL_REUSE_2_SHIFT 13
#define QDF_MON_STATUS_USIG_TB_DISREGARD1_SHIFT 17
#define QDF_MON_STATUS_USIG_CRC_SHIFT 22
#define QDF_MON_STATUS_USIG_TAIL_SHIFT 26
/* U-SIG MU/TB Mask */
#define QDF_MON_STATUS_USIG_DISREGARD_KNOWN 0x00000001
#define QDF_MON_STATUS_USIG_PPDU_TYPE_N_COMP_MODE_KNOWN 0x00000004
#define QDF_MON_STATUS_USIG_VALIDATE_KNOWN 0x00000008
#define QDF_MON_STATUS_USIG_MU_VALIDATE1_KNOWN 0x00000002
#define QDF_MON_STATUS_USIG_MU_PUNCTURE_CH_INFO_KNOWN 0x00000010
#define QDF_MON_STATUS_USIG_MU_VALIDATE2_KNOWN 0x00000020
#define QDF_MON_STATUS_USIG_MU_EHT_SIG_MCS_KNOWN 0x00000040
#define QDF_MON_STATUS_USIG_MU_NUM_EHT_SIG_SYM_KNOWN 0x00000080
#define QDF_MON_STATUS_USIG_TB_SPATIAL_REUSE_1_KNOWN 0x00000010
#define QDF_MON_STATUS_USIG_TB_SPATIAL_REUSE_2_KNOWN 0x00000020
#define QDF_MON_STATUS_USIG_TB_DISREGARD1_KNOWN 0x00000040
#define QDF_MON_STATUS_USIG_CRC_KNOWN 0x00000100
#define QDF_MON_STATUS_USIG_TAIL_KNOWN 0x00000200
/* EHT known Mask */
#define QDF_MON_STATUS_EHT_CONTENT_CH_INDEX_KNOWN 0x00000001
#define QDF_MON_STATUS_EHT_SPATIAL_REUSE_KNOWN 0x00000002
#define QDF_MON_STATUS_EHT_GUARD_INTERVAL_KNOWN 0x00000004
#define QDF_MON_STATUS_EHT_LTF_KNOWN 0x00000008
#define QDF_MON_STATUS_EHT_EHT_LTF_KNOWN 0x00000010
#define QDF_MON_STATUS_EHT_LDPC_EXTRA_SYMBOL_SEG_KNOWN 0x00000020
#define QDF_MON_STATUS_EHT_PRE_FEC_PADDING_FACTOR_KNOWN 0x00000040
#define QDF_MON_STATUS_EHT_PE_DISAMBIGUITY_KNOWN 0x00000080
#define QDF_MON_STATUS_EHT_DISREARD_KNOWN 0x00000100
#define QDF_MON_STATUS_EHT_CRC1_KNOWN 0x00002000
#define QDF_MON_STATUS_EHT_TAIL1_KNOWN 0x00004000
#define QDF_MON_STATUS_EHT_CRC2_KNOWN 0x00008000
#define QDF_MON_STATUS_EHT_TAIL2_KNOWN 0x00010000
#define QDF_MON_STATUS_EHT_RU_MRU_SIZE_KNOWN 0x00400000
#define QDF_MON_STATUS_EHT_RU_MRU_INDEX_KNOWN 0x00800000
#define QDF_MON_STATUS_EHT_TB_RU_ALLOCATION_KNOWN 0x01000000
#define QDF_MON_STATUS_EHT_NUM_NON_OFDMA_USERS_KNOWN 0x00080000
#define QDF_MON_STATUS_EHT_USER_ENC_BLOCK_CRC_KNOWN 0x00100000
#define QDF_MON_STATUS_EHT_USER_ENC_BLOCK_TAIL_KNOWN 0x00200000
#define QDF_MON_STATUS_EHT_NDP_DISREGARD_KNOWN 0x00000200
#define QDF_MON_STATUS_EHT_NDP_NSS_KNOWN 0x00020000
#define QDF_MON_STATUS_EHT_NDP_BEAMFORMED_KNOWN 0x00040000
#define QDF_MON_STATUS_EHT_NUM_KNOWN_RU_ALLOCATIONS_SHIFT 10
/* EHT data0 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_CONTENT_CH_INDEX_SHIFT 0
#define QDF_MON_STATUS_EHT_SPATIAL_REUSE_SHIFT 3
#define QDF_MON_STATUS_EHT_GI_SHIFT 7
#define QDF_MON_STATUS_EHT_LTF_SHIFT 9
#define QDF_MON_STATUS_EHT_EHT_LTF_SHIFT 11
#define QDF_MON_STATUS_EHT_LDPC_EXTRA_SYMBOL_SEG_SHIFT 14
#define QDF_MON_STATUS_EHT_PRE_FEC_PADDING_FACTOR_SHIFT 15
#define QDF_MON_STATUS_EHT_PE_DISAMBIGUITY_SHIFT 17
#define QDF_MON_STATUS_EHT_NDP_DISREGARD_SHIFT 18
#define QDF_MON_STATUS_EHT_DISREGARD_SHIFT 18
#define QDF_MON_STATUS_EHT_CRC1_SHIFT 22
#define QDF_MON_STATUS_EHT_TAIL1_SHIFT 26
/* EHT data1 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_RU_MRU_SIZE_SHIFT 0
#define QDF_MON_STATUS_EHT_RU_MRU_INDEX_SHIFT 5
#define QDF_MON_STATUS_EHT_RU_ALLOCATION1_1_SHIFT 13
#define QDF_MON_STATUS_EHT_RU_ALLOCATION1_2_SHIFT 22
/* EHT data2 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_1_SHIFT 0
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_2_SHIFT 9
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_3_SHIFT 18
/* EHT data3 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_4_SHIFT 0
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_5_SHIFT 9
#define QDF_MON_STATUS_EHT_RU_ALLOCATION2_6_SHIFT 18
/* EHT data4 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_CRC2_SHIFT 0
#define QDF_MON_STATUS_EHT_TAIL2_SHIFT 4
#define QDF_MON_STATUS_EHT_NDP_NSS_SHIFT 12
#define QDF_MON_STATUS_EHT_NDP_BEAMFORMED_SHIFT 16
#define QDF_MON_STATUS_EHT_NUM_NON_OFDMA_USERS_SHIFT 17
#define QDF_MON_STATUS_EHT_USER_ENC_BLOCK_CRC_SHIFT 20
#define QDF_MON_STATUS_EHT_USER_ENC_BLOCK_TAIL_SHIFT 24
/* EHT data5 Mask/SHIFT */
#define QDF_MON_STATUS_EHT_TB_RU_PS160_SHIFT 0
#define QDF_MON_STATUS_EHT_TB_RU_PS80_SHIFT 1
#define QDF_MON_STATUS_EHT_TB_RU_B7_B1_SHIFT 2
/* EHT user info Mask/SHIFT */
#define QDF_MON_STATUS_EHT_USER_STA_ID_KNOWN 0x00000001
#define QDF_MON_STATUS_EHT_USER_MCS_KNOWN 0x00000002
#define QDF_MON_STATUS_EHT_USER_CODING_KNOWN 0x00000004
#define QDF_MON_STATUS_EHT_USER_RESERVED_KNOWN 0x00000008
#define QDF_MON_STATUS_EHT_USER_NSS_KNOWN 0x00000010
#define QDF_MON_STATUS_EHT_USER_BEAMFORMING_KNOWN 0x00000020
#define QDF_MON_STATUS_EHT_USER_SPATIAL_CONFIG_KNOWN 0x00000040
#define QDF_MON_STATUS_EHT_USER_DATA_FOR_THIS_USER_SHIFT 7
#define QDF_MON_STATUS_EHT_USER_STA_ID_SHIFT 8
#define QDF_MON_STATUS_EHT_USER_CODING_SHIFT 19
#define QDF_MON_STATUS_EHT_USER_MCS_SHIFT 20
#define QDF_MON_STATUS_EHT_USER_NSS_SHIFT 24
#define QDF_MON_STATUS_EHT_USER_RESERVED_SHIFT 28
#define QDF_MON_STATUS_EHT_USER_BEAMFORMING_SHIFT 29
#define QDF_MON_STATUS_EHT_USER_SPATIAL_CONFIG_SHIFT 24
/**
* enum qdf_proto_type - protocol type
* @QDF_PROTO_TYPE_DHCP - DHCP