qcacmn: qref debug memory tracker

add multiple history array to keep track of mem allocation and
deallocation for qref table.

Change-Id: I9fa97fbe5a5c36509cbb5a458851a152200318a5
CRs-Fixed: 3475981
このコミットが含まれているのは:
Ruben Columbus
2023-05-22 16:42:02 -07:00
committed by Rahul Choudhary
コミット d8334769f4
8個のファイルの変更236行の追加1行の削除

ファイルの表示

@@ -48,6 +48,84 @@
__QDF_TRACE_FL(QDF_TRACE_LEVEL_INFO_HIGH, QDF_MODULE_ID_DP_PEER, ## params)
#define dp_peer_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_DP_PEER, params)
void check_free_list_for_invalid_flush(struct dp_soc *soc);
static inline
void add_entry_alloc_list(struct dp_soc *soc, struct dp_rx_tid *rx_tid,
struct dp_peer *peer, void *hw_qdesc_vaddr)
{
uint32_t max_list_size;
unsigned long curr_ts = qdf_get_system_timestamp();
uint32_t qref_index = soc->free_addr_list_idx;
max_list_size = soc->wlan_cfg_ctx->qref_control_size;
if (max_list_size == 0)
return;
soc->list_qdesc_addr_alloc[qref_index].hw_qdesc_paddr =
rx_tid->hw_qdesc_paddr;
soc->list_qdesc_addr_alloc[qref_index].ts_qdesc_mem_hdl = curr_ts;
soc->list_qdesc_addr_alloc[qref_index].hw_qdesc_vaddr_align =
hw_qdesc_vaddr;
soc->list_qdesc_addr_alloc[qref_index].hw_qdesc_vaddr_unalign =
rx_tid->hw_qdesc_vaddr_unaligned;
soc->list_qdesc_addr_alloc[qref_index].peer_id = peer->peer_id;
soc->list_qdesc_addr_alloc[qref_index].tid = rx_tid->tid;
soc->alloc_addr_list_idx++;
if (soc->alloc_addr_list_idx == max_list_size)
soc->alloc_addr_list_idx = 0;
}
static inline
void add_entry_free_list(struct dp_soc *soc, struct dp_rx_tid *rx_tid)
{
uint32_t max_list_size;
unsigned long curr_ts = qdf_get_system_timestamp();
uint32_t qref_index = soc->free_addr_list_idx;
max_list_size = soc->wlan_cfg_ctx->qref_control_size;
if (max_list_size == 0)
return;
soc->list_qdesc_addr_free[qref_index].ts_qdesc_mem_hdl = curr_ts;
soc->list_qdesc_addr_free[qref_index].hw_qdesc_paddr =
rx_tid->hw_qdesc_paddr;
soc->list_qdesc_addr_free[qref_index].hw_qdesc_vaddr_align =
rx_tid->hw_qdesc_vaddr_aligned;
soc->list_qdesc_addr_free[qref_index].hw_qdesc_vaddr_unalign =
rx_tid->hw_qdesc_vaddr_unaligned;
soc->free_addr_list_idx++;
if (soc->free_addr_list_idx == max_list_size)
soc->free_addr_list_idx = 0;
}
static inline
void add_entry_write_list(struct dp_soc *soc, struct dp_peer *peer,
uint32_t tid)
{
uint32_t max_list_size;
unsigned long curr_ts = qdf_get_system_timestamp();
max_list_size = soc->wlan_cfg_ctx->qref_control_size;
if (max_list_size == 0)
return;
soc->reo_write_list[soc->write_paddr_list_idx].ts_qaddr_del = curr_ts;
soc->reo_write_list[soc->write_paddr_list_idx].peer_id = peer->peer_id;
soc->reo_write_list[soc->write_paddr_list_idx].paddr =
peer->rx_tid[tid].hw_qdesc_paddr;
soc->reo_write_list[soc->write_paddr_list_idx].tid = tid;
soc->write_paddr_list_idx++;
if (soc->write_paddr_list_idx == max_list_size)
soc->write_paddr_list_idx = 0;
}
#ifdef REO_QDESC_HISTORY
enum reo_qdesc_event_type {
REO_QDESC_UPDATE_CB = 0,