diff options
| author | John Kingman <kingman@storagegear.com> | 2005-09-09 21:23:32 -0400 |
|---|---|---|
| committer | Roland Dreier <rolandd@cisco.com> | 2005-09-09 21:23:32 -0400 |
| commit | 354ba39cf96e439149541acf3c6c7c0df0a3ef25 (patch) | |
| tree | 5c5ca0a98dd16f5c9120022ff21cdba02de48816 | |
| parent | 63aaf647529e8a56bdf31fd8f2979d4371c6a332 (diff) | |
[PATCH] IB CM: support CM redir
Changes to CM to support CM and port redirection (REJ reason 24).
Signed-off-by: John Kingman <kingman <at> storagegear.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
| -rw-r--r-- | drivers/infiniband/core/cm.c | 4 | ||||
| -rw-r--r-- | include/rdma/ib_cm.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 4de93ba274a6..96136543aa4e 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c | |||
| @@ -173,7 +173,8 @@ static int cm_alloc_msg(struct cm_id_private *cm_id_priv, | |||
| 173 | if (IS_ERR(ah)) | 173 | if (IS_ERR(ah)) |
| 174 | return PTR_ERR(ah); | 174 | return PTR_ERR(ah); |
| 175 | 175 | ||
| 176 | m = ib_create_send_mad(mad_agent, 1, cm_id_priv->av.pkey_index, | 176 | m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn, |
| 177 | cm_id_priv->av.pkey_index, | ||
| 177 | ah, 0, sizeof(struct ib_mad_hdr), | 178 | ah, 0, sizeof(struct ib_mad_hdr), |
| 178 | sizeof(struct ib_mad)-sizeof(struct ib_mad_hdr), | 179 | sizeof(struct ib_mad)-sizeof(struct ib_mad_hdr), |
| 179 | GFP_ATOMIC); | 180 | GFP_ATOMIC); |
| @@ -536,6 +537,7 @@ struct ib_cm_id *ib_create_cm_id(ib_cm_handler cm_handler, | |||
| 536 | cm_id_priv->id.state = IB_CM_IDLE; | 537 | cm_id_priv->id.state = IB_CM_IDLE; |
| 537 | cm_id_priv->id.cm_handler = cm_handler; | 538 | cm_id_priv->id.cm_handler = cm_handler; |
| 538 | cm_id_priv->id.context = context; | 539 | cm_id_priv->id.context = context; |
| 540 | cm_id_priv->id.remote_cm_qpn = 1; | ||
| 539 | ret = cm_alloc_id(cm_id_priv); | 541 | ret = cm_alloc_id(cm_id_priv); |
| 540 | if (ret) | 542 | if (ret) |
| 541 | goto error; | 543 | goto error; |
diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h index 77fe9039209b..5308683c8c41 100644 --- a/include/rdma/ib_cm.h +++ b/include/rdma/ib_cm.h | |||
| @@ -290,6 +290,7 @@ struct ib_cm_id { | |||
| 290 | enum ib_cm_lap_state lap_state; /* internal CM/debug use */ | 290 | enum ib_cm_lap_state lap_state; /* internal CM/debug use */ |
| 291 | __be32 local_id; | 291 | __be32 local_id; |
| 292 | __be32 remote_id; | 292 | __be32 remote_id; |
| 293 | u32 remote_cm_qpn; /* 1 unless redirected */ | ||
| 293 | }; | 294 | }; |
| 294 | 295 | ||
| 295 | /** | 296 | /** |
