aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mlx4/cm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/mlx4/cm.c')
-rw-r--r--drivers/infiniband/hw/mlx4/cm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx4/cm.c b/drivers/infiniband/hw/mlx4/cm.c
index 1e6c526450d9..fedaf8260105 100644
--- a/drivers/infiniband/hw/mlx4/cm.c
+++ b/drivers/infiniband/hw/mlx4/cm.c
@@ -323,6 +323,9 @@ int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id
323 mad->mad_hdr.attr_id == CM_REP_ATTR_ID || 323 mad->mad_hdr.attr_id == CM_REP_ATTR_ID ||
324 mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { 324 mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) {
325 sl_cm_id = get_local_comm_id(mad); 325 sl_cm_id = get_local_comm_id(mad);
326 id = id_map_get(ibdev, &pv_cm_id, slave_id, sl_cm_id);
327 if (id)
328 goto cont;
326 id = id_map_alloc(ibdev, slave_id, sl_cm_id); 329 id = id_map_alloc(ibdev, slave_id, sl_cm_id);
327 if (IS_ERR(id)) { 330 if (IS_ERR(id)) {
328 mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n", 331 mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n",
@@ -343,6 +346,7 @@ int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id
343 return -EINVAL; 346 return -EINVAL;
344 } 347 }
345 348
349cont:
346 set_local_comm_id(mad, id->pv_cm_id); 350 set_local_comm_id(mad, id->pv_cm_id);
347 351
348 if (mad->mad_hdr.attr_id == CM_DREQ_ATTR_ID) 352 if (mad->mad_hdr.attr_id == CM_DREQ_ATTR_ID)