diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 922543d574..9ca15af888 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -130,6 +130,7 @@ #define HE_LTF_4_X 3 #define HE_LTF_UNKNOWN 0 #define VHT_SIG_SU_NSS_MASK 0x7 +#define HT_SIG_SU_NSS_SHIFT 0x3 #define HAL_TID_INVALID 31 #define HAL_AST_IDX_INVALID 0xFFFF diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index 92d2b1cbe3..4ab560622a 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -431,11 +431,15 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo, 1 : 0; ppdu_info->rx_status.mcs = HAL_RX_GET(ht_sig_info, HT_SIG_INFO_0, MCS); + ppdu_info->rx_status.ht_mcs = ppdu_info->rx_status.mcs; ppdu_info->rx_status.bw = HAL_RX_GET(ht_sig_info, HT_SIG_INFO_0, CBW); ppdu_info->rx_status.sgi = HAL_RX_GET(ht_sig_info, HT_SIG_INFO_1, SHORT_GI); ppdu_info->rx_status.reception_type = HAL_RX_TYPE_SU; + ppdu_info->rx_status.nss = ((ppdu_info->rx_status.mcs) >> + HT_SIG_SU_NSS_SHIFT) + 1; + ppdu_info->rx_status.mcs &= ((1 << HT_SIG_SU_NSS_SHIFT) - 1); break; } diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index e70c22d423..d0506183c9 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -181,6 +181,7 @@ * @ant_signal_db: Rx packet RSSI * @nr_ant: Number of Antennas used for streaming * @mcs: MCS index of Rx frame + * @ht_mcs: MCS index for HT RX frames * @nss: Number of spatial streams * @bw: bandwidth of rx frame * @is_stbc: Is STBC enabled @@ -246,6 +247,7 @@ struct mon_rx_status { uint8_t ant_signal_db; uint8_t nr_ant; uint8_t mcs; + uint8_t ht_mcs; uint8_t nss; uint16_t tcp_msdu_count; uint16_t udp_msdu_count; diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index 0d3e96b355..965842d147 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -4141,7 +4141,7 @@ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status, rtap_buf[rtap_len] |= IEEE80211_RADIOTAP_MCS_BW_20; rtap_len += 1; - rtap_buf[rtap_len] = rx_status->mcs; + rtap_buf[rtap_len] = rx_status->ht_mcs; rtap_len += 1; if ((rtap_len - length) > RADIOTAP_HT_FLAGS_LEN) {