@@ -574,6 +574,44 @@ int cudbg_collect_rss_vf_config(struct cudbg_init *pdbg_init,
574
574
return rc ;
575
575
}
576
576
577
+ int cudbg_collect_path_mtu (struct cudbg_init * pdbg_init ,
578
+ struct cudbg_buffer * dbg_buff ,
579
+ struct cudbg_error * cudbg_err )
580
+ {
581
+ struct adapter * padap = pdbg_init -> adap ;
582
+ struct cudbg_buffer temp_buff = { 0 };
583
+ int rc ;
584
+
585
+ rc = cudbg_get_buff (dbg_buff , NMTUS * sizeof (u16 ), & temp_buff );
586
+ if (rc )
587
+ return rc ;
588
+
589
+ t4_read_mtu_tbl (padap , (u16 * )temp_buff .data , NULL );
590
+ cudbg_write_and_release_buff (& temp_buff , dbg_buff );
591
+ return rc ;
592
+ }
593
+
594
+ int cudbg_collect_pm_stats (struct cudbg_init * pdbg_init ,
595
+ struct cudbg_buffer * dbg_buff ,
596
+ struct cudbg_error * cudbg_err )
597
+ {
598
+ struct adapter * padap = pdbg_init -> adap ;
599
+ struct cudbg_buffer temp_buff = { 0 };
600
+ struct cudbg_pm_stats * pm_stats_buff ;
601
+ int rc ;
602
+
603
+ rc = cudbg_get_buff (dbg_buff , sizeof (struct cudbg_pm_stats ),
604
+ & temp_buff );
605
+ if (rc )
606
+ return rc ;
607
+
608
+ pm_stats_buff = (struct cudbg_pm_stats * )temp_buff .data ;
609
+ t4_pmtx_get_stats (padap , pm_stats_buff -> tx_cnt , pm_stats_buff -> tx_cyc );
610
+ t4_pmrx_get_stats (padap , pm_stats_buff -> rx_cnt , pm_stats_buff -> rx_cyc );
611
+ cudbg_write_and_release_buff (& temp_buff , dbg_buff );
612
+ return rc ;
613
+ }
614
+
577
615
int cudbg_collect_hw_sched (struct cudbg_init * pdbg_init ,
578
616
struct cudbg_buffer * dbg_buff ,
579
617
struct cudbg_error * cudbg_err )
@@ -813,6 +851,55 @@ int cudbg_collect_cim_pif_la(struct cudbg_init *pdbg_init,
813
851
return rc ;
814
852
}
815
853
854
+ int cudbg_collect_clk_info (struct cudbg_init * pdbg_init ,
855
+ struct cudbg_buffer * dbg_buff ,
856
+ struct cudbg_error * cudbg_err )
857
+ {
858
+ struct adapter * padap = pdbg_init -> adap ;
859
+ struct cudbg_buffer temp_buff = { 0 };
860
+ struct cudbg_clk_info * clk_info_buff ;
861
+ u64 tp_tick_us ;
862
+ int rc ;
863
+
864
+ if (!padap -> params .vpd .cclk )
865
+ return CUDBG_STATUS_CCLK_NOT_DEFINED ;
866
+
867
+ rc = cudbg_get_buff (dbg_buff , sizeof (struct cudbg_clk_info ),
868
+ & temp_buff );
869
+ if (rc )
870
+ return rc ;
871
+
872
+ clk_info_buff = (struct cudbg_clk_info * )temp_buff .data ;
873
+ clk_info_buff -> cclk_ps = 1000000000 / padap -> params .vpd .cclk ; /* psec */
874
+ clk_info_buff -> res = t4_read_reg (padap , TP_TIMER_RESOLUTION_A );
875
+ clk_info_buff -> tre = TIMERRESOLUTION_G (clk_info_buff -> res );
876
+ clk_info_buff -> dack_re = DELAYEDACKRESOLUTION_G (clk_info_buff -> res );
877
+ tp_tick_us = (clk_info_buff -> cclk_ps << clk_info_buff -> tre ) / 1000000 ;
878
+
879
+ clk_info_buff -> dack_timer =
880
+ (clk_info_buff -> cclk_ps << clk_info_buff -> dack_re ) / 1000000 *
881
+ t4_read_reg (padap , TP_DACK_TIMER_A );
882
+ clk_info_buff -> retransmit_min =
883
+ tp_tick_us * t4_read_reg (padap , TP_RXT_MIN_A );
884
+ clk_info_buff -> retransmit_max =
885
+ tp_tick_us * t4_read_reg (padap , TP_RXT_MAX_A );
886
+ clk_info_buff -> persist_timer_min =
887
+ tp_tick_us * t4_read_reg (padap , TP_PERS_MIN_A );
888
+ clk_info_buff -> persist_timer_max =
889
+ tp_tick_us * t4_read_reg (padap , TP_PERS_MAX_A );
890
+ clk_info_buff -> keepalive_idle_timer =
891
+ tp_tick_us * t4_read_reg (padap , TP_KEEP_IDLE_A );
892
+ clk_info_buff -> keepalive_interval =
893
+ tp_tick_us * t4_read_reg (padap , TP_KEEP_INTVL_A );
894
+ clk_info_buff -> initial_srtt =
895
+ tp_tick_us * INITSRTT_G (t4_read_reg (padap , TP_INIT_SRTT_A ));
896
+ clk_info_buff -> finwait2_timer =
897
+ tp_tick_us * t4_read_reg (padap , TP_FINWAIT2_TIMER_A );
898
+
899
+ cudbg_write_and_release_buff (& temp_buff , dbg_buff );
900
+ return rc ;
901
+ }
902
+
816
903
int cudbg_collect_pcie_indirect (struct cudbg_init * pdbg_init ,
817
904
struct cudbg_buffer * dbg_buff ,
818
905
struct cudbg_error * cudbg_err )
@@ -1196,6 +1283,54 @@ int cudbg_collect_mps_tcam(struct cudbg_init *pdbg_init,
1196
1283
return rc ;
1197
1284
}
1198
1285
1286
+ int cudbg_collect_vpd_data (struct cudbg_init * pdbg_init ,
1287
+ struct cudbg_buffer * dbg_buff ,
1288
+ struct cudbg_error * cudbg_err )
1289
+ {
1290
+ struct adapter * padap = pdbg_init -> adap ;
1291
+ struct cudbg_buffer temp_buff = { 0 };
1292
+ struct cudbg_vpd_data * vpd_data ;
1293
+ int rc ;
1294
+
1295
+ rc = cudbg_get_buff (dbg_buff , sizeof (struct cudbg_vpd_data ),
1296
+ & temp_buff );
1297
+ if (rc )
1298
+ return rc ;
1299
+
1300
+ vpd_data = (struct cudbg_vpd_data * )temp_buff .data ;
1301
+ memcpy (vpd_data -> sn , padap -> params .vpd .sn , SERNUM_LEN + 1 );
1302
+ memcpy (vpd_data -> bn , padap -> params .vpd .pn , PN_LEN + 1 );
1303
+ memcpy (vpd_data -> na , padap -> params .vpd .na , MACADDR_LEN + 1 );
1304
+ memcpy (vpd_data -> mn , padap -> params .vpd .id , ID_LEN + 1 );
1305
+ vpd_data -> scfg_vers = padap -> params .scfg_vers ;
1306
+ vpd_data -> vpd_vers = padap -> params .vpd_vers ;
1307
+ vpd_data -> fw_major = FW_HDR_FW_VER_MAJOR_G (padap -> params .fw_vers );
1308
+ vpd_data -> fw_minor = FW_HDR_FW_VER_MINOR_G (padap -> params .fw_vers );
1309
+ vpd_data -> fw_micro = FW_HDR_FW_VER_MICRO_G (padap -> params .fw_vers );
1310
+ vpd_data -> fw_build = FW_HDR_FW_VER_BUILD_G (padap -> params .fw_vers );
1311
+ cudbg_write_and_release_buff (& temp_buff , dbg_buff );
1312
+ return rc ;
1313
+ }
1314
+
1315
+ int cudbg_collect_cctrl (struct cudbg_init * pdbg_init ,
1316
+ struct cudbg_buffer * dbg_buff ,
1317
+ struct cudbg_error * cudbg_err )
1318
+ {
1319
+ struct adapter * padap = pdbg_init -> adap ;
1320
+ struct cudbg_buffer temp_buff = { 0 };
1321
+ u32 size ;
1322
+ int rc ;
1323
+
1324
+ size = sizeof (u16 ) * NMTUS * NCCTRL_WIN ;
1325
+ rc = cudbg_get_buff (dbg_buff , size , & temp_buff );
1326
+ if (rc )
1327
+ return rc ;
1328
+
1329
+ t4_read_cong_tbl (padap , (void * )temp_buff .data );
1330
+ cudbg_write_and_release_buff (& temp_buff , dbg_buff );
1331
+ return rc ;
1332
+ }
1333
+
1199
1334
int cudbg_collect_ma_indirect (struct cudbg_init * pdbg_init ,
1200
1335
struct cudbg_buffer * dbg_buff ,
1201
1336
struct cudbg_error * cudbg_err )
0 commit comments