qcacmn: Add history for REO queue descriptor events
Add history to log REO queue desc update and free events. Change-Id: If2992ff1256fad49ea4ea6bd90b6dfe4a63d2bc4 CRs-Fixed: 2926919
This commit is contained in:

committed by
Madan Koyyalamudi

parent
5d097b9e40
commit
26086e7971
@@ -41,6 +41,12 @@
|
||||
#include "dp_hist.h"
|
||||
#endif
|
||||
|
||||
#ifdef REO_QDESC_HISTORY
|
||||
#define REO_QDESC_HISTORY_SIZE 512
|
||||
uint64_t reo_qdesc_history_idx;
|
||||
struct reo_qdesc_event reo_qdesc_history[REO_QDESC_HISTORY_SIZE];
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_WDS
|
||||
static inline bool
|
||||
dp_peer_ast_free_in_unmap_supported(struct dp_soc *soc,
|
||||
@@ -77,6 +83,42 @@ static void dp_soc_wds_detach(struct dp_soc *soc)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef REO_QDESC_HISTORY
|
||||
static inline void
|
||||
dp_rx_reo_qdesc_history_add(struct reo_desc_list_node *free_desc,
|
||||
enum reo_qdesc_event_type type)
|
||||
{
|
||||
struct reo_qdesc_event *evt;
|
||||
struct dp_rx_tid *rx_tid = &free_desc->rx_tid;
|
||||
uint32_t idx;
|
||||
|
||||
reo_qdesc_history_idx++;
|
||||
idx = (reo_qdesc_history_idx & (REO_QDESC_HISTORY_SIZE - 1));
|
||||
|
||||
evt = &reo_qdesc_history[idx];
|
||||
|
||||
qdf_mem_copy(evt->peer_mac, free_desc->peer_mac, QDF_MAC_ADDR_SIZE);
|
||||
evt->qdesc_addr = rx_tid->hw_qdesc_paddr;
|
||||
evt->ts = qdf_get_log_timestamp();
|
||||
evt->type = type;
|
||||
}
|
||||
|
||||
#define DP_RX_REO_QDESC_GET_MAC(freedesc, peer) \
|
||||
qdf_mem_copy(freedesc->peer_mac, peer->mac_addr.raw, QDF_MAC_ADDR_SIZE)
|
||||
|
||||
#define DP_RX_REO_QDESC_UPDATE_EVT(free_desc) \
|
||||
dp_rx_reo_qdesc_history_add((free_desc), REO_QDESC_UPDATE_CB)
|
||||
|
||||
#define DP_RX_REO_QDESC_FREE_EVT(free_desc) \
|
||||
dp_rx_reo_qdesc_history_add((free_desc), REO_QDESC_FREE)
|
||||
#else
|
||||
#define DP_RX_REO_QDESC_GET_MAC(freedesc, peer)
|
||||
|
||||
#define DP_RX_REO_QDESC_UPDATE_EVT(free_desc)
|
||||
|
||||
#define DP_RX_REO_QDESC_FREE_EVT(free_desc)
|
||||
#endif
|
||||
|
||||
static inline void
|
||||
dp_set_ssn_valid_flag(struct hal_reo_cmd_params *params,
|
||||
uint8_t valid)
|
||||
@@ -2492,6 +2534,9 @@ static void dp_reo_desc_free(struct dp_soc *soc, void *cb_ctxt,
|
||||
dp_peer_info("%pK: %lu hw_qdesc_paddr: %pK, tid:%d", soc,
|
||||
curr_ts, (void *)(rx_tid->hw_qdesc_paddr),
|
||||
rx_tid->tid);
|
||||
|
||||
DP_RX_REO_QDESC_FREE_EVT(freedesc);
|
||||
|
||||
qdf_mem_unmap_nbytes_single(soc->osdev,
|
||||
rx_tid->hw_qdesc_paddr,
|
||||
QDF_DMA_BIDIRECTIONAL,
|
||||
@@ -2831,6 +2876,8 @@ void dp_rx_tid_delete_cb(struct dp_soc *soc, void *cb_ctxt,
|
||||
struct hal_reo_cmd_params params;
|
||||
bool flush_failure = false;
|
||||
|
||||
DP_RX_REO_QDESC_UPDATE_EVT(freedesc);
|
||||
|
||||
if (reo_status->rx_queue_status.header.status == HAL_REO_CMD_DRAIN) {
|
||||
qdf_mem_zero(reo_status, sizeof(*reo_status));
|
||||
reo_status->fl_cache_status.header.status = HAL_REO_CMD_DRAIN;
|
||||
@@ -2982,6 +3029,8 @@ static int dp_rx_tid_delete_wifi3(struct dp_peer *peer, int tid)
|
||||
|
||||
qdf_mem_zero(¶ms, sizeof(params));
|
||||
|
||||
DP_RX_REO_QDESC_GET_MAC(freedesc, peer);
|
||||
|
||||
params.std.need_status = 1;
|
||||
params.std.addr_lo = rx_tid->hw_qdesc_paddr & 0xffffffff;
|
||||
params.std.addr_hi = (uint64_t)(rx_tid->hw_qdesc_paddr) >> 32;
|
||||
|
Reference in New Issue
Block a user