new_conn->sp = conn->sp;
new_conn->hca = conn->hca;
+ /* Get requesters connect data, setup for accept */
+ new_conn->params.responder_resources =
+ DAPL_MIN(event->param.conn.initiator_depth,
+ conn->hca->ib_trans.max_rdma_rd_in);
+ new_conn->params.initiator_depth =
+ DAPL_MIN(event->param.conn.responder_resources,
+ conn->hca->ib_trans.max_rdma_rd_out);
+
+ new_conn->params.flow_control = event->param.conn.flow_control;
+ new_conn->params.rnr_retry_count = event->param.conn.rnr_retry_count;
+ new_conn->params.retry_count = event->param.conn.retry_count;
+
/* save private data */
if (event->param.conn.private_data_len) {
dapl_os_memcpy(new_conn->p_data,
event->param.conn.private_data, event->param.conn.private_data_len);
dapl_dbg_log(DAPL_DBG_TYPE_CM, " passive_cb: "
- "REQ: IP SRC %x PORT %d DST %x PORT %d\n",
+ "REQ: IP SRC %x PORT %d DST %x PORT %d "
+ "rr %d init %d\n",
ntohl(((struct sockaddr_in *)
&ipaddr->src_addr)->sin_addr.s_addr),
ntohs(((struct sockaddr_in *)
ntohl(((struct sockaddr_in *)
&ipaddr->dst_addr)->sin_addr.s_addr),
ntohs(((struct sockaddr_in *)
- &ipaddr->dst_addr)->sin_port));
+ &ipaddr->dst_addr)->sin_port),
+ new_conn->params.responder_resources,
+ new_conn->params.initiator_depth);
}
return new_conn;
}
/* Setup QP/CM parameters and private data in cm_id */
(void)dapl_os_memzero(&conn->params, sizeof(conn->params));
- conn->params.responder_resources = IB_TARGET_MAX;
- conn->params.initiator_depth = IB_INITIATOR_DEPTH;
+ conn->params.responder_resources = conn->hca->ib_trans.max_rdma_rd_in;
+ conn->params.initiator_depth = conn->hca->ib_trans.max_rdma_rd_out;
conn->params.flow_control = 1;
conn->params.rnr_retry_count = IB_RNR_RETRY_COUNT;
conn->params.retry_count = IB_RC_RETRY_COUNT;
struct dapl_cm_id *cr_conn = cr_ptr->ib_cm_handle;
int ret;
DAT_RETURN dat_status;
- struct rdma_conn_param conn_params;
dapl_dbg_log(DAPL_DBG_TYPE_CM,
" accept(cr %p conn %p, id %p, p_data %p, p_sz=%d)\n",
ep_ptr->qp_handle = cr_conn;
ep_ptr->cm_handle = cr_conn;
cr_conn->ep = ep_ptr;
+ cr_conn->params.private_data = p_data;
+ cr_conn->params.private_data_len = p_size;
- memset(&conn_params, 0, sizeof(conn_params));
- conn_params.private_data = p_data;
- conn_params.private_data_len = p_size;
- conn_params.responder_resources = IB_TARGET_MAX;
- conn_params.initiator_depth = IB_INITIATOR_DEPTH;
- conn_params.flow_control = 1;
- conn_params.rnr_retry_count = IB_RNR_RETRY_COUNT;
-
- ret = rdma_accept(cr_conn->cm_id, &conn_params);
+ ret = rdma_accept(cr_conn->cm_id, &cr_conn->params);
if (ret) {
dapl_dbg_log(DAPL_DBG_TYPE_ERR," accept: ERROR %d\n", ret);
dat_status = dapl_convert_errno(ret, "accept");