diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index 4ab560622a2d..b91a61909f08 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -1056,6 +1056,7 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo, } case WIFIPHYRX_RSSI_LEGACY_E: { + uint8_t reception_type; uint8_t *rssi_info_tlv = (uint8_t *)rx_tlv + HAL_RX_OFFSET(UNIFIED_PHYRX_RSSI_LEGACY_3, RECEIVE_RSSI_INFO_PRE_RSSI_INFO_DETAILS); @@ -1065,6 +1066,22 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo, ppdu_info->rx_status.bw = hal->ops->hal_rx_get_tlv(rx_tlv); ppdu_info->rx_status.he_re = 0; + reception_type = HAL_RX_GET(rx_tlv, + PHYRX_RSSI_LEGACY_0, + RECEPTION_TYPE); + switch (reception_type) { + case QDF_RECEPTION_TYPE_ULOFMDA: + ppdu_info->rx_status.ulofdma_flag = 1; + ppdu_info->rx_status.he_data1 = + QDF_MON_STATUS_HE_TRIG_FORMAT_TYPE; + break; + case QDF_RECEPTION_TYPE_ULMIMO: + ppdu_info->rx_status.he_data1 = + QDF_MON_STATUS_HE_MU_FORMAT_TYPE; + break; + default: + break; + } value = HAL_RX_GET(rssi_info_tlv, RECEIVE_RSSI_INFO_0, RSSI_PRI20_CHAIN0); QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index d0506183c992..f8b953ba2b57 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -200,6 +200,7 @@ * @rs_flags: Flags to indicate AMPDU or AMSDU aggregation * @cck_flag: Flag to indicate CCK modulation * @ofdm_flag: Flag to indicate OFDM modulation + * @ulofdma_flag: Flag to indicate UL OFDMA PPDU * @he_per_user_1: HE per user info1 * @he_per_user_2: HE per user info2 * @he_per_user_position: HE per user position info @@ -275,6 +276,7 @@ struct mon_rx_status { uint8_t rs_flags; uint8_t cck_flag; uint8_t ofdm_flag; + uint8_t ulofdma_flag; /* New HE radiotap fields */ uint16_t he_per_user_1; uint16_t he_per_user_2; @@ -512,6 +514,20 @@ enum qdf_proto_type { QDF_PROTO_TYPE_MAX }; +/** + * qdf_reception_type - reception type used by lithium phy TLV + * @QDF_RECEPTION_TYPE_ULOFMDA - UL OFDMA + * @QDF_RECEPTION_TYPE_ULMIMO - UL MIMO + * @QQDF_RECEPTION_TYPE_FRAMELESS - Frame less + * @QDF_RECEPTION_TYPE_OTHER - All the other types + */ +enum qdf_reception_type { + QDF_RECEPTION_TYPE_ULOFMDA, + QDF_RECEPTION_TYPE_ULMIMO, + QDF_RECEPTION_TYPE_OTHER, + QDF_RECEPTION_TYPE_FRAMELESS +}; + /** * cb_ftype - Frame type information in skb cb * @CB_FTYPE_INVALID - Invalid