@@ -5539,6 +5539,128 @@ ath12k_htt_print_pdev_rtt_tbr_cmd_res_stats_tlv(const void *tag_buf, u16 tag_len
55395539 stats_req -> buf_len = len ;
55405540}
55415541
5542+ static void
5543+ ath12k_htt_print_rx_pdev_fw_stats_tlv (const void * tag_buf , u16 tag_len ,
5544+ struct debug_htt_stats_req * stats_req )
5545+ {
5546+ const struct htt_rx_pdev_fw_stats_tlv * htt_stats_buf = tag_buf ;
5547+ u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE ;
5548+ u32 len = stats_req -> buf_len ;
5549+ u8 * buf = stats_req -> buf ;
5550+
5551+ if (tag_len < sizeof (* htt_stats_buf ))
5552+ return ;
5553+
5554+ len += scnprintf (buf + len , buf_len - len , "HTT_RX_PDEV_FW_STATS_TLV:\n" );
5555+ len += scnprintf (buf + len , buf_len - len , "mac_id = %u\n" ,
5556+ le32_to_cpu (htt_stats_buf -> mac_id__word ) & 0xFF );
5557+ len += scnprintf (buf + len , buf_len - len , "ppdu_recvd = %u\n" ,
5558+ le32_to_cpu (htt_stats_buf -> ppdu_recvd ));
5559+ len += scnprintf (buf + len , buf_len - len , "mpdu_cnt_fcs_ok = %u\n" ,
5560+ le32_to_cpu (htt_stats_buf -> mpdu_cnt_fcs_ok ));
5561+ len += scnprintf (buf + len , buf_len - len , "mpdu_cnt_fcs_err = %u\n" ,
5562+ le32_to_cpu (htt_stats_buf -> mpdu_cnt_fcs_err ));
5563+ len += scnprintf (buf + len , buf_len - len , "tcp_msdu_cnt = %u\n" ,
5564+ le32_to_cpu (htt_stats_buf -> tcp_msdu_cnt ));
5565+ len += scnprintf (buf + len , buf_len - len , "tcp_ack_msdu_cnt = %u\n" ,
5566+ le32_to_cpu (htt_stats_buf -> tcp_ack_msdu_cnt ));
5567+ len += scnprintf (buf + len , buf_len - len , "udp_msdu_cnt = %u\n" ,
5568+ le32_to_cpu (htt_stats_buf -> udp_msdu_cnt ));
5569+ len += scnprintf (buf + len , buf_len - len , "other_msdu_cnt = %u\n" ,
5570+ le32_to_cpu (htt_stats_buf -> other_msdu_cnt ));
5571+ len += scnprintf (buf + len , buf_len - len , "fw_ring_mpdu_ind = %u\n" ,
5572+ le32_to_cpu (htt_stats_buf -> fw_ring_mpdu_ind ));
5573+ len += print_array_to_buf (buf , len , "fw_ring_mgmt_subtype" ,
5574+ htt_stats_buf -> fw_ring_mgmt_subtype ,
5575+ ATH12K_HTT_STATS_SUBTYPE_MAX , "\n" );
5576+ len += print_array_to_buf (buf , len , "fw_ring_ctrl_subtype" ,
5577+ htt_stats_buf -> fw_ring_ctrl_subtype ,
5578+ ATH12K_HTT_STATS_SUBTYPE_MAX , "\n" );
5579+ len += scnprintf (buf + len , buf_len - len , "fw_ring_mcast_data_msdu = %u\n" ,
5580+ le32_to_cpu (htt_stats_buf -> fw_ring_mcast_data_msdu ));
5581+ len += scnprintf (buf + len , buf_len - len , "fw_ring_bcast_data_msdu = %u\n" ,
5582+ le32_to_cpu (htt_stats_buf -> fw_ring_bcast_data_msdu ));
5583+ len += scnprintf (buf + len , buf_len - len , "fw_ring_ucast_data_msdu = %u\n" ,
5584+ le32_to_cpu (htt_stats_buf -> fw_ring_ucast_data_msdu ));
5585+ len += scnprintf (buf + len , buf_len - len , "fw_ring_null_data_msdu = %u\n" ,
5586+ le32_to_cpu (htt_stats_buf -> fw_ring_null_data_msdu ));
5587+ len += scnprintf (buf + len , buf_len - len , "fw_ring_mpdu_drop = %u\n" ,
5588+ le32_to_cpu (htt_stats_buf -> fw_ring_mpdu_drop ));
5589+ len += scnprintf (buf + len , buf_len - len , "ofld_local_data_ind_cnt = %u\n" ,
5590+ le32_to_cpu (htt_stats_buf -> ofld_local_data_ind_cnt ));
5591+ len += scnprintf (buf + len , buf_len - len ,
5592+ "ofld_local_data_buf_recycle_cnt = %u\n" ,
5593+ le32_to_cpu (htt_stats_buf -> ofld_local_data_buf_recycle_cnt ));
5594+ len += scnprintf (buf + len , buf_len - len , "drx_local_data_ind_cnt = %u\n" ,
5595+ le32_to_cpu (htt_stats_buf -> drx_local_data_ind_cnt ));
5596+ len += scnprintf (buf + len , buf_len - len ,
5597+ "drx_local_data_buf_recycle_cnt = %u\n" ,
5598+ le32_to_cpu (htt_stats_buf -> drx_local_data_buf_recycle_cnt ));
5599+ len += scnprintf (buf + len , buf_len - len , "local_nondata_ind_cnt = %u\n" ,
5600+ le32_to_cpu (htt_stats_buf -> local_nondata_ind_cnt ));
5601+ len += scnprintf (buf + len , buf_len - len , "local_nondata_buf_recycle_cnt = %u\n" ,
5602+ le32_to_cpu (htt_stats_buf -> local_nondata_buf_recycle_cnt ));
5603+ len += scnprintf (buf + len , buf_len - len , "fw_status_buf_ring_refill_cnt = %u\n" ,
5604+ le32_to_cpu (htt_stats_buf -> fw_status_buf_ring_refill_cnt ));
5605+ len += scnprintf (buf + len , buf_len - len , "fw_status_buf_ring_empty_cnt = %u\n" ,
5606+ le32_to_cpu (htt_stats_buf -> fw_status_buf_ring_empty_cnt ));
5607+ len += scnprintf (buf + len , buf_len - len , "fw_pkt_buf_ring_refill_cnt = %u\n" ,
5608+ le32_to_cpu (htt_stats_buf -> fw_pkt_buf_ring_refill_cnt ));
5609+ len += scnprintf (buf + len , buf_len - len , "fw_pkt_buf_ring_empty_cnt = %u\n" ,
5610+ le32_to_cpu (htt_stats_buf -> fw_pkt_buf_ring_empty_cnt ));
5611+ len += scnprintf (buf + len , buf_len - len , "fw_link_buf_ring_refill_cnt = %u\n" ,
5612+ le32_to_cpu (htt_stats_buf -> fw_link_buf_ring_refill_cnt ));
5613+ len += scnprintf (buf + len , buf_len - len , "fw_link_buf_ring_empty_cnt = %u\n" ,
5614+ le32_to_cpu (htt_stats_buf -> fw_link_buf_ring_empty_cnt ));
5615+ len += scnprintf (buf + len , buf_len - len , "host_pkt_buf_ring_refill_cnt = %u\n" ,
5616+ le32_to_cpu (htt_stats_buf -> host_pkt_buf_ring_refill_cnt ));
5617+ len += scnprintf (buf + len , buf_len - len , "host_pkt_buf_ring_empty_cnt = %u\n" ,
5618+ le32_to_cpu (htt_stats_buf -> host_pkt_buf_ring_empty_cnt ));
5619+ len += scnprintf (buf + len , buf_len - len , "mon_pkt_buf_ring_refill_cnt = %u\n" ,
5620+ le32_to_cpu (htt_stats_buf -> mon_pkt_buf_ring_refill_cnt ));
5621+ len += scnprintf (buf + len , buf_len - len , "mon_pkt_buf_ring_empty_cnt = %u\n" ,
5622+ le32_to_cpu (htt_stats_buf -> mon_pkt_buf_ring_empty_cnt ));
5623+ len += scnprintf (buf + len , buf_len - len ,
5624+ "mon_status_buf_ring_refill_cnt = %u\n" ,
5625+ le32_to_cpu (htt_stats_buf -> mon_status_buf_ring_refill_cnt ));
5626+ len += scnprintf (buf + len , buf_len - len , "mon_status_buf_ring_empty_cnt = %u\n" ,
5627+ le32_to_cpu (htt_stats_buf -> mon_status_buf_ring_empty_cnt ));
5628+ len += scnprintf (buf + len , buf_len - len , "mon_desc_buf_ring_refill_cnt = %u\n" ,
5629+ le32_to_cpu (htt_stats_buf -> mon_desc_buf_ring_refill_cnt ));
5630+ len += scnprintf (buf + len , buf_len - len , "mon_desc_buf_ring_empty_cnt = %u\n" ,
5631+ le32_to_cpu (htt_stats_buf -> mon_desc_buf_ring_empty_cnt ));
5632+ len += scnprintf (buf + len , buf_len - len , "mon_dest_ring_update_cnt = %u\n" ,
5633+ le32_to_cpu (htt_stats_buf -> mon_dest_ring_update_cnt ));
5634+ len += scnprintf (buf + len , buf_len - len , "mon_dest_ring_full_cnt = %u\n" ,
5635+ le32_to_cpu (htt_stats_buf -> mon_dest_ring_full_cnt ));
5636+ len += scnprintf (buf + len , buf_len - len , "rx_suspend_cnt = %u\n" ,
5637+ le32_to_cpu (htt_stats_buf -> rx_suspend_cnt ));
5638+ len += scnprintf (buf + len , buf_len - len , "rx_suspend_fail_cnt = %u\n" ,
5639+ le32_to_cpu (htt_stats_buf -> rx_suspend_fail_cnt ));
5640+ len += scnprintf (buf + len , buf_len - len , "rx_resume_cnt = %u\n" ,
5641+ le32_to_cpu (htt_stats_buf -> rx_resume_cnt ));
5642+ len += scnprintf (buf + len , buf_len - len , "rx_resume_fail_cnt = %u\n" ,
5643+ le32_to_cpu (htt_stats_buf -> rx_resume_fail_cnt ));
5644+ len += scnprintf (buf + len , buf_len - len , "rx_ring_switch_cnt = %u\n" ,
5645+ le32_to_cpu (htt_stats_buf -> rx_ring_switch_cnt ));
5646+ len += scnprintf (buf + len , buf_len - len , "rx_ring_restore_cnt = %u\n" ,
5647+ le32_to_cpu (htt_stats_buf -> rx_ring_restore_cnt ));
5648+ len += scnprintf (buf + len , buf_len - len , "rx_flush_cnt = %u\n" ,
5649+ le32_to_cpu (htt_stats_buf -> rx_flush_cnt ));
5650+ len += scnprintf (buf + len , buf_len - len , "rx_recovery_reset_cnt = %u\n" ,
5651+ le32_to_cpu (htt_stats_buf -> rx_recovery_reset_cnt ));
5652+ len += scnprintf (buf + len , buf_len - len , "rx_lwm_prom_filter_dis = %u\n" ,
5653+ le32_to_cpu (htt_stats_buf -> rx_lwm_prom_filter_dis ));
5654+ len += scnprintf (buf + len , buf_len - len , "rx_hwm_prom_filter_en = %u\n" ,
5655+ le32_to_cpu (htt_stats_buf -> rx_hwm_prom_filter_en ));
5656+ len += scnprintf (buf + len , buf_len - len , "bytes_received_low_32 = %u\n" ,
5657+ le32_to_cpu (htt_stats_buf -> bytes_received_low_32 ));
5658+ len += scnprintf (buf + len , buf_len - len , "bytes_received_high_32 = %u\n" ,
5659+ le32_to_cpu (htt_stats_buf -> bytes_received_high_32 ));
5660+
5661+ stats_req -> buf_len = len ;
5662+ }
5663+
55425664static int ath12k_dbg_htt_ext_stats_parse (struct ath12k_base * ab ,
55435665 u16 tag , u16 len , const void * tag_buf ,
55445666 void * user_data )
@@ -5692,6 +5814,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
56925814 case HTT_STATS_SFM_CLIENT_USER_TAG :
56935815 ath12k_htt_print_sfm_client_user_tlv (tag_buf , len , stats_req );
56945816 break ;
5817+ case HTT_STATS_RX_PDEV_FW_STATS_TAG :
5818+ ath12k_htt_print_rx_pdev_fw_stats_tlv (tag_buf , len , stats_req );
5819+ break ;
56955820 case HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG :
56965821 ath12k_htt_print_tx_pdev_mu_mimo_sch_stats_tlv (tag_buf , len , stats_req );
56975822 break ;
0 commit comments