From: Sean Hefty Date: Mon, 16 Aug 2010 18:59:12 +0000 (-0700) Subject: Refresh of ep X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=aeb215d04e942b6877c2359ea54ab28cb42e5787;p=~shefty%2Frdma-win.git Refresh of ep --- diff --git a/trunk/ulp/librdmacm/src/cma.cpp b/trunk/ulp/librdmacm/src/cma.cpp index cb2f20c4..6e1f93a6 100644 --- a/trunk/ulp/librdmacm/src/cma.cpp +++ b/trunk/ulp/librdmacm/src/cma.cpp @@ -950,6 +950,12 @@ int rdma_get_request(struct rdma_cm_id *listen, struct rdma_cm_id **id) goto err; } + if (id_priv->qp_init_attr) { + ret = rdma_create_qp(event->id, id_priv->pd, id_priv->qp_init_attr); + if (ret) + goto err; + } + *id = event->id; (*id)->event = event; return 0; @@ -1345,30 +1351,30 @@ int rdma_migrate_id(struct rdma_cm_id *id, struct rdma_event_channel *channel) return 0; } -static int ucma_passive_ep(struct rdma_cm_id *id, struct rdma_addrinfo *res, - struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr) -{ - struct cma_id_private *id_priv; - int ret; - - ret = rdma_bind_addr(id, res->ai_src_addr); - if (ret) - return ret; - - id_priv = CONTAINING_RECORD(id, struct cma_id_private, id); - id_priv->pd = pd; - - if (qp_init_attr) { - id_priv->qp_init_attr = new struct ibv_qp_init_attr; - if (!id_priv->qp_init_attr) - return rdma_seterrno(ENOMEM); - - *id_priv->qp_init_attr = *qp_init_attr; - id_priv->qp_init_attr->qp_type = (enum ibv_qp_type) res->ai_qp_type; - } - - return 0; -} +static int ucma_passive_ep(struct rdma_cm_id *id, struct rdma_addrinfo *res, + struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr) +{ + struct cma_id_private *id_priv; + int ret; + + ret = rdma_bind_addr(id, res->ai_src_addr); + if (ret) + return ret; + + id_priv = CONTAINING_RECORD(id, struct cma_id_private, id); + id_priv->pd = pd; + + if (qp_init_attr) { + id_priv->qp_init_attr = new struct ibv_qp_init_attr; + if (!id_priv->qp_init_attr) + return rdma_seterrno(ENOMEM); + + *id_priv->qp_init_attr = *qp_init_attr; + id_priv->qp_init_attr->qp_type = (enum ibv_qp_type) res->ai_qp_type; + } + + return 0; +} int rdma_create_ep(struct rdma_cm_id **id, struct rdma_addrinfo *res, struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr)