@@ -3469,6 +3469,59 @@ ath12k_htt_print_tx_per_rate_stats_tlv(const void *tag_buf, u16 tag_len,
3469
3469
stats_req -> buf_len = len ;
3470
3470
}
3471
3471
3472
+ static void
3473
+ ath12k_htt_print_ast_entry_tlv (const void * tag_buf , u16 tag_len ,
3474
+ struct debug_htt_stats_req * stats_req )
3475
+ {
3476
+ const struct ath12k_htt_ast_entry_tlv * htt_stats_buf = tag_buf ;
3477
+ u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE ;
3478
+ u32 len = stats_req -> buf_len ;
3479
+ u8 * buf = stats_req -> buf ;
3480
+ u32 mac_addr_l32 ;
3481
+ u32 mac_addr_h16 ;
3482
+ u32 ast_info ;
3483
+
3484
+ if (tag_len < sizeof (* htt_stats_buf ))
3485
+ return ;
3486
+
3487
+ mac_addr_l32 = le32_to_cpu (htt_stats_buf -> mac_addr .mac_addr_l32 );
3488
+ mac_addr_h16 = le32_to_cpu (htt_stats_buf -> mac_addr .mac_addr_h16 );
3489
+ ast_info = le32_to_cpu (htt_stats_buf -> info );
3490
+
3491
+ len += scnprintf (buf + len , buf_len - len , "HTT_AST_ENTRY_TLV:\n" );
3492
+ len += scnprintf (buf + len , buf_len - len , "ast_index = %u\n" ,
3493
+ le32_to_cpu (htt_stats_buf -> ast_index ));
3494
+ len += scnprintf (buf + len , buf_len - len ,
3495
+ "mac_addr = %02x:%02x:%02x:%02x:%02x:%02x\n" ,
3496
+ u32_get_bits (mac_addr_l32 , ATH12K_HTT_MAC_ADDR_L32_0 ),
3497
+ u32_get_bits (mac_addr_l32 , ATH12K_HTT_MAC_ADDR_L32_1 ),
3498
+ u32_get_bits (mac_addr_l32 , ATH12K_HTT_MAC_ADDR_L32_2 ),
3499
+ u32_get_bits (mac_addr_l32 , ATH12K_HTT_MAC_ADDR_L32_3 ),
3500
+ u32_get_bits (mac_addr_h16 , ATH12K_HTT_MAC_ADDR_H16_0 ),
3501
+ u32_get_bits (mac_addr_h16 , ATH12K_HTT_MAC_ADDR_H16_1 ));
3502
+
3503
+ len += scnprintf (buf + len , buf_len - len , "sw_peer_id = %u\n" ,
3504
+ le32_to_cpu (htt_stats_buf -> sw_peer_id ));
3505
+ len += scnprintf (buf + len , buf_len - len , "pdev_id = %u\n" ,
3506
+ u32_get_bits (ast_info , ATH12K_HTT_AST_PDEV_ID_INFO ));
3507
+ len += scnprintf (buf + len , buf_len - len , "vdev_id = %u\n" ,
3508
+ u32_get_bits (ast_info , ATH12K_HTT_AST_VDEV_ID_INFO ));
3509
+ len += scnprintf (buf + len , buf_len - len , "next_hop = %u\n" ,
3510
+ u32_get_bits (ast_info , ATH12K_HTT_AST_NEXT_HOP_INFO ));
3511
+ len += scnprintf (buf + len , buf_len - len , "mcast = %u\n" ,
3512
+ u32_get_bits (ast_info , ATH12K_HTT_AST_MCAST_INFO ));
3513
+ len += scnprintf (buf + len , buf_len - len , "monitor_direct = %u\n" ,
3514
+ u32_get_bits (ast_info , ATH12K_HTT_AST_MONITOR_DIRECT_INFO ));
3515
+ len += scnprintf (buf + len , buf_len - len , "mesh_sta = %u\n" ,
3516
+ u32_get_bits (ast_info , ATH12K_HTT_AST_MESH_STA_INFO ));
3517
+ len += scnprintf (buf + len , buf_len - len , "mec = %u\n" ,
3518
+ u32_get_bits (ast_info , ATH12K_HTT_AST_MEC_INFO ));
3519
+ len += scnprintf (buf + len , buf_len - len , "intra_bss = %u\n\n" ,
3520
+ u32_get_bits (ast_info , ATH12K_HTT_AST_INTRA_BSS_INFO ));
3521
+
3522
+ stats_req -> buf_len = len ;
3523
+ }
3524
+
3472
3525
static void
3473
3526
ath12k_htt_print_dmac_reset_stats_tlv (const void * tag_buf , u16 tag_len ,
3474
3527
struct debug_htt_stats_req * stats_req )
@@ -3877,6 +3930,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
3877
3930
case HTT_STATS_PER_RATE_STATS_TAG :
3878
3931
ath12k_htt_print_tx_per_rate_stats_tlv (tag_buf , len , stats_req );
3879
3932
break ;
3933
+ case HTT_STATS_AST_ENTRY_TAG :
3934
+ ath12k_htt_print_ast_entry_tlv (tag_buf , len , stats_req );
3935
+ break ;
3880
3936
case HTT_STATS_DMAC_RESET_STATS_TAG :
3881
3937
ath12k_htt_print_dmac_reset_stats_tlv (tag_buf , len , stats_req );
3882
3938
break ;
0 commit comments