diff --git a/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c b/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c index 67b33412f5..627ca20b48 100644 --- a/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c +++ b/dp/wifi3.0/monitor/1.0/dp_mon_1.0.c @@ -58,6 +58,8 @@ void dp_mon_populate_ppdu_info_1_0(struct hal_rx_ppdu_info *hal_ppdu_info, struct cdp_rx_indication_ppdu *ppdu) { + ppdu->u.preamble = hal_ppdu_info->rx_status.preamble_type; + ppdu->u.bw = hal_ppdu_info->rx_status.bw; ppdu->punc_bw = 0; } diff --git a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c b/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c index f53ecb2a31..857ac193fb 100644 --- a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c +++ b/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c @@ -238,41 +238,50 @@ void dp_rx_mon_stats_update_2_0(struct dp_mon_peer *mon_peer, struct cdp_rx_stats_ppdu_user *ppdu_user) { uint8_t mcs, preamble, ppdu_type; + uint32_t num_msdu; preamble = ppdu->u.preamble; ppdu_type = ppdu->u.ppdu_type; + num_msdu = ppdu_user->num_msdu; + if (ppdu_type == HAL_RX_TYPE_SU) mcs = ppdu->u.mcs; else mcs = ppdu_user->mcs; DP_STATS_INC(mon_peer, rx.mpdu_retry_cnt, ppdu_user->mpdu_retries); + DP_STATS_INCC(mon_peer, + rx.pkt_type[preamble].mcs_count[MAX_MCS - 1], num_msdu, + ((mcs >= MAX_MCS_11BE) && (preamble == DOT11_BE))); + DP_STATS_INCC(mon_peer, + rx.pkt_type[preamble].mcs_count[mcs], num_msdu, + ((mcs < MAX_MCS_11BE) && (preamble == DOT11_BE))); DP_STATS_INCC(mon_peer, rx.su_be_ppdu_cnt.mcs_count[MAX_MCS - 1], 1, - ((mcs >= (MAX_MCS - 1)) && (preamble == DOT11_BE) && + ((mcs >= (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_SU))); DP_STATS_INCC(mon_peer, rx.su_be_ppdu_cnt.mcs_count[mcs], 1, - ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_BE) && + ((mcs < (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_SU))); DP_STATS_INCC(mon_peer, rx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].mcs_count[MAX_MCS - 1], - 1, ((mcs >= (MAX_MCS - 1)) && + 1, ((mcs >= (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_MU_OFDMA))); DP_STATS_INCC(mon_peer, rx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].mcs_count[mcs], - 1, ((mcs < (MAX_MCS - 1)) && + 1, ((mcs < (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_MU_OFDMA))); DP_STATS_INCC(mon_peer, rx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].mcs_count[MAX_MCS - 1], - 1, ((mcs >= (MAX_MCS - 1)) && + 1, ((mcs >= (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_MU_MIMO))); DP_STATS_INCC(mon_peer, rx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].mcs_count[mcs], - 1, ((mcs < (MAX_MCS - 1)) && + 1, ((mcs < (MAX_MCS_11BE)) && (preamble == DOT11_BE) && (ppdu_type == HAL_RX_TYPE_MU_MIMO))); } @@ -281,6 +290,17 @@ void dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info, struct cdp_rx_indication_ppdu *ppdu) { + /* Align bw value as per host data structures */ + if (hal_ppdu_info->rx_status.bw == HAL_FULL_RX_BW_320) + ppdu->u.bw = CMN_BW_320MHZ; + else + ppdu->u.bw = hal_ppdu_info->rx_status.bw; + /* Align preamble value as per host data structures */ + if (hal_ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11BE) + ppdu->u.preamble = DOT11_BE; + else + ppdu->u.preamble = hal_ppdu_info->rx_status.preamble_type; + ppdu->punc_bw = hal_ppdu_info->rx_status.punctured_bw; } #else diff --git a/dp/wifi3.0/monitor/dp_rx_mon.c b/dp/wifi3.0/monitor/dp_rx_mon.c index 756ee8c731..62f9a3180c 100644 --- a/dp/wifi3.0/monitor/dp_rx_mon.c +++ b/dp/wifi3.0/monitor/dp_rx_mon.c @@ -430,7 +430,7 @@ dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev, rx_stats_peruser->other_msdu_count; rx_stats_peruser->preamble_type = - rx_user_status->preamble_type; + cdp_rx_ppdu->u.preamble; rx_stats_peruser->mpdu_cnt_fcs_ok = rx_user_status->mpdu_cnt_fcs_ok; rx_stats_peruser->mpdu_cnt_fcs_err = @@ -532,7 +532,6 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->tcp_msdu_count = ppdu_info->rx_status.tcp_msdu_count; cdp_rx_ppdu->udp_msdu_count = ppdu_info->rx_status.udp_msdu_count; cdp_rx_ppdu->other_msdu_count = ppdu_info->rx_status.other_msdu_count; - cdp_rx_ppdu->u.preamble = ppdu_info->rx_status.preamble_type; /* num mpdu is consolidated and added together in num user loop */ cdp_rx_ppdu->num_mpdu = ppdu_info->com_info.mpdu_cnt_fcs_ok; /* num msdu is consolidated and added together in num user loop */ @@ -568,7 +567,6 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id; cdp_rx_ppdu->length = ppdu_info->rx_status.ppdu_len; cdp_rx_ppdu->duration = ppdu_info->rx_status.duration; - cdp_rx_ppdu->u.bw = ppdu_info->rx_status.bw; cdp_rx_ppdu->u.nss = ppdu_info->rx_status.nss; cdp_rx_ppdu->u.mcs = ppdu_info->rx_status.mcs; if ((ppdu_info->rx_status.sgi == VHT_SGI_NYSM) && @@ -777,7 +775,7 @@ static void dp_rx_stats_update(struct dp_pdev *pdev, { struct dp_soc *soc = NULL; uint8_t mcs, preamble, ac = 0, nss, ppdu_type; - uint16_t num_msdu; + uint32_t num_msdu; uint8_t pkt_bw_offset; struct dp_peer *peer; struct dp_mon_peer *mon_peer; @@ -912,36 +910,36 @@ static void dp_rx_stats_update(struct dp_pdev *pdev, ((mcs < MAX_MCS_11AC) && (preamble == DOT11_AC))); DP_STATS_INCC(mon_peer, rx.pkt_type[preamble].mcs_count[MAX_MCS - 1], num_msdu, - ((mcs >= (MAX_MCS - 1)) && (preamble == DOT11_AX))); + ((mcs >= (MAX_MCS_11AX)) && (preamble == DOT11_AX))); DP_STATS_INCC(mon_peer, rx.pkt_type[preamble].mcs_count[mcs], num_msdu, - ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_AX))); + ((mcs < (MAX_MCS_11AX)) && (preamble == DOT11_AX))); DP_STATS_INCC(mon_peer, rx.su_ax_ppdu_cnt.mcs_count[MAX_MCS - 1], 1, - ((mcs >= (MAX_MCS - 1)) && (preamble == DOT11_AX) && + ((mcs >= (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_SU))); DP_STATS_INCC(mon_peer, rx.su_ax_ppdu_cnt.mcs_count[mcs], 1, - ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_AX) && + ((mcs < (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_SU))); DP_STATS_INCC(mon_peer, rx.rx_mu[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[MAX_MCS - 1], - 1, ((mcs >= (MAX_MCS - 1)) && + 1, ((mcs >= (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_MU_OFDMA))); DP_STATS_INCC(mon_peer, rx.rx_mu[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[mcs], - 1, ((mcs < (MAX_MCS - 1)) && + 1, ((mcs < (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_MU_OFDMA))); DP_STATS_INCC(mon_peer, rx.rx_mu[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[MAX_MCS - 1], - 1, ((mcs >= (MAX_MCS - 1)) && + 1, ((mcs >= (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_MU_MIMO))); DP_STATS_INCC(mon_peer, rx.rx_mu[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[mcs], - 1, ((mcs < (MAX_MCS - 1)) && + 1, ((mcs < (MAX_MCS_11AX)) && (preamble == DOT11_AX) && (ppdu_type == HAL_RX_TYPE_MU_MIMO))); diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 8171550f29..6f70f2d35e 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -85,6 +85,9 @@ #define HAL_RX_PKT_TYPE_11N 2 #define HAL_RX_PKT_TYPE_11AC 3 #define HAL_RX_PKT_TYPE_11AX 4 +#ifdef WLAN_FEATURE_11BE +#define HAL_RX_PKT_TYPE_11BE 6 +#endif #define HAL_RX_RECEPTION_TYPE_SU 0 #define HAL_RX_RECEPTION_TYPE_MU_MIMO 1 @@ -453,12 +456,22 @@ enum { HAL_SGI_3_2_US, }; +#ifdef WLAN_FEATURE_11BE +enum { + HAL_FULL_RX_BW_20, + HAL_FULL_RX_BW_40, + HAL_FULL_RX_BW_80, + HAL_FULL_RX_BW_160, + HAL_FULL_RX_BW_320, +}; +#else enum { HAL_FULL_RX_BW_20, HAL_FULL_RX_BW_40, HAL_FULL_RX_BW_80, HAL_FULL_RX_BW_160, }; +#endif enum { HAL_RX_TYPE_SU,