summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Kingman <kingman@storagegear.com>2005-09-09 18:23:32 -0700
committerRoland Dreier <rolandd@cisco.com>2005-09-09 18:23:32 -0700
commit354ba39cf96e439149541acf3c6c7c0df0a3ef25 (patch)
tree5c5ca0a98dd16f5c9120022ff21cdba02de48816
parent63aaf647529e8a56bdf31fd8f2979d4371c6a332 (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.c4
-rw-r--r--include/rdma/ib_cm.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 4de93ba274a..96136543aa4 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,
if (IS_ERR(ah))
return PTR_ERR(ah);
- m = ib_create_send_mad(mad_agent, 1, cm_id_priv->av.pkey_index,
+ m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn,
+ cm_id_priv->av.pkey_index,
ah, 0, sizeof(struct ib_mad_hdr),
sizeof(struct ib_mad)-sizeof(struct ib_mad_hdr),
GFP_ATOMIC);
@@ -536,6 +537,7 @@ struct ib_cm_id *ib_create_cm_id(ib_cm_handler cm_handler,
cm_id_priv->id.state = IB_CM_IDLE;
cm_id_priv->id.cm_handler = cm_handler;
cm_id_priv->id.context = context;
+ cm_id_priv->id.remote_cm_qpn = 1;
ret = cm_alloc_id(cm_id_priv);
if (ret)
goto error;
diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h
index 77fe9039209..5308683c8c4 100644
--- a/include/rdma/ib_cm.h
+++ b/include/rdma/ib_cm.h
@@ -290,6 +290,7 @@ struct ib_cm_id {
enum ib_cm_lap_state lap_state; /* internal CM/debug use */
__be32 local_id;
__be32 remote_id;
+ u32 remote_cm_qpn; /* 1 unless redirected */
};
/**