qcacmn: Add EHT radiotap header fields
Add the EHT radiotap header definition and support to parse these fields. Change-Id: If988753b497cc2feb79f358afea2674effd8270c CRs-Fixed: 3092818
このコミットが含まれているのは:
@@ -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
|
||||
|
新しいイシューから参照
ユーザーをブロックする