Revert "qcacmn: Use qdf flex mem to allocate rx ppdu info"

This reverts commit I2318f6c5f33e5337f6398263d6717da698be7c92.

Change-Id: Ia60fe6ddb66623761c11398d89d6039c66994b66
CRs-Fixed: 3235962
This commit is contained in:
Harsh Kumar Bijlani
2022-07-08 03:27:08 -07:00
parent 1f40cb6ec2
commit eb56570ae1
9 changed files with 35 additions and 195 deletions

View File

@@ -390,10 +390,6 @@ enum cdp_mon_phyrx_abort_reason_code {
* @mpdus_to_stack: Number of MPDUs delivered to stack * @mpdus_to_stack: Number of MPDUs delivered to stack
* @status_buf_count: Number of status buffer received * @status_buf_count: Number of status buffer received
* @empty_desc_ppdu: Number of empty desc received * @empty_desc_ppdu: Number of empty desc received
* @total_ppdu_info_enq: Number of PPDUs enqueued to wq
* @total_ppdu_info_drop: Number of PPDUs dropped
* @total_ppdu_info_alloc: Number of PPDU info allocated
* @total_ppdu_info_free: Number of PPDU info freeed
*/ */
struct cdp_pdev_mon_stats { struct cdp_pdev_mon_stats {
#ifndef REMOVE_MON_DBG_STATS #ifndef REMOVE_MON_DBG_STATS
@@ -438,10 +434,6 @@ struct cdp_pdev_mon_stats {
uint32_t mpdus_buf_to_stack; uint32_t mpdus_buf_to_stack;
uint32_t status_buf_count; uint32_t status_buf_count;
uint32_t empty_desc_ppdu; uint32_t empty_desc_ppdu;
uint32_t total_ppdu_info_enq;
uint32_t total_ppdu_info_drop;
uint32_t total_ppdu_info_alloc;
uint32_t total_ppdu_info_free;
}; };
#ifdef QCA_SUPPORT_LITE_MONITOR #ifdef QCA_SUPPORT_LITE_MONITOR

View File

@@ -1219,7 +1219,6 @@ dp_mon_register_feature_ops_1_0(struct dp_soc *soc)
mon_ops->mon_filter_reset_undecoded_metadata_capture = mon_ops->mon_filter_reset_undecoded_metadata_capture =
dp_mon_filter_reset_undecoded_metadata_capture_1_0; dp_mon_filter_reset_undecoded_metadata_capture_1_0;
#endif #endif
mon_ops->mon_rx_print_advanced_stats = NULL;
} }
struct dp_mon_ops monitor_ops_1_0 = { struct dp_mon_ops monitor_ops_1_0 = {

View File

@@ -61,7 +61,6 @@ QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev)
TAILQ_INIT(&mon_pdev_be->rx_mon_queue); TAILQ_INIT(&mon_pdev_be->rx_mon_queue);
qdf_spinlock_create(&mon_pdev_be->rx_mon_wq_lock); qdf_spinlock_create(&mon_pdev_be->rx_mon_wq_lock);
dp_rx_mon_ppdu_info_pool_init(mon_pdev);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
@@ -85,13 +84,12 @@ QDF_STATUS dp_mon_pdev_ext_deinit_2_0(struct dp_pdev *pdev)
if (!mon_pdev_be->rx_mon_workqueue) if (!mon_pdev_be->rx_mon_workqueue)
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
dp_rx_mon_drain_wq(pdev);
qdf_flush_workqueue(0, mon_pdev_be->rx_mon_workqueue); qdf_flush_workqueue(0, mon_pdev_be->rx_mon_workqueue);
qdf_destroy_workqueue(0, mon_pdev_be->rx_mon_workqueue); qdf_destroy_workqueue(0, mon_pdev_be->rx_mon_workqueue);
qdf_flush_work(&mon_pdev_be->rx_mon_work); qdf_flush_work(&mon_pdev_be->rx_mon_work);
qdf_disable_work(&mon_pdev_be->rx_mon_work); qdf_disable_work(&mon_pdev_be->rx_mon_work);
mon_pdev_be->rx_mon_workqueue = NULL; mon_pdev_be->rx_mon_workqueue = NULL;
dp_rx_mon_drain_wq(pdev);
dp_rx_mon_ppdu_info_pool_deinit(mon_pdev_be);
qdf_spinlock_destroy(&mon_pdev_be->rx_mon_wq_lock); qdf_spinlock_destroy(&mon_pdev_be->rx_mon_wq_lock);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
@@ -1389,8 +1387,6 @@ dp_mon_register_feature_ops_2_0(struct dp_soc *soc)
mon_ops->mon_filter_reset_undecoded_metadata_capture = mon_ops->mon_filter_reset_undecoded_metadata_capture =
dp_mon_filter_reset_undecoded_metadata_capture_2_0; dp_mon_filter_reset_undecoded_metadata_capture_2_0;
#endif #endif
mon_ops->mon_rx_print_advanced_stats =
dp_mon_rx_print_advanced_stats_2_0;
} }
struct dp_mon_ops monitor_ops_2_0 = { struct dp_mon_ops monitor_ops_2_0 = {

View File

@@ -20,8 +20,6 @@
#if !defined(DISABLE_MON_CONFIG) #if !defined(DISABLE_MON_CONFIG)
#include <qdf_lock.h> #include <qdf_lock.h>
#include <qdf_flex_mem.h>
#include <qdf_atomic.h>
#include <dp_types.h> #include <dp_types.h>
#include <dp_mon.h> #include <dp_mon.h>
#include <dp_mon_filter.h> #include <dp_mon_filter.h>
@@ -145,9 +143,6 @@ struct dp_mon_desc_pool {
* @rx_mon_queue_depth: RxMON queue depth * @rx_mon_queue_depth: RxMON queue depth
* @desc_count: reaped status desc count * @desc_count: reaped status desc count
* @status: reaped status buffer per ppdu * @status: reaped status buffer per ppdu
* @rx_ppdu_info_pool: rx ppdu info mem pool
* @rx_ppdu_info_pool_head: rx ppdu info mem pool head segment
* @rx_ppdu_info_pool_head_bytes: ppdu info pool head for array indexing
*/ */
struct dp_mon_pdev_be { struct dp_mon_pdev_be {
struct dp_mon_pdev mon_pdev; struct dp_mon_pdev mon_pdev;
@@ -170,9 +165,6 @@ struct dp_mon_pdev_be {
#endif #endif
void *prev_rxmon_desc; void *prev_rxmon_desc;
uint32_t prev_rxmon_cookie; uint32_t prev_rxmon_cookie;
struct qdf_flex_mem_pool rx_ppdu_info_pool;
struct qdf_flex_mem_segment rx_ppdu_info_pool_head;
uint8_t rx_ppdu_info_pool_head_bytes[QDF_FM_BITMAP_BITS * (sizeof(struct hal_rx_ppdu_info))];
}; };
/** /**

View File

@@ -23,7 +23,6 @@
#include "hal_be_api_mon.h" #include "hal_be_api_mon.h"
#include "dp_internal.h" #include "dp_internal.h"
#include "qdf_mem.h" /* qdf_mem_malloc,free */ #include "qdf_mem.h" /* qdf_mem_malloc,free */
#include <qdf_flex_mem.h>
#include "dp_mon.h" #include "dp_mon.h"
#include <dp_rx_mon.h> #include <dp_rx_mon.h>
#include <dp_mon_2.0.h> #include <dp_mon_2.0.h>
@@ -38,57 +37,6 @@
#define F_MASK 0xFFFF #define F_MASK 0xFFFF
static struct hal_rx_ppdu_info*
dp_mon_ppdu_info_alloc(struct dp_mon_pdev_be *mon_pdev_be)
{
struct hal_rx_ppdu_info *ppdu_info = NULL;
ppdu_info = qdf_flex_mem_alloc(&mon_pdev_be->rx_ppdu_info_pool);
if (!ppdu_info) {
dp_mon_debug("out of memory");
return NULL;
}
return ppdu_info;
}
/**
* dp_mon_free_ppdu_info() - Free PPDU info
*
* @pdev: DP pdev handle
* @ppdu_info: PPDU info
*
* Return: void
*/
static void dp_mon_free_ppdu_info(struct dp_mon_pdev *mon_pdev,
struct hal_rx_ppdu_info *ppdu_info)
{
struct dp_mon_pdev_be *mon_pdev_be =
dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
qdf_flex_mem_free(&mon_pdev_be->rx_ppdu_info_pool, ppdu_info);
mon_pdev->rx_mon_stats.total_ppdu_info_free++;
}
void dp_rx_mon_ppdu_info_pool_init(struct dp_mon_pdev *mon_pdev)
{
struct dp_mon_pdev_be *mon_pdev_be =
dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
mon_pdev_be->rx_ppdu_info_pool_head.node =
(qdf_list_node_t)QDF_LIST_NODE_INIT_SINGLE(QDF_LIST_ANCHOR(mon_pdev_be->rx_ppdu_info_pool.seg_list));
mon_pdev_be->rx_ppdu_info_pool_head.bytes =
mon_pdev_be->rx_ppdu_info_pool_head_bytes;
mon_pdev_be->rx_ppdu_info_pool.seg_list = (qdf_list_t)QDF_LIST_INIT_SINGLE(mon_pdev_be->rx_ppdu_info_pool_head.node);
mon_pdev_be->rx_ppdu_info_pool.reduction_limit = DP_RXMON_PPDU_INFO_SEG_MAX;
mon_pdev_be->rx_ppdu_info_pool.item_size = sizeof(struct hal_rx_ppdu_info);
qdf_flex_mem_init(&mon_pdev_be->rx_ppdu_info_pool);
}
void dp_rx_mon_ppdu_info_pool_deinit(struct dp_mon_pdev_be *mon_pdev_be)
{
qdf_flex_mem_deinit(&mon_pdev_be->rx_ppdu_info_pool);
}
#ifdef QCA_TEST_MON_PF_TAGS_STATS #ifdef QCA_TEST_MON_PF_TAGS_STATS
/** /**
@@ -271,7 +219,7 @@ dp_rx_mon_free_ppdu_info(struct dp_pdev *pdev,
struct hal_rx_ppdu_info *ppdu_info) struct hal_rx_ppdu_info *ppdu_info)
{ {
uint8_t user; uint8_t user;
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev; struct dp_mon_pdev *mon_pdev;
mon_pdev = (struct dp_mon_pdev *)pdev->monitor_pdev; mon_pdev = (struct dp_mon_pdev *)pdev->monitor_pdev;
for (user = 0; user < ppdu_info->com_info.num_users; user++) { for (user = 0; user < ppdu_info->com_info.num_users; user++) {
@@ -287,7 +235,6 @@ dp_rx_mon_free_ppdu_info(struct dp_pdev *pdev,
dp_mon_free_parent_nbuf(mon_pdev, mpdu); dp_mon_free_parent_nbuf(mon_pdev, mpdu);
} }
} }
dp_mon_free_ppdu_info(mon_pdev, ppdu_info);
} }
void dp_rx_mon_drain_wq(struct dp_pdev *pdev) void dp_rx_mon_drain_wq(struct dp_pdev *pdev)
@@ -433,7 +380,6 @@ dp_rx_mon_process_ppdu_info(struct dp_pdev *pdev,
} }
} }
} }
dp_mon_free_ppdu_info(mon_pdev, ppdu_info);
} }
/** /**
@@ -476,6 +422,7 @@ void dp_rx_mon_process_ppdu(void *context)
mon_pdev_be->rx_mon_queue_depth--; mon_pdev_be->rx_mon_queue_depth--;
dp_rx_mon_process_ppdu_info(pdev, ppdu_info); dp_rx_mon_process_ppdu_info(pdev, ppdu_info);
qdf_mem_free(ppdu_info);
} }
qdf_spin_unlock_bh(&mon_pdev_be->rx_mon_wq_lock); qdf_spin_unlock_bh(&mon_pdev_be->rx_mon_wq_lock);
} }
@@ -490,10 +437,9 @@ void dp_rx_mon_process_ppdu(void *context)
*/ */
static QDF_STATUS static QDF_STATUS
dp_rx_mon_add_ppdu_info_to_wq(struct dp_pdev *pdev, dp_rx_mon_add_ppdu_info_to_wq(struct dp_mon_pdev *mon_pdev,
struct hal_rx_ppdu_info *ppdu_info) struct hal_rx_ppdu_info *ppdu_info)
{ {
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
struct dp_mon_pdev_be *mon_pdev_be = struct dp_mon_pdev_be *mon_pdev_be =
dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev); dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
@@ -504,15 +450,9 @@ dp_rx_mon_add_ppdu_info_to_wq(struct dp_pdev *pdev,
if (qdf_likely(ppdu_info)) { if (qdf_likely(ppdu_info)) {
qdf_spin_lock_bh(&mon_pdev_be->rx_mon_wq_lock); qdf_spin_lock_bh(&mon_pdev_be->rx_mon_wq_lock);
if (mon_pdev_be->rx_mon_queue_depth < DP_RX_MON_WQ_THRESHOLD) { TAILQ_INSERT_TAIL(&mon_pdev_be->rx_mon_queue,
TAILQ_INSERT_TAIL(&mon_pdev_be->rx_mon_queue, ppdu_info, ppdu_list_elem);
ppdu_info, ppdu_list_elem); mon_pdev_be->rx_mon_queue_depth++;
mon_pdev_be->rx_mon_queue_depth++;
mon_pdev->rx_mon_stats.total_ppdu_info_enq++;
} else {
mon_pdev->rx_mon_stats.total_ppdu_info_drop++;
dp_rx_mon_free_ppdu_info(pdev, ppdu_info);
}
qdf_spin_unlock_bh(&mon_pdev_be->rx_mon_wq_lock); qdf_spin_unlock_bh(&mon_pdev_be->rx_mon_wq_lock);
if (mon_pdev_be->rx_mon_queue_depth > DP_MON_QUEUE_DEPTH_MAX) { if (mon_pdev_be->rx_mon_queue_depth > DP_MON_QUEUE_DEPTH_MAX) {
@@ -553,6 +493,11 @@ dp_rx_mon_handle_full_mon(struct dp_pdev *pdev,
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
**************************************************************************/ **************************************************************************/
if (!mpdu) {
dp_mon_debug("nbuf is NULL, return");
return;
}
head_msdu = mpdu; head_msdu = mpdu;
mpdu_meta = (struct hal_rx_mon_mpdu_info *)qdf_nbuf_data(mpdu); mpdu_meta = (struct hal_rx_mon_mpdu_info *)qdf_nbuf_data(mpdu);
@@ -1275,13 +1220,13 @@ dp_rx_mon_process_status_tlv(struct dp_pdev *pdev)
return NULL; return NULL;
} }
ppdu_info = dp_mon_ppdu_info_alloc(mon_pdev_be); ppdu_info = qdf_mem_malloc(sizeof(*ppdu_info));
if (!ppdu_info) { if (!ppdu_info) {
dp_mon_err("ppdu_info malloc failed pdev: %pK", pdev); dp_mon_err("ppdu_info malloc failed pdev: %pK", pdev);
return NULL; return NULL;
} }
mon_pdev->rx_mon_stats.total_ppdu_info_alloc++;
status_buf_count = mon_pdev_be->desc_count; status_buf_count = mon_pdev_be->desc_count;
for (idx = 0; idx < status_buf_count; idx++) { for (idx = 0; idx < status_buf_count; idx++) {
mon_desc = mon_pdev_be->status[idx]; mon_desc = mon_pdev_be->status[idx];
@@ -1526,11 +1471,11 @@ dp_rx_mon_srng_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
dp_rx_handle_cfr(soc, pdev, ppdu_info); dp_rx_handle_cfr(soc, pdev, ppdu_info);
/* Call API to add PPDU info workqueue */ /* Call API to add PPDU info workqueue */
status = dp_rx_mon_add_ppdu_info_to_wq(pdev, ppdu_info); status = dp_rx_mon_add_ppdu_info_to_wq(mon_pdev, ppdu_info);
if (status != QDF_STATUS_SUCCESS) { if (status != QDF_STATUS_SUCCESS) {
if (ppdu_info) if (ppdu_info)
dp_mon_free_ppdu_info(mon_pdev, ppdu_info); qdf_mem_free(ppdu_info);
} }
work_done++; work_done++;
@@ -1748,42 +1693,3 @@ dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
} }
#endif #endif
#endif #endif
void dp_mon_rx_print_advanced_stats_2_0(struct dp_soc *soc,
struct dp_pdev *pdev)
{
struct cdp_pdev_mon_stats *rx_mon_stats;
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
struct dp_mon_soc *mon_soc = pdev->soc->monitor_soc;
struct dp_mon_pdev_be *mon_pdev_be =
dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
rx_mon_stats = &mon_pdev->rx_mon_stats;
DP_PRINT_STATS("total_ppdu_info_alloc = %d",
rx_mon_stats->total_ppdu_info_alloc);
DP_PRINT_STATS("total_ppdu_info_free = %d",
rx_mon_stats->total_ppdu_info_free);
DP_PRINT_STATS("total_ppdu_info_enq = %d",
rx_mon_stats->total_ppdu_info_enq);
DP_PRINT_STATS("total_ppdu_info_drop = %d",
rx_mon_stats->total_ppdu_info_drop);
DP_PRINT_STATS("rx_hdr_not_received = %d",
rx_mon_stats->rx_hdr_not_received);
DP_PRINT_STATS("parent_buf_alloc = %d",
rx_mon_stats->parent_buf_alloc);
DP_PRINT_STATS("parent_buf_free = %d",
rx_mon_stats->parent_buf_free);
DP_PRINT_STATS("mpdus_buf_to_stack = %d",
rx_mon_stats->mpdus_buf_to_stack);
DP_PRINT_STATS("frag_alloc = %d",
mon_soc->stats.frag_alloc);
DP_PRINT_STATS("frag_free = %d",
mon_soc->stats.frag_free);
DP_PRINT_STATS("status_buf_count = %d",
rx_mon_stats->status_buf_count);
DP_PRINT_STATS("pkt_buf_count = %d",
rx_mon_stats->pkt_buf_count);
DP_PRINT_STATS("rx_mon_queue_depth= %d",
mon_pdev_be->rx_mon_queue_depth);
}

View File

@@ -19,16 +19,11 @@
#define _DP_RX_MON_2_0_H_ #define _DP_RX_MON_2_0_H_
#include <qdf_nbuf_frag.h> #include <qdf_nbuf_frag.h>
#include <qdf_flex_mem.h>
#include <dp_mon_2.0.h>
#include <hal_be_api_mon.h> #include <hal_be_api_mon.h>
#define DP_RX_MON_PACKET_OFFSET 8 #define DP_RX_MON_PACKET_OFFSET 8
#define DP_RX_MON_RX_HDR_OFFSET 8 #define DP_RX_MON_RX_HDR_OFFSET 8
#define DP_GET_NUM_QWORDS(num) ((num) >> 3) #define DP_GET_NUM_QWORDS(num) ((num) >> 3)
#define DP_RX_MON_WQ_THRESHOLD 128
#define DP_RXMON_PPDU_INFO_SEG_MAX (DP_RX_MON_WQ_THRESHOLD / QDF_FM_BITMAP_BITS)
/* /*
* dp_rx_mon_buffers_alloc() - allocate rx monitor buffers * dp_rx_mon_buffers_alloc() - allocate rx monitor buffers
* @soc: DP soc handle * @soc: DP soc handle
@@ -187,29 +182,4 @@ dp_rx_mon_handle_full_mon(struct dp_pdev *pdev,
* Return: Void * Return: Void
*/ */
void dp_rx_mon_drain_wq(struct dp_pdev *pdev); void dp_rx_mon_drain_wq(struct dp_pdev *pdev);
/**
* dp_rx_mon_ppdu_info_pool_init() - PPDU info pool init
*
* Return: void
*/
void dp_rx_mon_ppdu_info_pool_init(struct dp_mon_pdev *mon_pdev);
/**
* dp_rx_mon_ppdu_info_pool_deinit() - PPDU info pool deinit
*
* Return: void
*/
void dp_rx_mon_ppdu_info_pool_deinit(struct dp_mon_pdev_be *mon_pdev_be);
/**
* dp_mon_rx_print_advanced_stats_2_0 () - print advanced monitor statistics
*
* @soc: DP soc handle
* @pdev: DP pdev handle
*
* Return: void
*/
void dp_mon_rx_print_advanced_stats_2_0(struct dp_soc *soc,
struct dp_pdev *pdev);
#endif /* _DP_RX_MON_2_0_H_ */ #endif /* _DP_RX_MON_2_0_H_ */

View File

@@ -827,6 +827,7 @@ dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
uint32_t *dest_ring_ppdu_ids; uint32_t *dest_ring_ppdu_ids;
int i, idx; int i, idx;
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev; struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
struct dp_mon_soc *mon_soc = pdev->soc->monitor_soc;
rx_mon_stats = &mon_pdev->rx_mon_stats; rx_mon_stats = &mon_pdev->rx_mon_stats;
@@ -904,8 +905,24 @@ dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
qdf_mem_free(dest_ring_ppdu_ids); qdf_mem_free(dest_ring_ppdu_ids);
DP_PRINT_STATS("mon_rx_dest_stuck = %d", DP_PRINT_STATS("mon_rx_dest_stuck = %d",
rx_mon_stats->mon_rx_dest_stuck); rx_mon_stats->mon_rx_dest_stuck);
DP_PRINT_STATS("rx_hdr_not_received = %d",
rx_mon_stats->rx_hdr_not_received);
DP_PRINT_STATS("parent_buf_alloc = %d",
rx_mon_stats->parent_buf_alloc);
DP_PRINT_STATS("parent_buf_free = %d",
rx_mon_stats->parent_buf_free);
DP_PRINT_STATS("mpdus_buf_to_stack = %d",
rx_mon_stats->mpdus_buf_to_stack);
DP_PRINT_STATS("frag_alloc = %d",
mon_soc->stats.frag_alloc);
DP_PRINT_STATS("frag_free = %d",
mon_soc->stats.frag_free);
DP_PRINT_STATS("status_buf_count = %d",
rx_mon_stats->status_buf_count);
DP_PRINT_STATS("pkt_buf_count = %d",
rx_mon_stats->pkt_buf_count);
dp_pdev_get_undecoded_capture_stats(mon_pdev, rx_mon_stats); dp_pdev_get_undecoded_capture_stats(mon_pdev, rx_mon_stats);
dp_mon_rx_print_advanced_stats(pdev->soc, pdev);
} }
#ifdef QCA_SUPPORT_BPR #ifdef QCA_SUPPORT_BPR

View File

@@ -812,9 +812,6 @@ struct dp_mon_ops {
void (*mon_lite_mon_vdev_delete)(struct dp_pdev *pdev, void (*mon_lite_mon_vdev_delete)(struct dp_pdev *pdev,
struct dp_vdev *vdev); struct dp_vdev *vdev);
void (*mon_lite_mon_disable_rx)(struct dp_pdev *pdev); void (*mon_lite_mon_disable_rx)(struct dp_pdev *pdev);
/* Print advanced monitor stats */
void (*mon_rx_print_advanced_stats)
(struct dp_soc *soc, struct dp_pdev *pdev);
}; };
/** /**
@@ -3797,35 +3794,6 @@ dp_rx_mon_enable(struct dp_soc *soc, uint32_t *msg_word,
monitor_ops->rx_mon_enable(msg_word, tlv_filter); monitor_ops->rx_mon_enable(msg_word, tlv_filter);
} }
/**
* dp_mon_rx_print_advanced_stats () - print advanced monitor stats
*
* @soc: DP soc handle
* @pdev: DP pdev handle
*
* Return: void
*/
static inline void
dp_mon_rx_print_advanced_stats(struct dp_soc *soc,
struct dp_pdev *pdev)
{
struct dp_mon_soc *mon_soc = soc->monitor_soc;
struct dp_mon_ops *monitor_ops;
if (!mon_soc) {
dp_mon_debug("mon soc is NULL");
return;
}
monitor_ops = mon_soc->mon_ops;
if (!monitor_ops ||
!monitor_ops->mon_rx_print_advanced_stats) {
dp_mon_debug("callback not registered");
return;
}
return monitor_ops->mon_rx_print_advanced_stats(soc, pdev);
}
#ifdef QCA_ENHANCED_STATS_SUPPORT #ifdef QCA_ENHANCED_STATS_SUPPORT
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev, QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
struct cdp_rx_stats_ppdu_user *ppdu_user); struct cdp_rx_stats_ppdu_user *ppdu_user);

View File

@@ -52,7 +52,7 @@ struct qdf_flex_mem_pool {
qdf_list_t seg_list; qdf_list_t seg_list;
struct qdf_spinlock lock; struct qdf_spinlock lock;
uint16_t reduction_limit; uint16_t reduction_limit;
uint32_t item_size; uint16_t item_size;
}; };
/** /**