diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 13:33:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 13:33:42 -0400 |
commit | 0c2fe82a9b106f1c03719783134360586d718a69 (patch) | |
tree | ec1a18ca49f1e6724ef3a93727f5f73b7df61931 /drivers/net/ethernet/mellanox/mlx4/eq.c | |
parent | 5f0e685f316a1de6d3af8b23eaf46651faca32ab (diff) | |
parent | f0e88aeb19dac00ed2e09fd4d39ee65f32d5e968 (diff) |
Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
Pull InfiniBand/RDMA changes for the 3.4 merge window from Roland Dreier:
"Nothing big really stands out; by patch count lots of fixes to the
mlx4 driver plus some cleanups and fixes to the core and other
drivers."
* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (28 commits)
mlx4_core: Scale size of MTT table with system RAM
mlx4_core: Allow dynamic MTU configuration for IB ports
IB/mlx4: Fix info returned when querying IBoE ports
IB/mlx4: Fix possible missed completion event
mlx4_core: Report thermal error events
mlx4_core: Fix one more static exported function
IB: Change CQE "csum_ok" field to a bit flag
RDMA/iwcm: Reject connect requests if cmid is not in LISTEN state
RDMA/cxgb3: Don't pass irq flags to flush_qp()
mlx4_core: Get rid of redundant ext_port_cap flags
RDMA/ucma: Fix AB-BA deadlock
IB/ehca: Fix ilog2() compile failure
IB: Use central enum for speed instead of hard-coded values
IB/iser: Post initial receive buffers before sending the final login request
IB/iser: Free IB connection resources in the proper place
IB/srp: Consolidate repetitive sysfs code
IB/srp: Use pr_fmt() and pr_err()/pr_warn()
IB/core: Fix SDR rates in sysfs
mlx4: Enforce device max FMR maps in FMR alloc
IB/mlx4: Set bad_wr for invalid send opcode
...
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/eq.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/eq.c | 32 |
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 | ||
84 | static void eq_set_ci(struct mlx4_eq *eq, int req_not) | 85 | static 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: |