qcacmn: Add Indication for MSDU or MPDU level aggregation

populate flags for MPDU or MSDU level aggregation in
mon_rx_status structure.

Change-Id: I5d8d026a42ffef9e95f579178b4f8cdc581699ec
This commit is contained in:
Keyur Parekh 2018-01-18 14:30:15 -08:00 • committed by snandini
commit 4d36b32991
2 changed files with 33 additions and 0 deletions

View file

@ -118,6 +118,24 @@
#define HAL_TID_INVALID 31
#define HAL_AST_IDX_INVALID 0xFFFF
#ifdef GET_MSDU_AGGREGATION
#define HAL_RX_GET_MSDU_AGGREGATION(rx_desc, rs)\
{\
struct rx_msdu_end *rx_msdu_end;\
bool first_msdu, last_msdu; \
rx_msdu_end = &rx_desc->msdu_end_tlv.rx_msdu_end;\
first_msdu = HAL_RX_GET(rx_msdu_end, RX_MSDU_END_5, FIRST_MSDU);\
last_msdu = HAL_RX_GET(rx_msdu_end, RX_MSDU_END_5, LAST_MSDU);\
if (first_msdu && last_msdu)\
rs->rs_flags &= (~IEEE80211_AMSDU_FLAG);\
else\
rs->rs_flags |= (IEEE80211_AMSDU_FLAG); \
} \
#else
#define HAL_RX_GET_MSDU_AGGREGATION(rx_desc, rs)
#endif
enum {
HAL_HW_RX_DECAP_FORMAT_RAW = 0,
HAL_HW_RX_DECAP_FORMAT_NWIFI,
@ -391,6 +409,7 @@ void hal_rx_mon_hw_desc_get_mpdu_status(void *hw_desc_addr,
};
rx_msdu_start = &rx_desc->msdu_start_tlv.rx_msdu_start;
HAL_RX_GET_MSDU_AGGREGATION(rx_desc, rs);
rs->ant_signal_db = HAL_RX_GET(rx_msdu_start,
RX_MSDU_START_5, USER_RSSI);
@ -572,6 +591,12 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
ppdu_info->com_info.mpdu_cnt_fcs_err =
HAL_RX_GET(rx_tlv, RX_PPDU_END_USER_STATS_2,
MPDU_CNT_FCS_ERR);
if ((ppdu_info->com_info.mpdu_cnt_fcs_ok |
ppdu_info->com_info.mpdu_cnt_fcs_err) > 1)
ppdu_info->rx_status.rs_flags |= IEEE80211_AMPDU_FLAG;
else
ppdu_info->rx_status.rs_flags &=
(~IEEE80211_AMPDU_FLAG);
break;
}

View file

@ -119,6 +119,12 @@
#define TSO_DEBUG(fmt, args ...)
#endif
#define IEEE80211_AMPDU_FLAG 0x01
#ifdef GET_MSDU_AGGREGATION
#define IEEE80211_AMSDU_FLAG 0x02
#endif
/**
* struct mon_rx_status - This will have monitor mode rx_status extracted from
* htt_rx_desc used later to update radiotap information.
@ -161,6 +167,7 @@
* @ast_index: AST table hash index
* @tid: QoS traffic tid number
* @rs_fcs_err: FCS error flag
* @rs_flags: Flags to indicate AMPDU or AMSDU aggregation
* @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
@ -224,6 +231,7 @@ struct mon_rx_status {
uint32_t ast_index;
uint32_t tid;
uint8_t rs_fcs_err;
uint8_t rs_flags;
/* New HE radiotap fields */
uint16_t he_per_user_1;
uint16_t he_per_user_2;