Skip to content

Commit abef378

Browse files
Arumugam Kolappanrleon
authored andcommitted
RDMA/mlx5: Change debug log level for remote access error syndromes
The mlx5 driver dumps the entire CQE buffer by default for few syndromes. Some syndromes are expected due to the application behavior [ex: MLX5_CQE_SYNDROME_REMOTE_ACCESS_ERR, MLX5_CQE_SYNDROME_REMOTE_OP_ERR and MLX5_CQE_SYNDROME_LOCAL_PROT_ERR]. Hence, for these syndromes, the patch converts the log level from KERN_WARNING to KERN_DEBUG. This enables the application to get the CQE buffer dump by changing to KERN_DEBUG level as and when needed. Suggested-by: Leon Romanovsky <[email protected]> Signed-off-by: Arumugam Kolappan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Leon Romanovsky <[email protected]>
1 parent 692373d commit abef378

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

drivers/infiniband/hw/mlx5/cq.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -267,17 +267,20 @@ static void handle_responder(struct ib_wc *wc, struct mlx5_cqe64 *cqe,
267267
wc->wc_flags |= IB_WC_WITH_NETWORK_HDR_TYPE;
268268
}
269269

270-
static void dump_cqe(struct mlx5_ib_dev *dev, struct mlx5_err_cqe *cqe)
270+
static void dump_cqe(struct mlx5_ib_dev *dev, struct mlx5_err_cqe *cqe,
271+
struct ib_wc *wc, const char *level)
271272
{
272-
mlx5_ib_warn(dev, "dump error cqe\n");
273-
mlx5_dump_err_cqe(dev->mdev, cqe);
273+
mlx5_ib_log(level, dev, "WC error: %d, Message: %s\n", wc->status,
274+
ib_wc_status_msg(wc->status));
275+
print_hex_dump(level, "cqe_dump: ", DUMP_PREFIX_OFFSET, 16, 1,
276+
cqe, sizeof(*cqe), false);
274277
}
275278

276279
static void mlx5_handle_error_cqe(struct mlx5_ib_dev *dev,
277280
struct mlx5_err_cqe *cqe,
278281
struct ib_wc *wc)
279282
{
280-
int dump = 1;
283+
const char *dump = KERN_WARNING;
281284

282285
switch (cqe->syndrome) {
283286
case MLX5_CQE_SYNDROME_LOCAL_LENGTH_ERR:
@@ -287,10 +290,11 @@ static void mlx5_handle_error_cqe(struct mlx5_ib_dev *dev,
287290
wc->status = IB_WC_LOC_QP_OP_ERR;
288291
break;
289292
case MLX5_CQE_SYNDROME_LOCAL_PROT_ERR:
293+
dump = KERN_DEBUG;
290294
wc->status = IB_WC_LOC_PROT_ERR;
291295
break;
292296
case MLX5_CQE_SYNDROME_WR_FLUSH_ERR:
293-
dump = 0;
297+
dump = NULL;
294298
wc->status = IB_WC_WR_FLUSH_ERR;
295299
break;
296300
case MLX5_CQE_SYNDROME_MW_BIND_ERR:
@@ -306,18 +310,20 @@ static void mlx5_handle_error_cqe(struct mlx5_ib_dev *dev,
306310
wc->status = IB_WC_REM_INV_REQ_ERR;
307311
break;
308312
case MLX5_CQE_SYNDROME_REMOTE_ACCESS_ERR:
313+
dump = KERN_DEBUG;
309314
wc->status = IB_WC_REM_ACCESS_ERR;
310315
break;
311316
case MLX5_CQE_SYNDROME_REMOTE_OP_ERR:
317+
dump = KERN_DEBUG;
312318
wc->status = IB_WC_REM_OP_ERR;
313319
break;
314320
case MLX5_CQE_SYNDROME_TRANSPORT_RETRY_EXC_ERR:
321+
dump = NULL;
315322
wc->status = IB_WC_RETRY_EXC_ERR;
316-
dump = 0;
317323
break;
318324
case MLX5_CQE_SYNDROME_RNR_RETRY_EXC_ERR:
325+
dump = NULL;
319326
wc->status = IB_WC_RNR_RETRY_EXC_ERR;
320-
dump = 0;
321327
break;
322328
case MLX5_CQE_SYNDROME_REMOTE_ABORTED_ERR:
323329
wc->status = IB_WC_REM_ABORT_ERR;
@@ -328,11 +334,8 @@ static void mlx5_handle_error_cqe(struct mlx5_ib_dev *dev,
328334
}
329335

330336
wc->vendor_err = cqe->vendor_err_synd;
331-
if (dump) {
332-
mlx5_ib_warn(dev, "WC error: %d, Message: %s\n", wc->status,
333-
ib_wc_status_msg(wc->status));
334-
dump_cqe(dev, cqe);
335-
}
337+
if (dump)
338+
dump_cqe(dev, cqe, wc, dump);
336339
}
337340

338341
static void handle_atomics(struct mlx5_ib_qp *qp, struct mlx5_cqe64 *cqe64,

drivers/infiniband/hw/mlx5/mlx5_ib.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
dev_warn(&(_dev)->ib_dev.dev, "%s:%d:(pid %d): " format, __func__, \
3939
__LINE__, current->pid, ##arg)
4040

41+
#define mlx5_ib_log(lvl, _dev, format, arg...) \
42+
dev_printk(lvl, &(_dev)->ib_dev.dev, "%s:%d:(pid %d): " format, \
43+
__func__, __LINE__, current->pid, ##arg)
44+
4145
#define MLX5_IB_DEFAULT_UIDX 0xffffff
4246
#define MLX5_USER_ASSIGNED_UIDX_MASK __mlx5_mask(qpc, user_index)
4347

0 commit comments

Comments
 (0)