qcacmn: New TLV sequence supporting for UL OFDMA in monitor mode
According to the ucode and mac team, the new TB-PPDU (UL OFDMA Dat frame) from any other users using the TLV's fields below: * PHYRX_RSSI_LEGACY (has a reception type field that is set to UL-MU) * PHYRX_RSSI_HT * PHYRX_COMMON_USER_INFO (has a reception type field that is set to UL-MU) * PHYRX_USER_INFO (has more detailed modulation info) * PHYRX_USER_INFO (Could be more than one) ... * PHYRX_DATA * PHYRX_DATA (Could be more than one) CRs-Fixed: 2329959 Change-Id: Ib5fa1734a5525d2b2d1db8756166f259be30b9c0
This commit is contained in:
@@ -1056,6 +1056,7 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo,
|
|||||||
}
|
}
|
||||||
case WIFIPHYRX_RSSI_LEGACY_E:
|
case WIFIPHYRX_RSSI_LEGACY_E:
|
||||||
{
|
{
|
||||||
|
uint8_t reception_type;
|
||||||
uint8_t *rssi_info_tlv = (uint8_t *)rx_tlv +
|
uint8_t *rssi_info_tlv = (uint8_t *)rx_tlv +
|
||||||
HAL_RX_OFFSET(UNIFIED_PHYRX_RSSI_LEGACY_3,
|
HAL_RX_OFFSET(UNIFIED_PHYRX_RSSI_LEGACY_3,
|
||||||
RECEIVE_RSSI_INFO_PRE_RSSI_INFO_DETAILS);
|
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.bw = hal->ops->hal_rx_get_tlv(rx_tlv);
|
||||||
ppdu_info->rx_status.he_re = 0;
|
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,
|
value = HAL_RX_GET(rssi_info_tlv,
|
||||||
RECEIVE_RSSI_INFO_0, RSSI_PRI20_CHAIN0);
|
RECEIVE_RSSI_INFO_0, RSSI_PRI20_CHAIN0);
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||||
|
@@ -200,6 +200,7 @@
|
|||||||
* @rs_flags: Flags to indicate AMPDU or AMSDU aggregation
|
* @rs_flags: Flags to indicate AMPDU or AMSDU aggregation
|
||||||
* @cck_flag: Flag to indicate CCK modulation
|
* @cck_flag: Flag to indicate CCK modulation
|
||||||
* @ofdm_flag: Flag to indicate OFDM 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_1: HE per user info1
|
||||||
* @he_per_user_2: HE per user info2
|
* @he_per_user_2: HE per user info2
|
||||||
* @he_per_user_position: HE per user position info
|
* @he_per_user_position: HE per user position info
|
||||||
@@ -275,6 +276,7 @@ struct mon_rx_status {
|
|||||||
uint8_t rs_flags;
|
uint8_t rs_flags;
|
||||||
uint8_t cck_flag;
|
uint8_t cck_flag;
|
||||||
uint8_t ofdm_flag;
|
uint8_t ofdm_flag;
|
||||||
|
uint8_t ulofdma_flag;
|
||||||
/* New HE radiotap fields */
|
/* New HE radiotap fields */
|
||||||
uint16_t he_per_user_1;
|
uint16_t he_per_user_1;
|
||||||
uint16_t he_per_user_2;
|
uint16_t he_per_user_2;
|
||||||
@@ -512,6 +514,20 @@ enum qdf_proto_type {
|
|||||||
QDF_PROTO_TYPE_MAX
|
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 - Frame type information in skb cb
|
||||||
* @CB_FTYPE_INVALID - Invalid
|
* @CB_FTYPE_INVALID - Invalid
|
||||||
|
Reference in New Issue
Block a user