qcacmn: Enable REO queue stats
Query REO queue stats from HW and print as part of host peer stats. Change-Id: I817be3b293e684f0fa3a0b3154f618de0245681f CRs-Fixed: 2057908
This commit is contained in:

committed by
snandini

parent
a3088d9a34
commit
93f633c394
@@ -284,4 +284,5 @@ QDF_STATUS dp_h2t_ext_stats_msg_send(struct dp_pdev *pdev,
|
||||
uint32_t config_param_1, uint32_t config_param_2,
|
||||
uint32_t config_param_3);
|
||||
void dp_htt_stats_print_tag(uint8_t tag_type, uint32_t *tag_buf);
|
||||
int dp_peer_rxtid_stats(struct dp_peer *peer);
|
||||
#endif /* #ifndef _DP_INTERNAL_H_ */
|
||||
|
@@ -3373,7 +3373,14 @@ dp_get_host_peer_stats(struct cdp_pdev *pdev_handle, char *mac_addr)
|
||||
peer = (struct dp_peer *)dp_find_peer_by_addr(pdev_handle, mac_addr,
|
||||
&local_id);
|
||||
|
||||
if (!peer) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Invalid peer\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
dp_print_peer_stats(peer);
|
||||
dp_peer_rxtid_stats(peer);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3416,6 +3423,7 @@ dp_get_fw_peer_stats(struct cdp_pdev *pdev_handle, uint8_t *mac_addr,
|
||||
dp_h2t_ext_stats_msg_send(pdev, HTT_DBG_EXT_STATS_PEER_INFO,
|
||||
config_param0, config_param1, config_param2,
|
||||
config_param3);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -318,6 +318,69 @@ int dp_peer_find_attach(struct dp_soc *soc)
|
||||
return 0; /* success */
|
||||
}
|
||||
|
||||
static void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status)
|
||||
{
|
||||
struct dp_rx_tid *rx_tid = (struct dp_rx_tid *)cb_ctxt;
|
||||
struct hal_reo_queue_status *queue_status = &(reo_status->queue_status);
|
||||
|
||||
if (queue_status->header.status != HAL_REO_CMD_SUCCESS) {
|
||||
DP_TRACE_STATS(FATAL, "REO stats failure %d for TID %d\n",
|
||||
queue_status->header.status, rx_tid->tid);
|
||||
return;
|
||||
}
|
||||
|
||||
DP_TRACE_STATS(FATAL, "REO queue stats (TID: %d): \n"
|
||||
"ssn: %d\n"
|
||||
"curr_idx : %d\n"
|
||||
"pn_31_0 : %08x\n"
|
||||
"pn_63_32 : %08x\n"
|
||||
"pn_95_64 : %08x\n"
|
||||
"pn_127_96 : %08x\n"
|
||||
"last_rx_enq_tstamp : %08x\n"
|
||||
"last_rx_deq_tstamp : %08x\n"
|
||||
"rx_bitmap_31_0 : %08x\n"
|
||||
"rx_bitmap_63_32 : %08x\n"
|
||||
"rx_bitmap_95_64 : %08x\n"
|
||||
"rx_bitmap_127_96 : %08x\n"
|
||||
"rx_bitmap_159_128 : %08x\n"
|
||||
"rx_bitmap_191_160 : %08x\n"
|
||||
"rx_bitmap_223_192 : %08x\n"
|
||||
"rx_bitmap_255_224 : %08x\n"
|
||||
"curr_mpdu_cnt : %d\n"
|
||||
"curr_msdu_cnt : %d\n"
|
||||
"fwd_timeout_cnt : %d\n"
|
||||
"fwd_bar_cnt : %d\n"
|
||||
"dup_cnt : %d\n"
|
||||
"frms_in_order_cnt : %d\n"
|
||||
"bar_rcvd_cnt : %d\n"
|
||||
"mpdu_frms_cnt : %d\n"
|
||||
"msdu_frms_cnt : %d\n"
|
||||
"total_byte_cnt : %d\n"
|
||||
"late_recv_mpdu_cnt : %d\n"
|
||||
"win_jump_2k : %d\n"
|
||||
"hole_cnt : %d\n",
|
||||
rx_tid->tid,
|
||||
queue_status->ssn, queue_status->curr_idx,
|
||||
queue_status->pn_31_0, queue_status->pn_63_32,
|
||||
queue_status->pn_95_64, queue_status->pn_127_96,
|
||||
queue_status->last_rx_enq_tstamp,
|
||||
queue_status->last_rx_deq_tstamp,
|
||||
queue_status->rx_bitmap_31_0, queue_status->rx_bitmap_63_32,
|
||||
queue_status->rx_bitmap_95_64, queue_status->rx_bitmap_127_96,
|
||||
queue_status->rx_bitmap_159_128,
|
||||
queue_status->rx_bitmap_191_160,
|
||||
queue_status->rx_bitmap_223_192,
|
||||
queue_status->rx_bitmap_255_224,
|
||||
queue_status->curr_mpdu_cnt, queue_status->curr_msdu_cnt,
|
||||
queue_status->fwd_timeout_cnt, queue_status->fwd_bar_cnt,
|
||||
queue_status->dup_cnt, queue_status->frms_in_order_cnt,
|
||||
queue_status->bar_rcvd_cnt, queue_status->mpdu_frms_cnt,
|
||||
queue_status->msdu_frms_cnt, queue_status->total_cnt,
|
||||
queue_status->late_recv_mpdu_cnt, queue_status->win_jump_2k,
|
||||
queue_status->hole_cnt);
|
||||
}
|
||||
|
||||
static inline void dp_peer_find_add_id(struct dp_soc *soc,
|
||||
uint8_t *peer_mac_addr, uint16_t peer_id, uint16_t hw_peer_id,
|
||||
uint8_t vdev_id)
|
||||
@@ -1536,3 +1599,31 @@ uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
|
||||
qdf_mem_copy(peer_mac, peer->mac_addr.raw, 6);
|
||||
return peer->vdev->vdev_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_rxtid_stats: Retried Rx TID (REO queue) stats from HW
|
||||
* @peer: DP peer handle
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_peer_rxtid_stats(struct dp_peer *peer)
|
||||
{
|
||||
struct dp_soc *soc = peer->vdev->pdev->soc;
|
||||
struct hal_reo_cmd_params params;
|
||||
int i;
|
||||
|
||||
qdf_mem_zero(¶ms, sizeof(params));
|
||||
for (i = 0; i < DP_MAX_TIDS; i++) {
|
||||
struct dp_rx_tid *rx_tid = &peer->rx_tid[i];
|
||||
if (rx_tid->hw_qdesc_vaddr_unaligned != NULL) {
|
||||
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;
|
||||
dp_reo_send_cmd(soc, CMD_GET_QUEUE_STATS, ¶ms,
|
||||
dp_rx_tid_stats_cb, rx_tid);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@@ -136,7 +136,8 @@ enum reo_thres_index_reg {
|
||||
enum reo_cmd_exec_status {
|
||||
HAL_REO_CMD_SUCCESS = 0,
|
||||
HAL_REO_CMD_BLOCKED = 1,
|
||||
HAL_REO_CMD_FAILED = 2
|
||||
HAL_REO_CMD_FAILED = 2,
|
||||
HAL_REO_CMD_RESOURCE_BLOCKED = 3
|
||||
};
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user