diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 7d119bea1877..16efc59028d4 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -752,10 +752,10 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) QDF_MON_STATUS_HE_TRIG_FORMAT_TYPE; } else { ppdu_info->rx_status.he_data1 = - QDF_MON_STATUS_HE_SU_OR_EXT_SU_FORMAT_TYPE; + QDF_MON_STATUS_HE_SU_FORMAT_TYPE; } - /*data1*/ + /* data1 */ ppdu_info->rx_status.he_data1 |= QDF_MON_STATUS_HE_BSS_COLOR_KNOWN | QDF_MON_STATUS_HE_BEAM_CHANGE_KNOWN | @@ -768,7 +768,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) QDF_MON_STATUS_HE_DATA_BW_RU_KNOWN | QDF_MON_STATUS_HE_DOPPLER_KNOWN; - /*data2*/ + /* data2 */ ppdu_info->rx_status.he_data2 = QDF_MON_STATUS_HE_GI_KNOWN; ppdu_info->rx_status.he_data2 |= @@ -779,7 +779,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) QDF_MON_STATUS_PRE_FEC_PADDING_KNOWN | QDF_MON_STATUS_MIDABLE_PERIODICITY_KNOWN; - /*data3*/ + /* data3 */ value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, BSS_COLOR_ID); ppdu_info->rx_status.he_data3 = value; @@ -791,11 +791,13 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) HE_SIG_A_SU_INFO_0, DL_UL_FLAG); value = value << QDF_MON_STATUS_DL_UL_SHIFT; ppdu_info->rx_status.he_data3 |= value; + value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, TRANSMIT_MCS); ppdu_info->rx_status.mcs = value; value = value << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT; ppdu_info->rx_status.he_data3 |= value; + value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, DCM); he_dcm = value; @@ -816,12 +818,12 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) value = value << QDF_MON_STATUS_STBC_SHIFT; ppdu_info->rx_status.he_data3 |= value; - /*data4*/ + /* data4 */ value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, SPATIAL_REUSE); ppdu_info->rx_status.he_data4 = value; - /*data5*/ + /* data5 */ value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, TRANSMIT_BW); ppdu_info->rx_status.he_data5 = value; @@ -869,7 +871,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) value = value << QDF_MON_STATUS_PE_DISAMBIGUITY_SHIFT; ppdu_info->rx_status.he_data5 |= value; - /*data6*/ + /* data6 */ value = HAL_RX_GET(he_sig_a_su_info, HE_SIG_A_SU_INFO_0, NSTS); value++; ppdu_info->rx_status.nss = value; @@ -891,23 +893,114 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) HAL_RX_OFFSET(PHYRX_HE_SIG_A_MU_DL_0, HE_SIG_A_MU_DL_INFO_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS); - ppdu_info->rx_status.he_sig_A1 = - *((uint32_t *)((uint8_t *)rx_tlv + - HAL_RX_OFFSET(PHYRX_HE_SIG_A_MU_DL_0, - HE_SIG_A_MU_DL_INFO_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS))); - ppdu_info->rx_status.he_sig_A1 |= - QDF_MON_STATUS_HE_SIG_A1_HE_FORMAT_MU; - ppdu_info->rx_status.he_sig_A1_known = - QDF_MON_STATUS_HE_SIG_A1_MU_KNOWN_ALL; - - ppdu_info->rx_status.he_sig_A2 = - *((uint32_t *)((uint8_t *)rx_tlv + - HAL_RX_OFFSET(PHYRX_HE_SIG_A_MU_DL_1, - HE_SIG_A_MU_DL_INFO_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS))); - ppdu_info->rx_status.he_sig_A2_known = - QDF_MON_STATUS_HE_SIG_A2_MU_KNOWN_ALL; - ppdu_info->rx_status.he_mu_flags = 1; + + /* HE Flags */ + /*data1*/ + ppdu_info->rx_status.he_data1 = + QDF_MON_STATUS_HE_MU_FORMAT_TYPE; + ppdu_info->rx_status.he_data1 |= + QDF_MON_STATUS_HE_BSS_COLOR_KNOWN | + QDF_MON_STATUS_HE_DL_UL_KNOWN | + QDF_MON_STATUS_HE_LDPC_EXTRA_SYMBOL_KNOWN | + QDF_MON_STATUS_HE_STBC_KNOWN | + QDF_MON_STATUS_HE_DATA_BW_RU_KNOWN | + QDF_MON_STATUS_HE_DOPPLER_KNOWN; + + /* data2 */ + ppdu_info->rx_status.he_data2 = + QDF_MON_STATUS_HE_GI_KNOWN; + ppdu_info->rx_status.he_data2 |= + QDF_MON_STATUS_LTF_SYMBOLS_KNOWN | + QDF_MON_STATUS_PRE_FEC_PADDING_KNOWN | + QDF_MON_STATUS_PE_DISAMBIGUITY_KNOWN | + QDF_MON_STATUS_TXOP_KNOWN | + QDF_MON_STATUS_MIDABLE_PERIODICITY_KNOWN; + + /*data3*/ + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_0, BSS_COLOR_ID); + ppdu_info->rx_status.he_data3 = value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_0, DL_UL_FLAG); + value = value << QDF_MON_STATUS_DL_UL_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_1, + LDPC_EXTRA_SYMBOL); + value = value << QDF_MON_STATUS_LDPC_EXTRA_SYMBOL_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_1, STBC); + he_stbc = value; + value = value << QDF_MON_STATUS_STBC_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + /*data4*/ + value = HAL_RX_GET(he_sig_a_mu_dl_info, HE_SIG_A_MU_DL_INFO_0, + SPATIAL_REUSE); + ppdu_info->rx_status.he_data4 = value; + + /*data5*/ + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_0, TRANSMIT_BW); + ppdu_info->rx_status.he_data5 = value; + ppdu_info->rx_status.bw = value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, + HE_SIG_A_MU_DL_INFO_0, CP_LTF_SIZE); + switch (value) { + case 0: + he_gi = HE_GI_0_8; + he_ltf = HE_LTF_4_X; + break; + case 1: + he_gi = HE_GI_0_8; + he_ltf = HE_LTF_2_X; + break; + case 2: + he_gi = HE_GI_1_6; + he_ltf = HE_LTF_2_X; + break; + case 3: + he_gi = HE_GI_3_2; + he_ltf = HE_LTF_4_X; + break; + } + ppdu_info->rx_status.sgi = he_gi; + value = he_gi << QDF_MON_STATUS_GI_SHIFT; + ppdu_info->rx_status.he_data5 |= value; + + value = he_ltf << QDF_MON_STATUS_HE_LTF_SHIFT; + ppdu_info->rx_status.he_data5 |= value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, HE_SIG_A_MU_DL_INFO_1, + PACKET_EXTENSION_A_FACTOR); + value = value << QDF_MON_STATUS_PRE_FEC_PAD_SHIFT; + ppdu_info->rx_status.he_data5 |= value; + + + value = HAL_RX_GET(he_sig_a_mu_dl_info, HE_SIG_A_MU_DL_INFO_1, + PACKET_EXTENSION_PE_DISAMBIGUITY); + value = value << QDF_MON_STATUS_PE_DISAMBIGUITY_SHIFT; + ppdu_info->rx_status.he_data5 |= value; + + /*data6*/ + value = HAL_RX_GET(he_sig_a_mu_dl_info, HE_SIG_A_MU_DL_INFO_0, + DOPPLER_INDICATION); + value = value << QDF_MON_STATUS_DOPPLER_SHIFT; + ppdu_info->rx_status.he_data6 |= value; + + value = HAL_RX_GET(he_sig_a_mu_dl_info, HE_SIG_A_MU_DL_INFO_1, + TXOP_DURATION); + value = value << QDF_MON_STATUS_TXOP_SHIFT; + ppdu_info->rx_status.he_data6 |= value; + + /* HE-MU Flags */ + /* HE-MU-flags1 */ ppdu_info->rx_status.he_flags1 = QDF_MON_STATUS_SIG_B_MCS_KNOWN | QDF_MON_STATUS_SIG_B_DCM_KNOWN | @@ -923,6 +1016,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) value = value << QDF_MON_STATUS_DCM_FLAG_1_SHIFT; ppdu_info->rx_status.he_flags1 |= value; + /* HE-MU-flags2 */ ppdu_info->rx_status.he_flags2 = QDF_MON_STATUS_BW_KNOWN; @@ -963,32 +1057,50 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) uint8_t *he_sig_b2_mu_info = (uint8_t *)rx_tlv + HAL_RX_OFFSET(PHYRX_HE_SIG_B2_MU_0, HE_SIG_B2_MU_INFO_PHYRX_HE_SIG_B2_MU_INFO_DETAILS); + /* + * Not all "HE" fields can be updated from + * WIFIPHYRX_HE_SIG_A_MU_DL_E TLV. Use WIFIPHYRX_HE_SIG_B2_MU_E + * to populate rest of the "HE" fields for MU scenarios. + */ - ppdu_info->rx_status.he_mu_other_flags = 1; + /* HE-data1 */ + ppdu_info->rx_status.he_data1 |= + QDF_MON_STATUS_HE_MCS_KNOWN | + QDF_MON_STATUS_HE_CODING_KNOWN; - ppdu_info->rx_status.he_per_user_known = - QDF_MON_STATUS_STA_ID_PER_USER_KNOWN | - QDF_MON_STATUS_STA_CODING_KNOWN | - QDF_MON_STATUS_STA_SPATIAL_CONFIG_KNOWN | - QDF_MON_STATUS_STA_MCS_KNOWN; + /* HE-data2 */ + /* HE-data3 */ + value = HAL_RX_GET(he_sig_b2_mu_info, + HE_SIG_B2_MU_INFO_0, STA_MCS); + ppdu_info->rx_status.mcs = value; + value = value << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + + value = HAL_RX_GET(he_sig_b2_mu_info, + HE_SIG_B2_MU_INFO_0, STA_CODING); + value = value << QDF_MON_STATUS_CODING_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + /* HE-data4 */ value = HAL_RX_GET(he_sig_b2_mu_info, HE_SIG_B2_MU_INFO_0, STA_ID); - ppdu_info->rx_status.he_per_user_1 = value; - value = HAL_RX_GET(he_sig_b2_mu_info, - HE_SIG_B2_MU_INFO_0, STA_SPATIAL_CONFIG); - value = value << QDF_MON_STATUS_STA_SPATIAL_SHIFT; - ppdu_info->rx_status.he_per_user_1 |= value; + value = value << QDF_MON_STATUS_STA_ID_SHIFT; + ppdu_info->rx_status.he_data4 |= value; + /* HE-data5 */ + + /* HE-data6 */ value = HAL_RX_GET(he_sig_b2_mu_info, - HE_SIG_B2_OFDMA_INFO_0, STA_MCS); - ppdu_info->rx_status.he_per_user_2 = value; - value = HAL_RX_GET(he_sig_b2_mu_info, - HE_SIG_B2_OFDMA_INFO_0, STA_CODING); - value = value << QDF_MON_STATUS_STA_DCM_SHIFT; - ppdu_info->rx_status.he_per_user_2 |= value; + HE_SIG_B2_MU_INFO_0, NSTS); + /* value n indicates n+1 spatial streams */ + value++; + ppdu_info->rx_status.nss = value; + ppdu_info->rx_status.he_data6 |= value; break; + } case WIFIPHYRX_HE_SIG_B2_OFDMA_E: { @@ -996,44 +1108,61 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info) (uint8_t *)rx_tlv + HAL_RX_OFFSET(PHYRX_HE_SIG_B2_OFDMA_0, HE_SIG_B2_OFDMA_INFO_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS); - ppdu_info->rx_status.he_sig_b_user = - *((uint32_t *)((uint8_t *)rx_tlv + - HAL_RX_OFFSET(PHYRX_HE_SIG_B2_OFDMA_0, - HE_SIG_B2_OFDMA_INFO_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS))); - ppdu_info->rx_status.he_sig_b_user_known = - QDF_MON_STATUS_HE_SIG_B_USER_KNOWN_SIG_B_ALL; - ppdu_info->rx_status.he_per_user_known = - QDF_MON_STATUS_STA_ID_PER_USER_KNOWN | - QDF_MON_STATUS_STA_NSTS_KNOWN | - QDF_MON_STATUS_STA_TX_BF_KNOWN | - QDF_MON_STATUS_STA_MCS_KNOWN | - QDF_MON_STATUS_STA_DCM_KNOWN | - QDF_MON_STATUS_STA_CODING_KNOWN; + /* + * Not all "HE" fields can be updated from + * WIFIPHYRX_HE_SIG_A_MU_DL_E TLV. Use WIFIPHYRX_HE_SIG_B2_MU_E + * to populate rest of "HE" fields for MU OFDMA scenarios. + */ - value = HAL_RX_GET(he_sig_b2_ofdma_info, - HE_SIG_B2_OFDMA_INFO_0, STA_ID); - ppdu_info->rx_status.he_per_user_1 = value; - value = HAL_RX_GET(he_sig_b2_ofdma_info, - HE_SIG_B2_OFDMA_INFO_0, NSTS); - value = value << QDF_MON_STATUS_STA_SPATIAL_SHIFT; - ppdu_info->rx_status.he_per_user_1 |= value; - value = HAL_RX_GET(he_sig_b2_ofdma_info, - HE_SIG_B2_OFDMA_INFO_0, TXBF); - value = value << QDF_MON_STATUS_TXBF_SHIFT; - ppdu_info->rx_status.he_per_user_1 |= value; + /* HE-data1 */ + ppdu_info->rx_status.he_data1 |= + QDF_MON_STATUS_HE_MCS_KNOWN | + QDF_MON_STATUS_HE_DCM_KNOWN | + QDF_MON_STATUS_HE_CODING_KNOWN; + /* HE-data2 */ + ppdu_info->rx_status.he_data2 |= + QDF_MON_STATUS_TXBF_KNOWN; + + /* HE-data3 */ value = HAL_RX_GET(he_sig_b2_ofdma_info, HE_SIG_B2_OFDMA_INFO_0, STA_MCS); - ppdu_info->rx_status.he_per_user_2 = value; + ppdu_info->rx_status.mcs = value; + value = value << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + value = HAL_RX_GET(he_sig_b2_ofdma_info, HE_SIG_B2_OFDMA_INFO_0, STA_DCM); - value = value << QDF_MON_STATUS_STA_MCS_SHIFT; - ppdu_info->rx_status.he_per_user_2 |= value; + he_dcm = value; + value = value << QDF_MON_STATUS_DCM_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + value = HAL_RX_GET(he_sig_b2_ofdma_info, HE_SIG_B2_OFDMA_INFO_0, STA_CODING); - value = value << QDF_MON_STATUS_STA_DCM_SHIFT; - ppdu_info->rx_status.he_per_user_2 |= value; + value = value << QDF_MON_STATUS_CODING_SHIFT; + ppdu_info->rx_status.he_data3 |= value; + + /* HE-data4 */ + value = HAL_RX_GET(he_sig_b2_ofdma_info, + HE_SIG_B2_OFDMA_INFO_0, STA_ID); + value = value << QDF_MON_STATUS_STA_ID_SHIFT; + ppdu_info->rx_status.he_data4 |= value; + + /* HE-data5 */ + value = HAL_RX_GET(he_sig_b2_ofdma_info, + HE_SIG_B2_OFDMA_INFO_0, TXBF); + value = value << QDF_MON_STATUS_TXBF_SHIFT; + ppdu_info->rx_status.he_data5 |= value; + + /* HE-data6 */ + value = HAL_RX_GET(he_sig_b2_ofdma_info, + HE_SIG_B2_OFDMA_INFO_0, NSTS); + /* value n indicates n+1 spatial streams */ + value++; + ppdu_info->rx_status.nss = value; + ppdu_info->rx_status.he_data6 |= value; + break; } case WIFIPHYRX_RSSI_LEGACY_E: diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index ae99a17db99e..e4f7b2287c69 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -164,10 +164,6 @@ * struct mon_rx_status - This will have monitor mode rx_status extracted from * htt_rx_desc used later to update radiotap information. * @tsft: Time Synchronization Function timer - * @he_sig_A1: HE (11ax) sig A1 field - * @he_sig_A2: HE (11ax) sig A1 field - * @he_sig_b_user: HE (11ax) sig B user field - * @he_sig_b_user_known: HE (11ax) sig B user known field * @preamble_type: Preamble type in radio header * @chan_freq: Capture channel frequency * @chan_num: Capture channel number @@ -222,10 +218,6 @@ */ struct mon_rx_status { uint64_t tsft; - uint32_t he_sig_A1; - uint32_t he_sig_A2; - uint32_t he_sig_b_user; - uint32_t he_sig_b_user_known; uint32_t preamble_type; uint16_t chan_freq; uint16_t chan_num; @@ -292,10 +284,6 @@ struct mon_rx_status { }; /* Masks for HE SIG known fields in mon_rx_status structure */ -#define QDF_MON_STATUS_HE_SIG_A1_SU_KNOWN_ALL 0x000007ff -#define QDF_MON_STATUS_HE_SIG_A1_MU_KNOWN_ALL 0x000003ff -#define QDF_MON_STATUS_HE_SIG_A2_SU_KNOWN_ALL 0x00000ffd -#define QDF_MON_STATUS_HE_SIG_A2_MU_KNOWN_ALL 0x00000ffd #define QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU0 0x00000001 #define QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU1 0x00000002 #define QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU2 0x00000004 @@ -303,7 +291,6 @@ struct mon_rx_status { #define QDF_MON_STATUS_HE_SIG_B_USER_KNOWN_SIG_B_ALL 0x00fe0000 #define QDF_MON_STATUS_HE_SIG_A1_HE_FORMAT_SU 0x00000000 #define QDF_MON_STATUS_HE_SIG_A1_HE_FORMAT_EXT_SU 0x40000000 -#define QDF_MON_STATUS_HE_SIG_A1_HE_FORMAT_MU 0x80000000 #define QDF_MON_STATUS_HE_SIG_A1_HE_FORMAT_TRIG 0xc0000000 /* DHCP Related Mask */ @@ -366,8 +353,12 @@ struct mon_rx_status { #define QDF_NBUF_IPA_CHECK_MASK 0x80000000 /* HE Radiotap data1 Mask */ +#define QDF_MON_STATUS_HE_SU_FORMAT_TYPE 0x0000 +#define QDF_MON_STATUS_HE_EXT_SU_FORMAT_TYPE 0x0001 +#define QDF_MON_STATUS_HE_MU_FORMAT_TYPE 0x0002 #define QDF_MON_STATUS_HE_TRIG_FORMAT_TYPE 0x0003 -#define QDF_MON_STATUS_HE_SU_OR_EXT_SU_FORMAT_TYPE 0x0000 + + #define QDF_MON_STATUS_HE_BEAM_CHANGE_KNOWN 0x0008 #define QDF_MON_STATUS_HE_DL_UL_KNOWN 0x0010 #define QDF_MON_STATUS_HE_MCS_KNOWN 0x0020 @@ -397,6 +388,9 @@ struct mon_rx_status { #define QDF_MON_STATUS_LDPC_EXTRA_SYMBOL_SHIFT 14 #define QDF_MON_STATUS_STBC_SHIFT 15 +/* HE radiotap data4 shift values */ +#define QDF_MON_STATUS_STA_ID_SHIFT 4 + /* HE radiotap data5 */ #define QDF_MON_STATUS_GI_SHIFT 4 #define QDF_MON_STATUS_HE_LTF_SHIFT 8 diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index ada601ac10b7..89165cbb01c6 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -3815,34 +3815,24 @@ qdf_nbuf_update_radiotap_he_mu_flags(struct mon_rx_status *rx_status, * IEEE80211_RADIOTAP_HE_MU u16, u16, u8[4] * Enable all "known" he-mu radiotap flags for now */ - if (rx_status->he_sig_b_common_known & - QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU0) { - rtap_buf[rtap_len] = rx_status->he_RU[0]; - rtap_len += 1; - } - - if (rx_status->he_sig_b_common_known & - QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU1) { - rtap_buf[rtap_len] = rx_status->he_RU[1]; - rtap_len += 1; - } - if (rx_status->he_sig_b_common_known & - QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU2) { - rtap_buf[rtap_len] = rx_status->he_RU[2]; - rtap_len += 1; - } - if (rx_status->he_sig_b_common_known & - QDF_MON_STATUS_HE_SIG_B_COMMON_KNOWN_RU3) { - rtap_buf[rtap_len] = rx_status->he_RU[3]; - rtap_len += 1; - } - put_unaligned_le16(rx_status->he_flags1, &rtap_buf[rtap_len]); rtap_len += 2; put_unaligned_le16(rx_status->he_flags2, &rtap_buf[rtap_len]); rtap_len += 2; + rtap_buf[rtap_len] = rx_status->he_RU[0]; + rtap_len += 1; + + rtap_buf[rtap_len] = rx_status->he_RU[1]; + rtap_len += 1; + + rtap_buf[rtap_len] = rx_status->he_RU[2]; + rtap_len += 1; + + rtap_buf[rtap_len] = rx_status->he_RU[3]; + rtap_len += 1; + return rtap_len; } @@ -3876,25 +3866,6 @@ qdf_nbuf_update_radiotap_he_mu_other_flags(struct mon_rx_status *rx_status, rtap_buf[rtap_len] = rx_status->he_per_user_known; rtap_len += 1; - /* HE fields */ - put_unaligned_le16(rx_status->he_data1, &rtap_buf[rtap_len]); - rtap_len += 2; - - put_unaligned_le16(rx_status->he_data2, &rtap_buf[rtap_len]); - rtap_len += 2; - - put_unaligned_le16(rx_status->he_data3, &rtap_buf[rtap_len]); - rtap_len += 2; - - put_unaligned_le16(rx_status->he_data4, &rtap_buf[rtap_len]); - rtap_len += 2; - - put_unaligned_le16(rx_status->he_data5, &rtap_buf[rtap_len]); - rtap_len += 2; - - put_unaligned_le16(rx_status->he_data6, &rtap_buf[rtap_len]); - rtap_len += 2; - return rtap_len; }