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
这个提交包含在:
@@ -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
|
||||
*
|
||||
|
在新工单中引用
屏蔽一个用户