5
5
#include "params.h"
6
6
#include "txrx.h"
7
7
#include "devlink.h"
8
+ #include "ptp.h"
8
9
9
10
static int mlx5e_query_rq_state (struct mlx5_core_dev * dev , u32 rqn , u8 * state )
10
11
{
@@ -351,12 +352,34 @@ static int mlx5e_rx_reporter_diagnose_generic_rq(struct mlx5e_rq *rq,
351
352
return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
352
353
}
353
354
355
+ static int
356
+ mlx5e_rx_reporter_diagnose_common_ptp_config (struct mlx5e_priv * priv , struct mlx5e_ptp * ptp_ch ,
357
+ struct devlink_fmsg * fmsg )
358
+ {
359
+ int err ;
360
+
361
+ err = mlx5e_health_fmsg_named_obj_nest_start (fmsg , "PTP" );
362
+ if (err )
363
+ return err ;
364
+
365
+ err = devlink_fmsg_u32_pair_put (fmsg , "filter_type" , priv -> tstamp .rx_filter );
366
+ if (err )
367
+ return err ;
368
+
369
+ err = mlx5e_rx_reporter_diagnose_generic_rq (& ptp_ch -> rq , fmsg );
370
+ if (err )
371
+ return err ;
372
+
373
+ return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
374
+ }
375
+
354
376
static int
355
377
mlx5e_rx_reporter_diagnose_common_config (struct devlink_health_reporter * reporter ,
356
378
struct devlink_fmsg * fmsg )
357
379
{
358
380
struct mlx5e_priv * priv = devlink_health_reporter_priv (reporter );
359
381
struct mlx5e_rq * generic_rq = & priv -> channels .c [0 ]-> rq ;
382
+ struct mlx5e_ptp * ptp_ch = priv -> channels .ptp ;
360
383
int err ;
361
384
362
385
err = mlx5e_health_fmsg_named_obj_nest_start (fmsg , "Common config" );
@@ -367,14 +390,45 @@ mlx5e_rx_reporter_diagnose_common_config(struct devlink_health_reporter *reporte
367
390
if (err )
368
391
return err ;
369
392
393
+ if (ptp_ch && test_bit (MLX5E_PTP_STATE_RX , ptp_ch -> state )) {
394
+ err = mlx5e_rx_reporter_diagnose_common_ptp_config (priv , ptp_ch , fmsg );
395
+ if (err )
396
+ return err ;
397
+ }
398
+
370
399
return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
371
400
}
372
401
402
+ static int mlx5e_rx_reporter_build_diagnose_output_ptp_rq (struct mlx5e_rq * rq ,
403
+ struct devlink_fmsg * fmsg )
404
+ {
405
+ int err ;
406
+
407
+ err = devlink_fmsg_obj_nest_start (fmsg );
408
+ if (err )
409
+ return err ;
410
+
411
+ err = devlink_fmsg_string_pair_put (fmsg , "channel" , "ptp" );
412
+ if (err )
413
+ return err ;
414
+
415
+ err = mlx5e_rx_reporter_build_diagnose_output_rq_common (rq , fmsg );
416
+ if (err )
417
+ return err ;
418
+
419
+ err = devlink_fmsg_obj_nest_end (fmsg );
420
+ if (err )
421
+ return err ;
422
+
423
+ return 0 ;
424
+ }
425
+
373
426
static int mlx5e_rx_reporter_diagnose (struct devlink_health_reporter * reporter ,
374
427
struct devlink_fmsg * fmsg ,
375
428
struct netlink_ext_ack * extack )
376
429
{
377
430
struct mlx5e_priv * priv = devlink_health_reporter_priv (reporter );
431
+ struct mlx5e_ptp * ptp_ch = priv -> channels .ptp ;
378
432
int i , err = 0 ;
379
433
380
434
mutex_lock (& priv -> state_lock );
@@ -397,9 +451,12 @@ static int mlx5e_rx_reporter_diagnose(struct devlink_health_reporter *reporter,
397
451
if (err )
398
452
goto unlock ;
399
453
}
454
+ if (ptp_ch && test_bit (MLX5E_PTP_STATE_RX , ptp_ch -> state )) {
455
+ err = mlx5e_rx_reporter_build_diagnose_output_ptp_rq (& ptp_ch -> rq , fmsg );
456
+ if (err )
457
+ goto unlock ;
458
+ }
400
459
err = devlink_fmsg_arr_pair_nest_end (fmsg );
401
- if (err )
402
- goto unlock ;
403
460
unlock :
404
461
mutex_unlock (& priv -> state_lock );
405
462
return err ;
@@ -531,6 +588,7 @@ static int mlx5e_rx_reporter_dump_rq(struct mlx5e_priv *priv, struct devlink_fms
531
588
static int mlx5e_rx_reporter_dump_all_rqs (struct mlx5e_priv * priv ,
532
589
struct devlink_fmsg * fmsg )
533
590
{
591
+ struct mlx5e_ptp * ptp_ch = priv -> channels .ptp ;
534
592
struct mlx5_rsc_key key = {};
535
593
int i , err ;
536
594
@@ -563,6 +621,12 @@ static int mlx5e_rx_reporter_dump_all_rqs(struct mlx5e_priv *priv,
563
621
return err ;
564
622
}
565
623
624
+ if (ptp_ch && test_bit (MLX5E_PTP_STATE_RX , ptp_ch -> state )) {
625
+ err = mlx5e_health_queue_dump (priv , fmsg , ptp_ch -> rq .rqn , "PTP RQ" );
626
+ if (err )
627
+ return err ;
628
+ }
629
+
566
630
return devlink_fmsg_arr_pair_nest_end (fmsg );
567
631
}
568
632
0 commit comments