@@ -3522,6 +3522,104 @@ ath12k_htt_print_ast_entry_tlv(const void *tag_buf, u16 tag_len,
3522
3522
stats_req -> buf_len = len ;
3523
3523
}
3524
3524
3525
+ static const char *
3526
+ ath12k_htt_get_punct_dir_type_str (enum ath12k_htt_stats_direction direction )
3527
+ {
3528
+ switch (direction ) {
3529
+ case ATH12K_HTT_STATS_DIRECTION_TX :
3530
+ return "tx" ;
3531
+ case ATH12K_HTT_STATS_DIRECTION_RX :
3532
+ return "rx" ;
3533
+ default :
3534
+ return "unknown" ;
3535
+ }
3536
+ }
3537
+
3538
+ static const char *
3539
+ ath12k_htt_get_punct_ppdu_type_str (enum ath12k_htt_stats_ppdu_type ppdu_type )
3540
+ {
3541
+ switch (ppdu_type ) {
3542
+ case ATH12K_HTT_STATS_PPDU_TYPE_MODE_SU :
3543
+ return "su" ;
3544
+ case ATH12K_HTT_STATS_PPDU_TYPE_DL_MU_MIMO :
3545
+ return "dl_mu_mimo" ;
3546
+ case ATH12K_HTT_STATS_PPDU_TYPE_UL_MU_MIMO :
3547
+ return "ul_mu_mimo" ;
3548
+ case ATH12K_HTT_STATS_PPDU_TYPE_DL_MU_OFDMA :
3549
+ return "dl_mu_ofdma" ;
3550
+ case ATH12K_HTT_STATS_PPDU_TYPE_UL_MU_OFDMA :
3551
+ return "ul_mu_ofdma" ;
3552
+ default :
3553
+ return "unknown" ;
3554
+ }
3555
+ }
3556
+
3557
+ static const char *
3558
+ ath12k_htt_get_punct_pream_type_str (enum ath12k_htt_stats_param_type pream_type )
3559
+ {
3560
+ switch (pream_type ) {
3561
+ case ATH12K_HTT_STATS_PREAM_OFDM :
3562
+ return "ofdm" ;
3563
+ case ATH12K_HTT_STATS_PREAM_CCK :
3564
+ return "cck" ;
3565
+ case ATH12K_HTT_STATS_PREAM_HT :
3566
+ return "ht" ;
3567
+ case ATH12K_HTT_STATS_PREAM_VHT :
3568
+ return "ac" ;
3569
+ case ATH12K_HTT_STATS_PREAM_HE :
3570
+ return "ax" ;
3571
+ case ATH12K_HTT_STATS_PREAM_EHT :
3572
+ return "be" ;
3573
+ default :
3574
+ return "unknown" ;
3575
+ }
3576
+ }
3577
+
3578
+ static void
3579
+ ath12k_htt_print_puncture_stats_tlv (const void * tag_buf , u16 tag_len ,
3580
+ struct debug_htt_stats_req * stats_req )
3581
+ {
3582
+ const struct ath12k_htt_pdev_puncture_stats_tlv * stats_buf = tag_buf ;
3583
+ u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE ;
3584
+ u32 len = stats_req -> buf_len ;
3585
+ u8 * buf = stats_req -> buf ;
3586
+ const char * direction ;
3587
+ const char * ppdu_type ;
3588
+ const char * preamble ;
3589
+ u32 mac_id__word ;
3590
+ u32 subband_limit ;
3591
+ u8 i ;
3592
+
3593
+ if (tag_len < sizeof (* stats_buf ))
3594
+ return ;
3595
+
3596
+ mac_id__word = le32_to_cpu (stats_buf -> mac_id__word );
3597
+ subband_limit = min (le32_to_cpu (stats_buf -> subband_cnt ),
3598
+ ATH12K_HTT_PUNCT_STATS_MAX_SUBBAND_CNT );
3599
+
3600
+ direction = ath12k_htt_get_punct_dir_type_str (le32_to_cpu (stats_buf -> direction ));
3601
+ ppdu_type = ath12k_htt_get_punct_ppdu_type_str (le32_to_cpu (stats_buf -> ppdu_type ));
3602
+ preamble = ath12k_htt_get_punct_pream_type_str (le32_to_cpu (stats_buf -> preamble ));
3603
+
3604
+ len += scnprintf (buf + len , buf_len - len , "HTT_PDEV_PUNCTURE_STATS_TLV:\n" );
3605
+ len += scnprintf (buf + len , buf_len - len , "mac_id = %u\n" ,
3606
+ u32_get_bits (mac_id__word , ATH12K_HTT_STATS_MAC_ID ));
3607
+ len += scnprintf (buf + len , buf_len - len ,
3608
+ "%s_%s_%s_last_used_pattern_mask = 0x%08x\n" ,
3609
+ direction , preamble , ppdu_type ,
3610
+ le32_to_cpu (stats_buf -> last_used_pattern_mask ));
3611
+
3612
+ for (i = 0 ; i < subband_limit ; i ++ ) {
3613
+ len += scnprintf (buf + len , buf_len - len ,
3614
+ "%s_%s_%s_num_subbands_used_cnt_%02d = %u\n" ,
3615
+ direction , preamble , ppdu_type , i + 1 ,
3616
+ le32_to_cpu (stats_buf -> num_subbands_used_cnt [i ]));
3617
+ }
3618
+ len += scnprintf (buf + len , buf_len - len , "\n" );
3619
+
3620
+ stats_req -> buf_len = len ;
3621
+ }
3622
+
3525
3623
static void
3526
3624
ath12k_htt_print_dmac_reset_stats_tlv (const void * tag_buf , u16 tag_len ,
3527
3625
struct debug_htt_stats_req * stats_req )
@@ -3933,6 +4031,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
3933
4031
case HTT_STATS_AST_ENTRY_TAG :
3934
4032
ath12k_htt_print_ast_entry_tlv (tag_buf , len , stats_req );
3935
4033
break ;
4034
+ case HTT_STATS_PDEV_PUNCTURE_STATS_TAG :
4035
+ ath12k_htt_print_puncture_stats_tlv (tag_buf , len , stats_req );
4036
+ break ;
3936
4037
case HTT_STATS_DMAC_RESET_STATS_TAG :
3937
4038
ath12k_htt_print_dmac_reset_stats_tlv (tag_buf , len , stats_req );
3938
4039
break ;
0 commit comments