@@ -230,8 +230,9 @@ static int mlx5e_reporter_icosq_diagnose(struct mlx5e_icosq *icosq, u8 hw_state,
230
230
return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
231
231
}
232
232
233
- static int mlx5e_rx_reporter_build_diagnose_output (struct mlx5e_rq * rq ,
234
- struct devlink_fmsg * fmsg )
233
+ static int
234
+ mlx5e_rx_reporter_build_diagnose_output_rq_common (struct mlx5e_rq * rq ,
235
+ struct devlink_fmsg * fmsg )
235
236
{
236
237
u16 wqe_counter ;
237
238
int wqes_sz ;
@@ -247,14 +248,6 @@ static int mlx5e_rx_reporter_build_diagnose_output(struct mlx5e_rq *rq,
247
248
wq_head = mlx5e_rqwq_get_head (rq );
248
249
wqe_counter = mlx5e_rqwq_get_wqe_counter (rq );
249
250
250
- err = devlink_fmsg_obj_nest_start (fmsg );
251
- if (err )
252
- return err ;
253
-
254
- err = devlink_fmsg_u32_pair_put (fmsg , "channel ix" , rq -> ix );
255
- if (err )
256
- return err ;
257
-
258
251
err = devlink_fmsg_u32_pair_put (fmsg , "rqn" , rq -> rqn );
259
252
if (err )
260
253
return err ;
@@ -300,61 +293,96 @@ static int mlx5e_rx_reporter_build_diagnose_output(struct mlx5e_rq *rq,
300
293
return err ;
301
294
}
302
295
303
- err = devlink_fmsg_obj_nest_end (fmsg );
296
+ return 0 ;
297
+ }
298
+
299
+ static int mlx5e_rx_reporter_build_diagnose_output (struct mlx5e_rq * rq ,
300
+ struct devlink_fmsg * fmsg )
301
+ {
302
+ int err ;
303
+
304
+ err = devlink_fmsg_obj_nest_start (fmsg );
304
305
if (err )
305
306
return err ;
306
307
307
- return 0 ;
308
+ err = devlink_fmsg_u32_pair_put (fmsg , "channel ix" , rq -> ix );
309
+ if (err )
310
+ return err ;
311
+
312
+ err = mlx5e_rx_reporter_build_diagnose_output_rq_common (rq , fmsg );
313
+ if (err )
314
+ return err ;
315
+
316
+ return devlink_fmsg_obj_nest_end (fmsg );
308
317
}
309
318
310
- static int mlx5e_rx_reporter_diagnose (struct devlink_health_reporter * reporter ,
311
- struct devlink_fmsg * fmsg ,
312
- struct netlink_ext_ack * extack )
319
+ static int mlx5e_rx_reporter_diagnose_generic_rq (struct mlx5e_rq * rq ,
320
+ struct devlink_fmsg * fmsg )
313
321
{
314
- struct mlx5e_priv * priv = devlink_health_reporter_priv (reporter );
315
- struct mlx5e_params * params = & priv -> channels .params ;
316
- struct mlx5e_rq * generic_rq ;
322
+ struct mlx5e_priv * priv = rq -> priv ;
323
+ struct mlx5e_params * params ;
317
324
u32 rq_stride , rq_sz ;
318
- int i , err = 0 ;
319
-
320
- mutex_lock (& priv -> state_lock );
321
-
322
- if (!test_bit (MLX5E_STATE_OPENED , & priv -> state ))
323
- goto unlock ;
325
+ int err ;
324
326
325
- generic_rq = & priv -> channels .c [ 0 ] -> rq ;
326
- rq_sz = mlx5e_rqwq_get_size (generic_rq );
327
+ params = & priv -> channels .params ;
328
+ rq_sz = mlx5e_rqwq_get_size (rq );
327
329
rq_stride = BIT (mlx5e_mpwqe_get_log_stride_size (priv -> mdev , params , NULL ));
328
330
329
- err = mlx5e_health_fmsg_named_obj_nest_start (fmsg , "Common config" );
330
- if (err )
331
- goto unlock ;
332
-
333
331
err = mlx5e_health_fmsg_named_obj_nest_start (fmsg , "RQ" );
334
332
if (err )
335
- goto unlock ;
333
+ return err ;
336
334
337
335
err = devlink_fmsg_u8_pair_put (fmsg , "type" , params -> rq_wq_type );
338
336
if (err )
339
- goto unlock ;
337
+ return err ;
340
338
341
339
err = devlink_fmsg_u64_pair_put (fmsg , "stride size" , rq_stride );
342
340
if (err )
343
- goto unlock ;
341
+ return err ;
344
342
345
343
err = devlink_fmsg_u32_pair_put (fmsg , "size" , rq_sz );
346
344
if (err )
347
- goto unlock ;
345
+ return err ;
348
346
349
- err = mlx5e_health_cq_common_diag_fmsg (& generic_rq -> cq , fmsg );
347
+ err = mlx5e_health_cq_common_diag_fmsg (& rq -> cq , fmsg );
350
348
if (err )
351
- goto unlock ;
349
+ return err ;
352
350
353
- err = mlx5e_health_fmsg_named_obj_nest_end (fmsg );
351
+ return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
352
+ }
353
+
354
+ static int
355
+ mlx5e_rx_reporter_diagnose_common_config (struct devlink_health_reporter * reporter ,
356
+ struct devlink_fmsg * fmsg )
357
+ {
358
+ struct mlx5e_priv * priv = devlink_health_reporter_priv (reporter );
359
+ struct mlx5e_rq * generic_rq = & priv -> channels .c [0 ]-> rq ;
360
+ int err ;
361
+
362
+ err = mlx5e_health_fmsg_named_obj_nest_start (fmsg , "Common config" );
354
363
if (err )
364
+ return err ;
365
+
366
+ err = mlx5e_rx_reporter_diagnose_generic_rq (generic_rq , fmsg );
367
+ if (err )
368
+ return err ;
369
+
370
+ return mlx5e_health_fmsg_named_obj_nest_end (fmsg );
371
+ }
372
+
373
+ static int mlx5e_rx_reporter_diagnose (struct devlink_health_reporter * reporter ,
374
+ struct devlink_fmsg * fmsg ,
375
+ struct netlink_ext_ack * extack )
376
+ {
377
+ struct mlx5e_priv * priv = devlink_health_reporter_priv (reporter );
378
+ int i , err = 0 ;
379
+
380
+ mutex_lock (& priv -> state_lock );
381
+
382
+ if (!test_bit (MLX5E_STATE_OPENED , & priv -> state ))
355
383
goto unlock ;
356
384
357
- err = mlx5e_health_fmsg_named_obj_nest_end ( fmsg );
385
+ err = mlx5e_rx_reporter_diagnose_common_config ( reporter , fmsg );
358
386
if (err )
359
387
goto unlock ;
360
388
0 commit comments