qcacmn: Dump the rx reo queue descs in ddr

Add iwpriv option 34 to dump the reo rx h/w descs
in DDR for debugging. This cmd will first send cache
flush cmd to REO for all rx tids and invalidate the h/w
cache. Henceforth ensuring that the reo status tlvs and
the DDR values are in sync.
iwpriv wlan0 txrx_stats 34 0
Add fix to ensure bar frame with 2k jump err code is
processed correctly using the REO error code instead of the
REO push reason.

Change-Id: Ia05be668343f3a5d4b3262b8d6a367a50875add5
CRs-Fixed: 2895965
这个提交包含在:
Nisha Menon
2021-02-25 23:04:14 -08:00
提交者 snandini
父节点 fe6b1dc264
当前提交 5d7e26e27f
修改 9 个文件,包含 254 行新增14 行删除

查看文件

@@ -27,6 +27,10 @@
#include "hif_io32.h"
#include "qdf_platform.h"
#ifdef DUMP_REO_QUEUE_INFO_IN_DDR
#include "hal_hw_headers.h"
#endif
/* Ring index for WBM2SW2 release ring */
#define HAL_IPA_TX_COMP_RING_IDX 2
@@ -2488,6 +2492,78 @@ void hal_setup_link_idle_list(hal_soc_handle_t hal_soc_hdl,
}
#ifdef DUMP_REO_QUEUE_INFO_IN_DDR
/**
* hal_dump_rx_reo_queue_desc() - Dump reo queue descriptor fields
* @hw_qdesc_vaddr_aligned: Pointer to hw reo queue desc virtual addr
*
* Use the virtual addr pointer to reo h/w queue desc to read
* the values from ddr and log them.
*
* Return: none
*/
static inline void hal_dump_rx_reo_queue_desc(
void *hw_qdesc_vaddr_aligned)
{
struct rx_reo_queue *hw_qdesc =
(struct rx_reo_queue *)hw_qdesc_vaddr_aligned;
if (!hw_qdesc)
return;
hal_info("receive_queue_number %u vld %u window_jump_2k %u"
" hole_count %u ba_window_size %u ignore_ampdu_flag %u"
" svld %u ssn %u current_index %u"
" disable_duplicate_detection %u soft_reorder_enable %u"
" chk_2k_mode %u oor_mode %u mpdu_frames_processed_count %u"
" msdu_frames_processed_count %u total_processed_byte_count %u"
" late_receive_mpdu_count %u seq_2k_error_detected_flag %u"
" pn_error_detected_flag %u current_mpdu_count %u"
" current_msdu_count %u timeout_count %u"
" forward_due_to_bar_count %u duplicate_count %u"
" frames_in_order_count %u bar_received_count %u"
" pn_check_needed %u pn_shall_be_even %u"
" pn_shall_be_uneven %u pn_size %u",
hw_qdesc->receive_queue_number,
hw_qdesc->vld,
hw_qdesc->window_jump_2k,
hw_qdesc->hole_count,
hw_qdesc->ba_window_size,
hw_qdesc->ignore_ampdu_flag,
hw_qdesc->svld,
hw_qdesc->ssn,
hw_qdesc->current_index,
hw_qdesc->disable_duplicate_detection,
hw_qdesc->soft_reorder_enable,
hw_qdesc->chk_2k_mode,
hw_qdesc->oor_mode,
hw_qdesc->mpdu_frames_processed_count,
hw_qdesc->msdu_frames_processed_count,
hw_qdesc->total_processed_byte_count,
hw_qdesc->late_receive_mpdu_count,
hw_qdesc->seq_2k_error_detected_flag,
hw_qdesc->pn_error_detected_flag,
hw_qdesc->current_mpdu_count,
hw_qdesc->current_msdu_count,
hw_qdesc->timeout_count,
hw_qdesc->forward_due_to_bar_count,
hw_qdesc->duplicate_count,
hw_qdesc->frames_in_order_count,
hw_qdesc->bar_received_count,
hw_qdesc->pn_check_needed,
hw_qdesc->pn_shall_be_even,
hw_qdesc->pn_shall_be_uneven,
hw_qdesc->pn_size);
}
#else /* DUMP_REO_QUEUE_INFO_IN_DDR */
static inline void hal_dump_rx_reo_queue_desc(
void *hw_qdesc_vaddr_aligned)
{
}
#endif /* DUMP_REO_QUEUE_INFO_IN_DDR */
/**
* hal_srng_dump_ring_desc() - Dump ring descriptor info
*