|
@@ -37,7 +37,7 @@
|
|
|
static inline void
|
|
|
dp_rx_populate_cfr_non_assoc_sta(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf);
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu);
|
|
|
|
|
|
#ifdef WLAN_RX_PKT_CAPTURE_ENH
|
|
|
#include "dp_rx_mon_feature.h"
|
|
@@ -152,19 +152,19 @@ dp_rx_inc_rusize_cnt(struct dp_pdev *pdev,
|
|
|
* dp_rx_populate_cdp_indication_ppdu_user() - Populate per user cdp indication
|
|
|
* @pdev: pdev ctx
|
|
|
* @ppdu_info: ppdu info structure from ppdu ring
|
|
|
- * @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
+ * @cdp_rx_ppdu: Rx PPDU indication structure
|
|
|
*
|
|
|
* Return: none
|
|
|
*/
|
|
|
static inline void
|
|
|
dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu
|
|
|
+ *cdp_rx_ppdu)
|
|
|
{
|
|
|
struct dp_peer *peer;
|
|
|
struct dp_soc *soc = pdev->soc;
|
|
|
struct dp_ast_entry *ast_entry;
|
|
|
- struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
uint32_t ast_index;
|
|
|
int i;
|
|
|
struct mon_rx_user_status *rx_user_status;
|
|
@@ -173,8 +173,6 @@ dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev,
|
|
|
bool is_data = false;
|
|
|
uint32_t num_users;
|
|
|
|
|
|
- cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
-
|
|
|
num_users = ppdu_info->com_info.num_users;
|
|
|
for (i = 0; i < num_users; i++) {
|
|
|
if (i > OFDMA_NUM_USERS)
|
|
@@ -291,27 +289,24 @@ dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev,
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
-* dp_rx_populate_cdp_indication_ppdu() - Populate cdp rx indication structure
|
|
|
-* @pdev: pdev ctx
|
|
|
-* @ppdu_info: ppdu info structure from ppdu ring
|
|
|
-* @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
-*
|
|
|
-* Return: none
|
|
|
-*/
|
|
|
+ * dp_rx_populate_cdp_indication_ppdu() - Populate cdp rx indication structure
|
|
|
+ * @pdev: pdev ctx
|
|
|
+ * @ppdu_info: ppdu info structure from ppdu ring
|
|
|
+ * @cdp_rx_ppdu: Rx PPDU indication structure
|
|
|
+ *
|
|
|
+ * Return: none
|
|
|
+ */
|
|
|
static inline void
|
|
|
dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
|
|
|
- struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info,
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
struct dp_peer *peer;
|
|
|
struct dp_soc *soc = pdev->soc;
|
|
|
struct dp_ast_entry *ast_entry;
|
|
|
- struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
uint32_t ast_index;
|
|
|
uint32_t i;
|
|
|
|
|
|
- cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
-
|
|
|
cdp_rx_ppdu->first_data_seq_ctrl =
|
|
|
ppdu_info->rx_status.first_data_seq_ctrl;
|
|
|
cdp_rx_ppdu->frame_ctrl =
|
|
@@ -324,11 +319,11 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
|
|
|
cdp_rx_ppdu->num_mpdu = ppdu_info->com_info.mpdu_cnt_fcs_ok;
|
|
|
/* num msdu is consolidated and added together in num user loop */
|
|
|
cdp_rx_ppdu->num_msdu = (cdp_rx_ppdu->tcp_msdu_count +
|
|
|
- cdp_rx_ppdu->udp_msdu_count +
|
|
|
- cdp_rx_ppdu->other_msdu_count);
|
|
|
+ cdp_rx_ppdu->udp_msdu_count +
|
|
|
+ cdp_rx_ppdu->other_msdu_count);
|
|
|
|
|
|
cdp_rx_ppdu->retries = CDP_FC_IS_RETRY_SET(cdp_rx_ppdu->frame_ctrl) ?
|
|
|
- ppdu_info->com_info.mpdu_cnt_fcs_ok : 0;
|
|
|
+ ppdu_info->com_info.mpdu_cnt_fcs_ok : 0;
|
|
|
|
|
|
if (ppdu_info->com_info.mpdu_cnt_fcs_ok > 1)
|
|
|
cdp_rx_ppdu->is_ampdu = 1;
|
|
@@ -400,17 +395,17 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
|
|
|
cdp_rx_ppdu->num_mpdu = 0;
|
|
|
cdp_rx_ppdu->num_msdu = 0;
|
|
|
|
|
|
- dp_rx_populate_cdp_indication_ppdu_user(pdev, ppdu_info, ppdu_nbuf);
|
|
|
+ dp_rx_populate_cdp_indication_ppdu_user(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
|
|
|
return;
|
|
|
end:
|
|
|
- dp_rx_populate_cfr_non_assoc_sta(pdev, ppdu_info, ppdu_nbuf);
|
|
|
+ dp_rx_populate_cfr_non_assoc_sta(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
}
|
|
|
#else
|
|
|
static inline void
|
|
|
dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
|
|
|
- struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info,
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
}
|
|
|
#endif
|
|
@@ -926,30 +921,24 @@ dp_rx_handle_smart_mesh_mode(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
* for an UL-MU-PPDU
|
|
|
* @pdev: pdev ctx
|
|
|
* @ppdu_info: pointer to ppdu info structure populated from ppdu status TLVs
|
|
|
- * @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
+ * @cdp_rx_ppdu: Rx PPDU indication structure
|
|
|
*
|
|
|
* Return: none
|
|
|
*/
|
|
|
static inline void
|
|
|
dp_rx_mon_handle_cfr_mu_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
struct dp_peer *peer;
|
|
|
struct dp_soc *soc = pdev->soc;
|
|
|
struct dp_ast_entry *ast_entry;
|
|
|
- struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
struct mon_rx_user_status *rx_user_status;
|
|
|
struct cdp_rx_stats_ppdu_user *rx_stats_peruser;
|
|
|
uint32_t num_users;
|
|
|
int user_id;
|
|
|
uint32_t ast_index;
|
|
|
|
|
|
- if (!ppdu_info->cfr_info.bb_captured_channel)
|
|
|
- return;
|
|
|
-
|
|
|
- cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
-
|
|
|
qdf_spin_lock_bh(&soc->ast_lock);
|
|
|
|
|
|
num_users = ppdu_info->com_info.num_users;
|
|
@@ -992,19 +981,17 @@ dp_rx_mon_handle_cfr_mu_info(struct dp_pdev *pdev,
|
|
|
* info
|
|
|
* @pdev: pdev ctx
|
|
|
* @ppdu_info: ppdu info structure from ppdu ring
|
|
|
- * @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
+ * @cdp_rx_ppdu : Rx PPDU indication structure
|
|
|
*
|
|
|
* Return: none
|
|
|
*/
|
|
|
static inline void
|
|
|
dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
- struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
int chain;
|
|
|
|
|
|
- cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id;
|
|
|
cdp_rx_ppdu->timestamp = ppdu_info->rx_status.tsft;
|
|
|
cdp_rx_ppdu->u.ppdu_type = ppdu_info->rx_status.reception_type;
|
|
@@ -1013,29 +1000,40 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev,
|
|
|
for (chain = 0; chain < MAX_CHAIN; chain++)
|
|
|
cdp_rx_ppdu->per_chain_rssi[chain] =
|
|
|
ppdu_info->rx_status.rssi[chain];
|
|
|
- dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, ppdu_nbuf);
|
|
|
+ dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * dp_cfr_rcc_mode_status() - Return status of cfr rcc mode
|
|
|
+ * @pdev: pdev ctx
|
|
|
+ *
|
|
|
+ * Return: True or False
|
|
|
+ */
|
|
|
+
|
|
|
+static inline bool
|
|
|
+dp_cfr_rcc_mode_status(struct dp_pdev *pdev)
|
|
|
+{
|
|
|
+ return pdev->cfr_rcc_mode;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* dp_rx_mon_populate_cfr_info() - Populate cdp ppdu info from hal cfr info
|
|
|
* @pdev: pdev ctx
|
|
|
* @ppdu_info: ppdu info structure from ppdu ring
|
|
|
- * @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
+ * @cdp_rx_ppdu: Rx PPDU indication structure
|
|
|
*
|
|
|
* Return: none
|
|
|
*/
|
|
|
static inline void
|
|
|
dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
- struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
struct cdp_rx_ppdu_cfr_info *cfr_info;
|
|
|
|
|
|
- if (qdf_unlikely(!pdev->cfr_rcc_mode))
|
|
|
+ if (!dp_cfr_rcc_mode_status(pdev))
|
|
|
return;
|
|
|
|
|
|
- cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
cfr_info = &cdp_rx_ppdu->cfr_info;
|
|
|
|
|
|
cfr_info->bb_captured_channel
|
|
@@ -1054,6 +1052,37 @@ dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev,
|
|
|
= ppdu_info->cfr_info.rtt_che_buffer_pointer_low32;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * dp_update_cfr_dbg_stats() - Increment RCC debug statistics
|
|
|
+ * @pdev: pdev structure
|
|
|
+ * @ppdu_info: structure for rx ppdu ring
|
|
|
+ *
|
|
|
+ * Return: none
|
|
|
+ */
|
|
|
+static inline void
|
|
|
+dp_update_cfr_dbg_stats(struct dp_pdev *pdev,
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info)
|
|
|
+{
|
|
|
+ struct hal_rx_ppdu_cfr_info *cfr = &ppdu_info->cfr_info;
|
|
|
+
|
|
|
+ DP_STATS_INC(pdev,
|
|
|
+ rcc.chan_capture_status[cfr->chan_capture_status], 1);
|
|
|
+ if (cfr->rx_location_info_valid) {
|
|
|
+ DP_STATS_INC(pdev, rcc.rx_loc_info_valid_cnt, 1);
|
|
|
+ if (cfr->bb_captured_channel) {
|
|
|
+ DP_STATS_INC(pdev, rcc.bb_captured_channel_cnt, 1);
|
|
|
+ DP_STATS_INC(pdev,
|
|
|
+ rcc.reason_cnt[cfr->bb_captured_reason],
|
|
|
+ 1);
|
|
|
+ } else if (cfr->bb_captured_timeout) {
|
|
|
+ DP_STATS_INC(pdev, rcc.bb_captured_timeout_cnt, 1);
|
|
|
+ DP_STATS_INC(pdev,
|
|
|
+ rcc.reason_cnt[cfr->bb_captured_reason],
|
|
|
+ 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* dp_rx_handle_cfr() - Gather cfr info from hal ppdu info
|
|
|
* @soc: core txrx main context
|
|
@@ -1067,9 +1096,10 @@ dp_rx_handle_cfr(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info)
|
|
|
{
|
|
|
qdf_nbuf_t ppdu_nbuf;
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
|
|
|
|
|
|
- if (!ppdu_info->cfr_info.bb_captured_channel &&
|
|
|
- !ppdu_info->cfr_info.bb_captured_timeout)
|
|
|
+ dp_update_cfr_dbg_stats(pdev, ppdu_info);
|
|
|
+ if (!ppdu_info->cfr_info.bb_captured_channel)
|
|
|
return;
|
|
|
|
|
|
ppdu_nbuf = qdf_nbuf_alloc(soc->osdev,
|
|
@@ -1078,8 +1108,10 @@ dp_rx_handle_cfr(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
0,
|
|
|
FALSE);
|
|
|
if (ppdu_nbuf) {
|
|
|
- dp_rx_mon_populate_cfr_info(pdev, ppdu_info, ppdu_nbuf);
|
|
|
- dp_rx_mon_populate_cfr_ppdu_info(pdev, ppdu_info, ppdu_nbuf);
|
|
|
+ cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
+
|
|
|
+ dp_rx_mon_populate_cfr_info(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
+ dp_rx_mon_populate_cfr_ppdu_info(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
qdf_nbuf_put_tail(ppdu_nbuf,
|
|
|
sizeof(struct cdp_rx_indication_ppdu));
|
|
|
dp_wdi_event_handler(WDI_EVENT_RX_PPDU_DESC, soc,
|
|
@@ -1093,40 +1125,62 @@ dp_rx_handle_cfr(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
* non-associated stations
|
|
|
* @pdev: pdev ctx
|
|
|
* @ppdu_info: ppdu info structure from ppdu ring
|
|
|
- * @ppdu_nbuf: qdf nbuf abstraction for linux skb
|
|
|
+ * @cdp_rx_ppdu: Rx PPDU indication structure
|
|
|
*
|
|
|
* Return: none
|
|
|
*/
|
|
|
static inline void
|
|
|
dp_rx_populate_cfr_non_assoc_sta(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
- if (!pdev->cfr_rcc_mode)
|
|
|
+ if (!dp_cfr_rcc_mode_status(pdev))
|
|
|
return;
|
|
|
|
|
|
if (ppdu_info->cfr_info.bb_captured_channel)
|
|
|
- dp_rx_mon_populate_cfr_ppdu_info(pdev, ppdu_info, ppdu_nbuf);
|
|
|
+ dp_rx_mon_populate_cfr_ppdu_info(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * dp_bb_captured_chan_status() - Get the bb_captured_channel status
|
|
|
+ * @ppdu_info: structure for rx ppdu ring
|
|
|
+ *
|
|
|
+ * Return: Success/ Failure
|
|
|
+ */
|
|
|
+
|
|
|
+static inline QDF_STATUS
|
|
|
+dp_bb_captured_chan_status(struct dp_pdev *pdev,
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info)
|
|
|
+{
|
|
|
+ QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
|
+ struct hal_rx_ppdu_cfr_info *cfr = &ppdu_info->cfr_info;
|
|
|
+
|
|
|
+ if (dp_cfr_rcc_mode_status(pdev)) {
|
|
|
+ if (cfr->bb_captured_channel)
|
|
|
+ status = QDF_STATUS_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ return status;
|
|
|
}
|
|
|
#else
|
|
|
static inline void
|
|
|
dp_rx_mon_handle_cfr_mu_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
static inline void
|
|
|
dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
static inline void
|
|
|
dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
{
|
|
|
}
|
|
|
|
|
@@ -1139,8 +1193,27 @@ dp_rx_handle_cfr(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
static inline void
|
|
|
dp_rx_populate_cfr_non_assoc_sta(struct dp_pdev *pdev,
|
|
|
struct hal_rx_ppdu_info *ppdu_info,
|
|
|
- qdf_nbuf_t ppdu_nbuf)
|
|
|
+ struct cdp_rx_indication_ppdu *cdp_rx_ppdu)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+static inline void
|
|
|
+dp_update_cfr_dbg_stats(struct dp_pdev *pdev,
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+static inline QDF_STATUS
|
|
|
+dp_bb_captured_chan_status(struct dp_pdev *pdev,
|
|
|
+ struct hal_rx_ppdu_info *ppdu_info)
|
|
|
+{
|
|
|
+ return QDF_STATUS_E_NOSUPPORT;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool
|
|
|
+dp_cfr_rcc_mode_status(struct dp_pdev *pdev)
|
|
|
{
|
|
|
+ return false;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1190,28 +1263,35 @@ dp_rx_handle_ppdu_stats(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
qdf_spin_unlock_bh(&pdev->neighbour_peer_mutex);
|
|
|
}
|
|
|
|
|
|
- /* need not generate wdi event when mcopy and
|
|
|
+ /* need not generate wdi event when mcopy, cfr rcc mode and
|
|
|
* enhanced stats are not enabled
|
|
|
*/
|
|
|
if (!pdev->mcopy_mode && !pdev->enhanced_stats_en &&
|
|
|
- !pdev->cfr_rcc_mode)
|
|
|
+ !dp_cfr_rcc_mode_status(pdev))
|
|
|
return;
|
|
|
|
|
|
- if (!pdev->mcopy_mode && !pdev->cfr_rcc_mode) {
|
|
|
- if (!ppdu_info->rx_status.frame_control_info_valid)
|
|
|
- return;
|
|
|
+ if (dp_cfr_rcc_mode_status(pdev))
|
|
|
+ dp_update_cfr_dbg_stats(pdev, ppdu_info);
|
|
|
|
|
|
- if (ppdu_info->rx_status.ast_index == HAL_AST_IDX_INVALID)
|
|
|
+ if (!ppdu_info->rx_status.frame_control_info_valid ||
|
|
|
+ (ppdu_info->rx_status.ast_index == HAL_AST_IDX_INVALID)) {
|
|
|
+ if (!(pdev->mcopy_mode ||
|
|
|
+ (dp_bb_captured_chan_status(pdev, ppdu_info) ==
|
|
|
+ QDF_STATUS_SUCCESS)))
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
ppdu_nbuf = qdf_nbuf_alloc(soc->osdev,
|
|
|
- sizeof(struct cdp_rx_indication_ppdu), 0, 0, FALSE);
|
|
|
+ sizeof(struct cdp_rx_indication_ppdu),
|
|
|
+ 0, 0, FALSE);
|
|
|
if (ppdu_nbuf) {
|
|
|
- dp_rx_mon_populate_cfr_info(pdev, ppdu_info, ppdu_nbuf);
|
|
|
- dp_rx_populate_cdp_indication_ppdu(pdev, ppdu_info, ppdu_nbuf);
|
|
|
- qdf_nbuf_put_tail(ppdu_nbuf,
|
|
|
- sizeof(struct cdp_rx_indication_ppdu));
|
|
|
cdp_rx_ppdu = (struct cdp_rx_indication_ppdu *)ppdu_nbuf->data;
|
|
|
+
|
|
|
+ dp_rx_mon_populate_cfr_info(pdev, ppdu_info, cdp_rx_ppdu);
|
|
|
+ dp_rx_populate_cdp_indication_ppdu(pdev,
|
|
|
+ ppdu_info, cdp_rx_ppdu);
|
|
|
+ qdf_nbuf_put_tail(ppdu_nbuf,
|
|
|
+ sizeof(struct cdp_rx_indication_ppdu));
|
|
|
dp_rx_stats_update(pdev, cdp_rx_ppdu);
|
|
|
|
|
|
if (cdp_rx_ppdu->peer_id != HTT_INVALID_PEER) {
|
|
@@ -1219,10 +1299,10 @@ dp_rx_handle_ppdu_stats(struct dp_soc *soc, struct dp_pdev *pdev,
|
|
|
soc, ppdu_nbuf,
|
|
|
cdp_rx_ppdu->peer_id,
|
|
|
WDI_NO_VAL, pdev->pdev_id);
|
|
|
- } else if (pdev->mcopy_mode || pdev->cfr_rcc_mode) {
|
|
|
+ } else if (pdev->mcopy_mode || dp_cfr_rcc_mode_status(pdev)) {
|
|
|
dp_wdi_event_handler(WDI_EVENT_RX_PPDU_DESC, soc,
|
|
|
- ppdu_nbuf, HTT_INVALID_PEER,
|
|
|
- WDI_NO_VAL, pdev->pdev_id);
|
|
|
+ ppdu_nbuf, HTT_INVALID_PEER,
|
|
|
+ WDI_NO_VAL, pdev->pdev_id);
|
|
|
} else {
|
|
|
qdf_nbuf_free(ppdu_nbuf);
|
|
|
}
|
|
@@ -1412,7 +1492,7 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, uint32_t mac_id,
|
|
|
nbuf_used = false;
|
|
|
|
|
|
if ((pdev->monitor_vdev) || (pdev->enhanced_stats_en) ||
|
|
|
- pdev->mcopy_mode ||
|
|
|
+ (pdev->mcopy_mode) || (dp_cfr_rcc_mode_status(pdev)) ||
|
|
|
(rx_enh_capture_mode != CDP_RX_ENH_CAPTURE_DISABLED)) {
|
|
|
do {
|
|
|
tlv_status = hal_rx_status_get_tlv_info(rx_tlv,
|
|
@@ -1490,7 +1570,7 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, uint32_t mac_id,
|
|
|
if (pdev->enhanced_stats_en ||
|
|
|
pdev->mcopy_mode || pdev->neighbour_peers_added)
|
|
|
dp_rx_handle_ppdu_stats(soc, pdev, ppdu_info);
|
|
|
- else if (pdev->cfr_rcc_mode)
|
|
|
+ else if (dp_cfr_rcc_mode_status(pdev))
|
|
|
dp_rx_handle_cfr(soc, pdev, ppdu_info);
|
|
|
|
|
|
pdev->mon_ppdu_status = DP_PPDU_STATUS_DONE;
|