diff options
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/eq.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/eq.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c index 7e042869ef0c..0416c5b3b35c 100644 --- a/drivers/net/ethernet/mellanox/mlx4/eq.c +++ b/drivers/net/ethernet/mellanox/mlx4/eq.c | |||
@@ -79,6 +79,7 @@ enum { | |||
79 | (1ull << MLX4_EVENT_TYPE_SRQ_QP_LAST_WQE) | \ | 79 | (1ull << MLX4_EVENT_TYPE_SRQ_QP_LAST_WQE) | \ |
80 | (1ull << MLX4_EVENT_TYPE_SRQ_LIMIT) | \ | 80 | (1ull << MLX4_EVENT_TYPE_SRQ_LIMIT) | \ |
81 | (1ull << MLX4_EVENT_TYPE_CMD) | \ | 81 | (1ull << MLX4_EVENT_TYPE_CMD) | \ |
82 | (1ull << MLX4_EVENT_TYPE_OP_REQUIRED) | \ | ||
82 | (1ull << MLX4_EVENT_TYPE_COMM_CHANNEL) | \ | 83 | (1ull << MLX4_EVENT_TYPE_COMM_CHANNEL) | \ |
83 | (1ull << MLX4_EVENT_TYPE_FLR_EVENT) | \ | 84 | (1ull << MLX4_EVENT_TYPE_FLR_EVENT) | \ |
84 | (1ull << MLX4_EVENT_TYPE_FATAL_WARNING)) | 85 | (1ull << MLX4_EVENT_TYPE_FATAL_WARNING)) |
@@ -629,6 +630,14 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) | |||
629 | mlx4_warn(dev, "EQ overrun on EQN %d\n", eq->eqn); | 630 | mlx4_warn(dev, "EQ overrun on EQN %d\n", eq->eqn); |
630 | break; | 631 | break; |
631 | 632 | ||
633 | case MLX4_EVENT_TYPE_OP_REQUIRED: | ||
634 | atomic_inc(&priv->opreq_count); | ||
635 | /* FW commands can't be executed from interrupt context | ||
636 | * working in deferred task | ||
637 | */ | ||
638 | queue_work(mlx4_wq, &priv->opreq_task); | ||
639 | break; | ||
640 | |||
632 | case MLX4_EVENT_TYPE_COMM_CHANNEL: | 641 | case MLX4_EVENT_TYPE_COMM_CHANNEL: |
633 | if (!mlx4_is_master(dev)) { | 642 | if (!mlx4_is_master(dev)) { |
634 | mlx4_warn(dev, "Received comm channel event " | 643 | mlx4_warn(dev, "Received comm channel event " |