aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlx4/eq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/eq.c')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/eq.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
index 9129ace02560..3b6f8efbf141 100644
--- a/drivers/net/ethernet/mellanox/mlx4/eq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
@@ -79,7 +79,8 @@ enum {
79 (1ull << MLX4_EVENT_TYPE_SRQ_LIMIT) | \ 79 (1ull << MLX4_EVENT_TYPE_SRQ_LIMIT) | \
80 (1ull << MLX4_EVENT_TYPE_CMD) | \ 80 (1ull << MLX4_EVENT_TYPE_CMD) | \
81 (1ull << MLX4_EVENT_TYPE_COMM_CHANNEL) | \ 81 (1ull << MLX4_EVENT_TYPE_COMM_CHANNEL) | \
82 (1ull << MLX4_EVENT_TYPE_FLR_EVENT)) 82 (1ull << MLX4_EVENT_TYPE_FLR_EVENT) | \
83 (1ull << MLX4_EVENT_TYPE_FATAL_WARNING))
83 84
84static void eq_set_ci(struct mlx4_eq *eq, int req_not) 85static void eq_set_ci(struct mlx4_eq *eq, int req_not)
85{ 86{
@@ -443,6 +444,35 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq)
443 queue_work(priv->mfunc.master.comm_wq, 444 queue_work(priv->mfunc.master.comm_wq,
444 &priv->mfunc.master.slave_flr_event_work); 445 &priv->mfunc.master.slave_flr_event_work);
445 break; 446 break;
447
448 case MLX4_EVENT_TYPE_FATAL_WARNING:
449 if (eqe->subtype == MLX4_FATAL_WARNING_SUBTYPE_WARMING) {
450 if (mlx4_is_master(dev))
451 for (i = 0; i < dev->num_slaves; i++) {
452 mlx4_dbg(dev, "%s: Sending "
453 "MLX4_FATAL_WARNING_SUBTYPE_WARMING"
454 " to slave: %d\n", __func__, i);
455 if (i == dev->caps.function)
456 continue;
457 mlx4_slave_event(dev, i, eqe);
458 }
459 mlx4_err(dev, "Temperature Threshold was reached! "
460 "Threshold: %d celsius degrees; "
461 "Current Temperature: %d\n",
462 be16_to_cpu(eqe->event.warming.warning_threshold),
463 be16_to_cpu(eqe->event.warming.current_temperature));
464 } else
465 mlx4_warn(dev, "Unhandled event FATAL WARNING (%02x), "
466 "subtype %02x on EQ %d at index %u. owner=%x, "
467 "nent=0x%x, slave=%x, ownership=%s\n",
468 eqe->type, eqe->subtype, eq->eqn,
469 eq->cons_index, eqe->owner, eq->nent,
470 eqe->slave_id,
471 !!(eqe->owner & 0x80) ^
472 !!(eq->cons_index & eq->nent) ? "HW" : "SW");
473
474 break;
475
446 case MLX4_EVENT_TYPE_EEC_CATAS_ERROR: 476 case MLX4_EVENT_TYPE_EEC_CATAS_ERROR:
447 case MLX4_EVENT_TYPE_ECC_DETECT: 477 case MLX4_EVENT_TYPE_ECC_DETECT:
448 default: 478 default: