qcacmn: Add txmon HP TP values in stats command
Add txmon buf and destination ring in HPTP dump command Change-Id: Ic32d1b355d5fc309225dfc5649ee7f9568a8dca6 CRs-Fixed: 3331176
This commit is contained in:

committed by
Madan Koyyalamudi

parent
6ef5d59bee
commit
bb7ee725be
@@ -907,6 +907,12 @@ dp_tx_mon_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
dp_print_txmon_ring_stat_from_hal(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
||||||
{
|
{
|
||||||
|
@@ -9633,6 +9633,10 @@ char *dp_srng_get_str_from_hal_ring_type(enum hal_ring_type ring_type)
|
|||||||
return "PPE2TCL";
|
return "PPE2TCL";
|
||||||
case REO2PPE:
|
case REO2PPE:
|
||||||
return "REO2PPE";
|
return "REO2PPE";
|
||||||
|
case TX_MONITOR_DST:
|
||||||
|
return "tx_monitor_destination";
|
||||||
|
case TX_MONITOR_BUF:
|
||||||
|
return "tx_monitor_buf";
|
||||||
default:
|
default:
|
||||||
dp_err("Invalid ring type");
|
dp_err("Invalid ring type");
|
||||||
break;
|
break;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include "qdf_types.h"
|
#include "qdf_types.h"
|
||||||
|
#include "qdf_module.h"
|
||||||
#include "dp_peer.h"
|
#include "dp_peer.h"
|
||||||
#include "dp_types.h"
|
#include "dp_types.h"
|
||||||
#include "dp_internal.h"
|
#include "dp_internal.h"
|
||||||
@@ -5854,6 +5855,8 @@ dp_print_ring_stat_from_hal(struct dp_soc *soc, struct dp_srng *srng,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qdf_export_symbol(dp_print_ring_stat_from_hal);
|
||||||
|
|
||||||
#ifdef FEATURE_TSO_STATS
|
#ifdef FEATURE_TSO_STATS
|
||||||
/**
|
/**
|
||||||
* dp_print_tso_seg_stats - tso segment stats
|
* dp_print_tso_seg_stats - tso segment stats
|
||||||
@@ -6032,6 +6035,8 @@ dp_print_ring_stats(struct dp_pdev *pdev)
|
|||||||
RXDMA_DST);
|
RXDMA_DST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dp_print_txmon_ring_stat_from_hal(pdev);
|
||||||
|
|
||||||
#ifdef WLAN_SUPPORT_PPEDS
|
#ifdef WLAN_SUPPORT_PPEDS
|
||||||
if (pdev->soc->arch_ops.dp_txrx_ppeds_rings_status)
|
if (pdev->soc->arch_ops.dp_txrx_ppeds_rings_status)
|
||||||
pdev->soc->arch_ops.dp_txrx_ppeds_rings_status(pdev->soc);
|
pdev->soc->arch_ops.dp_txrx_ppeds_rings_status(pdev->soc);
|
||||||
|
@@ -1216,6 +1216,11 @@ dp_tx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dp_tx_mon_print_ring_stat_2_0(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
QDF_STATUS dp_mon_soc_attach_2_0(struct dp_soc *soc)
|
QDF_STATUS dp_mon_soc_attach_2_0(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
@@ -1331,6 +1336,7 @@ dp_mon_register_feature_ops_2_0(struct dp_soc *soc)
|
|||||||
mon_ops->mon_neighbour_peer_add_ast = NULL;
|
mon_ops->mon_neighbour_peer_add_ast = NULL;
|
||||||
#ifndef DISABLE_MON_CONFIG
|
#ifndef DISABLE_MON_CONFIG
|
||||||
mon_ops->mon_tx_process = dp_tx_mon_process_2_0;
|
mon_ops->mon_tx_process = dp_tx_mon_process_2_0;
|
||||||
|
mon_ops->print_txmon_ring_stat = dp_tx_mon_print_ring_stat_2_0;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WLAN_TX_PKT_CAPTURE_ENH_BE
|
#ifdef WLAN_TX_PKT_CAPTURE_ENH_BE
|
||||||
mon_ops->mon_peer_tid_peer_id_update = NULL;
|
mon_ops->mon_peer_tid_peer_id_update = NULL;
|
||||||
|
@@ -299,6 +299,22 @@ dp_tx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
|||||||
return work_done;
|
return work_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_tx_mon_print_ring_stat_2_0(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = pdev->soc;
|
||||||
|
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||||
|
struct dp_mon_soc_be *mon_soc_be =
|
||||||
|
dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
|
||||||
|
int lmac_id;
|
||||||
|
|
||||||
|
lmac_id = dp_get_lmac_id_for_pdev_id(soc, 0, pdev->pdev_id);
|
||||||
|
dp_print_ring_stat_from_hal(soc, &mon_soc_be->tx_mon_buf_ring,
|
||||||
|
TX_MONITOR_BUF);
|
||||||
|
dp_print_ring_stat_from_hal(soc, &mon_soc_be->tx_mon_dst_ring[lmac_id],
|
||||||
|
TX_MONITOR_DST);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
dp_tx_mon_buf_desc_pool_deinit(struct dp_soc *soc)
|
dp_tx_mon_buf_desc_pool_deinit(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
|
@@ -148,6 +148,14 @@ uint32_t
|
|||||||
dp_tx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
dp_tx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||||
uint32_t mac_id, uint32_t quota);
|
uint32_t mac_id, uint32_t quota);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dp_tx_mon_print_ring_stat_2_0() - Print monitor ring stats
|
||||||
|
* @pdev: dp pdev handle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dp_tx_mon_print_ring_stat_2_0(struct dp_pdev *pdev);
|
||||||
|
|
||||||
/* The maximum buffer length allocated for radiotap for monitor status buffer */
|
/* The maximum buffer length allocated for radiotap for monitor status buffer */
|
||||||
#define MAX_MONITOR_HEADER (512)
|
#define MAX_MONITOR_HEADER (512)
|
||||||
#define MAX_DUMMY_FRM_BODY (128)
|
#define MAX_DUMMY_FRM_BODY (128)
|
||||||
|
@@ -618,6 +618,7 @@ struct dp_mon_ops {
|
|||||||
struct dp_intr *int_ctx,
|
struct dp_intr *int_ctx,
|
||||||
uint32_t mac_id,
|
uint32_t mac_id,
|
||||||
uint32_t quota);
|
uint32_t quota);
|
||||||
|
void (*print_txmon_ring_stat)(struct dp_pdev *pdev);
|
||||||
#endif
|
#endif
|
||||||
void (*mon_peer_tx_init)(struct dp_pdev *pdev, struct dp_peer *peer);
|
void (*mon_peer_tx_init)(struct dp_pdev *pdev, struct dp_peer *peer);
|
||||||
void (*mon_peer_tx_cleanup)(struct dp_vdev *vdev,
|
void (*mon_peer_tx_cleanup)(struct dp_vdev *vdev,
|
||||||
@@ -2432,6 +2433,28 @@ uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
|||||||
|
|
||||||
return monitor_ops->rx_mon_refill_buf_ring(int_ctx);
|
return monitor_ops->rx_mon_refill_buf_ring(int_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void dp_print_txmon_ring_stat_from_hal(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
struct dp_soc *soc = pdev->soc;
|
||||||
|
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||||
|
struct dp_mon_ops *monitor_ops;
|
||||||
|
|
||||||
|
if (!mon_soc) {
|
||||||
|
dp_mon_debug("monitor soc is NULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor_ops = mon_soc->mon_ops;
|
||||||
|
if (!monitor_ops || !monitor_ops->print_txmon_ring_stat) {
|
||||||
|
dp_mon_debug("callback not registered");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor_ops->print_txmon_ring_stat(pdev);
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
uint32_t dp_monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
uint32_t dp_monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||||
@@ -2458,6 +2481,11 @@ uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void dp_print_txmon_ring_stat_from_hal(struct dp_pdev *pdev)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user