net/mlx5: Rate limit errors in command interface
authorLeon Romanovsky <leonro@mellanox.com>
Sun, 24 Jun 2018 08:23:46 +0000 (11:23 +0300)
committerLeon Romanovsky <leonro@mellanox.com>
Wed, 27 Jun 2018 05:43:55 +0000 (08:43 +0300)
Any error status returned by FW will trigger a print similar to the
following error message in the dmesg.

[   55.884355] mlx5_core 0000:00:04.0: mlx5_cmd_check:712:(pid 555):
ALLOC_UAR(0x802) op_mod(0x0) failed, status limits exceeded(0x8),
syndrome (0x0)

Those prints are extremely valuable to diagnose issues with running system
and it is important to keep them. However, not-so-careful user can trigger
endless number of such prints by depleting HW resources and will spam
dmesg.

Rate limiting of such messages solves this issue.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h

index d07f24de8fa34290e859d6bb3c9d81e5966f85f8..3cb629e9f27c143335b630b181dd2e0004e61bfd 100644 (file)
@@ -712,13 +712,10 @@ static int mlx5_cmd_check(struct mlx5_core_dev *dev, void *in, void *out)
        uid    = MLX5_GET(mbox_in, in, uid);
 
        if (!uid && opcode != MLX5_CMD_OP_DESTROY_MKEY)
-               mlx5_core_err(dev,
-                     "%s(0x%x) op_mod(0x%x) failed, status %s(0x%x), syndrome (0x%x)\n",
-                     mlx5_command_str(opcode),
-                     opcode, op_mod,
-                     cmd_status_str(status),
-                     status,
-                     syndrome);
+               mlx5_core_err_rl(dev,
+                       "%s(0x%x) op_mod(0x%x) failed, status %s(0x%x), syndrome (0x%x)\n",
+                       mlx5_command_str(opcode), opcode, op_mod,
+                       cmd_status_str(status), status, syndrome);
        else
                mlx5_core_dbg(dev,
                      "%s(0x%x) op_mod(0x%x) failed, status %s(0x%x), syndrome (0x%x)\n",
index 023882d9a22e59a7b172aee6a3260606932f4a03..49955117ae365888bdab0464f281e664682e122d 100644 (file)
@@ -66,6 +66,12 @@ do {                                                                 \
                __func__, __LINE__, current->pid,       \
               ##__VA_ARGS__)
 
+#define mlx5_core_err_rl(__dev, format, ...)                           \
+       dev_err_ratelimited(&(__dev)->pdev->dev,                        \
+                          "%s:%d:(pid %d): " format,                   \
+                          __func__, __LINE__, current->pid,            \
+                          ##__VA_ARGS__)
+
 #define mlx5_core_warn(__dev, format, ...)                             \
        dev_warn(&(__dev)->pdev->dev, "%s:%d:(pid %d): " format,        \
                 __func__, __LINE__, current->pid,                      \