Skip to content

Commit 19cfa36

Browse files
ayalevinSaeed Mahameed
authored andcommitted
net/mlx5e: Refactor RX reporter diagnostics
Break RX diagnostics function into smaller helpers. This enables easier enhancement in the next patch in the set. Signed-off-by: Aya Levin <[email protected]> Reviewed-by: Tariq Toukan <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 3adb60b commit 19cfa36

File tree

1 file changed

+66
-38
lines changed

1 file changed

+66
-38
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,9 @@ static int mlx5e_reporter_icosq_diagnose(struct mlx5e_icosq *icosq, u8 hw_state,
230230
return mlx5e_health_fmsg_named_obj_nest_end(fmsg);
231231
}
232232

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)
235236
{
236237
u16 wqe_counter;
237238
int wqes_sz;
@@ -247,14 +248,6 @@ static int mlx5e_rx_reporter_build_diagnose_output(struct mlx5e_rq *rq,
247248
wq_head = mlx5e_rqwq_get_head(rq);
248249
wqe_counter = mlx5e_rqwq_get_wqe_counter(rq);
249250

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-
258251
err = devlink_fmsg_u32_pair_put(fmsg, "rqn", rq->rqn);
259252
if (err)
260253
return err;
@@ -300,61 +293,96 @@ static int mlx5e_rx_reporter_build_diagnose_output(struct mlx5e_rq *rq,
300293
return err;
301294
}
302295

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);
304305
if (err)
305306
return err;
306307

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);
308317
}
309318

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)
313321
{
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;
317324
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;
324326

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);
327329
rq_stride = BIT(mlx5e_mpwqe_get_log_stride_size(priv->mdev, params, NULL));
328330

329-
err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "Common config");
330-
if (err)
331-
goto unlock;
332-
333331
err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "RQ");
334332
if (err)
335-
goto unlock;
333+
return err;
336334

337335
err = devlink_fmsg_u8_pair_put(fmsg, "type", params->rq_wq_type);
338336
if (err)
339-
goto unlock;
337+
return err;
340338

341339
err = devlink_fmsg_u64_pair_put(fmsg, "stride size", rq_stride);
342340
if (err)
343-
goto unlock;
341+
return err;
344342

345343
err = devlink_fmsg_u32_pair_put(fmsg, "size", rq_sz);
346344
if (err)
347-
goto unlock;
345+
return err;
348346

349-
err = mlx5e_health_cq_common_diag_fmsg(&generic_rq->cq, fmsg);
347+
err = mlx5e_health_cq_common_diag_fmsg(&rq->cq, fmsg);
350348
if (err)
351-
goto unlock;
349+
return err;
352350

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");
354363
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))
355383
goto unlock;
356384

357-
err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);
385+
err = mlx5e_rx_reporter_diagnose_common_config(reporter, fmsg);
358386
if (err)
359387
goto unlock;
360388

0 commit comments

Comments
 (0)