@@ -5539,6 +5539,189 @@ 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+
5664+ static void
5665+ ath12k_htt_print_tx_hwq_stats_cmn_tlv (const void * tag_buf , u16 tag_len ,
5666+ struct debug_htt_stats_req * stats_req )
5667+ {
5668+ const struct htt_tx_hwq_stats_cmn_tlv * htt_stats_buf = tag_buf ;
5669+ u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE ;
5670+ u32 len = stats_req -> buf_len ;
5671+ u8 * buf = stats_req -> buf ;
5672+
5673+ if (tag_len < sizeof (* htt_stats_buf ))
5674+ return ;
5675+
5676+ len += scnprintf (buf + len , buf_len - len , "HTT_TX_HWQ_STATS_CMN_TLV:\n" );
5677+ len += scnprintf (buf + len , buf_len - len , "mac_id = %u\n" ,
5678+ le32_to_cpu (htt_stats_buf -> mac_id__hwq_id__word ) & 0xFF );
5679+ len += scnprintf (buf + len , buf_len - len , "hwq_id = %u\n" ,
5680+ (le32_to_cpu (htt_stats_buf -> mac_id__hwq_id__word ) & 0xFF00 ) >> 8 );
5681+ len += scnprintf (buf + len , buf_len - len , "xretry = %u\n" ,
5682+ le32_to_cpu (htt_stats_buf -> xretry ));
5683+ len += scnprintf (buf + len , buf_len - len , "underrun_cnt = %u\n" ,
5684+ le32_to_cpu (htt_stats_buf -> underrun_cnt ));
5685+ len += scnprintf (buf + len , buf_len - len , "flush_cnt = %u\n" ,
5686+ le32_to_cpu (htt_stats_buf -> flush_cnt ));
5687+ len += scnprintf (buf + len , buf_len - len , "filt_cnt = %u\n" ,
5688+ le32_to_cpu (htt_stats_buf -> filt_cnt ));
5689+ len += scnprintf (buf + len , buf_len - len , "null_mpdu_bmap = %u\n" ,
5690+ le32_to_cpu (htt_stats_buf -> null_mpdu_bmap ));
5691+ len += scnprintf (buf + len , buf_len - len , "user_ack_failure = %u\n" ,
5692+ le32_to_cpu (htt_stats_buf -> user_ack_failure ));
5693+ len += scnprintf (buf + len , buf_len - len , "ack_tlv_proc = %u\n" ,
5694+ le32_to_cpu (htt_stats_buf -> ack_tlv_proc ));
5695+ len += scnprintf (buf + len , buf_len - len , "sched_id_proc = %u\n" ,
5696+ le32_to_cpu (htt_stats_buf -> sched_id_proc ));
5697+ len += scnprintf (buf + len , buf_len - len , "null_mpdu_tx_count = %u\n" ,
5698+ le32_to_cpu (htt_stats_buf -> null_mpdu_tx_count ));
5699+ len += scnprintf (buf + len , buf_len - len , "mpdu_bmap_not_recvd = %u\n" ,
5700+ le32_to_cpu (htt_stats_buf -> mpdu_bmap_not_recvd ));
5701+ len += scnprintf (buf + len , buf_len - len , "num_bar = %u\n" ,
5702+ le32_to_cpu (htt_stats_buf -> num_bar ));
5703+ len += scnprintf (buf + len , buf_len - len , "rts = %u\n" ,
5704+ le32_to_cpu (htt_stats_buf -> rts ));
5705+ len += scnprintf (buf + len , buf_len - len , "cts2self = %u\n" ,
5706+ le32_to_cpu (htt_stats_buf -> cts2self ));
5707+ len += scnprintf (buf + len , buf_len - len , "qos_null = %u\n" ,
5708+ le32_to_cpu (htt_stats_buf -> qos_null ));
5709+ len += scnprintf (buf + len , buf_len - len , "mpdu_tried_cnt = %u\n" ,
5710+ le32_to_cpu (htt_stats_buf -> mpdu_tried_cnt ));
5711+ len += scnprintf (buf + len , buf_len - len , "mpdu_queued_cnt = %u\n" ,
5712+ le32_to_cpu (htt_stats_buf -> mpdu_queued_cnt ));
5713+ len += scnprintf (buf + len , buf_len - len , "mpdu_ack_fail_cnt = %u\n" ,
5714+ le32_to_cpu (htt_stats_buf -> mpdu_ack_fail_cnt ));
5715+ len += scnprintf (buf + len , buf_len - len , "mpdu_filt_cnt = %u\n" ,
5716+ le32_to_cpu (htt_stats_buf -> mpdu_filt_cnt ));
5717+ len += scnprintf (buf + len , buf_len - len , "false_mpdu_ack_count = %u\n" ,
5718+ le32_to_cpu (htt_stats_buf -> false_mpdu_ack_count ));
5719+ len += scnprintf (buf + len , buf_len - len , "txq_timeout = %u\n" ,
5720+ le32_to_cpu (htt_stats_buf -> txq_timeout ));
5721+
5722+ stats_req -> buf_len = len ;
5723+ }
5724+
55425725static int ath12k_dbg_htt_ext_stats_parse (struct ath12k_base * ab ,
55435726 u16 tag , u16 len , const void * tag_buf ,
55445727 void * user_data )
@@ -5692,6 +5875,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
56925875 case HTT_STATS_SFM_CLIENT_USER_TAG :
56935876 ath12k_htt_print_sfm_client_user_tlv (tag_buf , len , stats_req );
56945877 break ;
5878+ case HTT_STATS_RX_PDEV_FW_STATS_TAG :
5879+ ath12k_htt_print_rx_pdev_fw_stats_tlv (tag_buf , len , stats_req );
5880+ break ;
56955881 case HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG :
56965882 ath12k_htt_print_tx_pdev_mu_mimo_sch_stats_tlv (tag_buf , len , stats_req );
56975883 break ;
@@ -5835,6 +6021,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
58356021 case HTT_STATS_PDEV_RTT_TBR_CMD_RESULT_STATS_TAG :
58366022 ath12k_htt_print_pdev_rtt_tbr_cmd_res_stats_tlv (tag_buf , len , stats_req );
58376023 break ;
6024+ case HTT_STATS_TX_HWQ_CMN_TAG :
6025+ ath12k_htt_print_tx_hwq_stats_cmn_tlv (tag_buf , len , stats_req );
6026+ break ;
58386027 default :
58396028 break ;
58406029 }
0 commit comments