ret = rdma_resolve_route(conn->cm_id, conn->route_timeout);
if (ret) {
- dapl_dbg_log(DAPL_DBG_TYPE_ERR,
- " rdma_connect failed: %s\n",strerror(errno));
-
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " dapl_cma_connect: rdma_resolve_route ERR %d %s\n",
+ ret, strerror(errno));
dapl_evd_connection_callback(conn,
IB_CME_LOCAL_FAILURE,
NULL, conn->ep);
ret = rdma_connect(conn->cm_id, &conn->params);
if (ret) {
- dapl_dbg_log(DAPL_DBG_TYPE_ERR, " rdma_connect failed: %s\n",
- strerror(errno));
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " dapl_cma_connect: rdma_connect ERR %d %s\n",
+ ret, strerror(errno));
goto bail;
}
return;
case RDMA_CM_EVENT_UNREACHABLE:
case RDMA_CM_EVENT_CONNECT_ERROR:
{
- dapl_dbg_log(
- DAPL_DBG_TYPE_WARN,
- " dapli_cm_active_handler: CONN_ERR "
- " event=0x%x status=%d %s\n",
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cma_active: CONN_ERR event=0x%x"
+ " status=%d %s DST %s, %d\n",
event->event, event->status,
- (event->status == -ETIMEDOUT)?"TIMEOUT":"" );
+ (event->status == -ETIMEDOUT)?"TIMEOUT":"",
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
/* per DAT SPEC provider always returns UNREACHABLE */
dapl_evd_connection_callback(conn,
{
ib_cm_events_t cm_event;
- /* no device type specified so assume IB for now */
- if (event->status == 28) /* IB_CM_REJ_CONSUMER_DEFINED */
- cm_event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
- else
- cm_event = IB_CME_DESTINATION_REJECT;
-
dapl_dbg_log(
DAPL_DBG_TYPE_CM,
" dapli_cm_active_handler: REJECTED reason=%d\n",
event->status);
-
+
+ /* valid REJ from consumer will always contain private data */
+ if (event->status == 28 &&
+ event->param.conn.private_data_len)
+ cm_event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
+ else {
+ cm_event = IB_CME_DESTINATION_REJECT;
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cma_active: non-consumer REJ,"
+ " reason=%d, DST %s, %d\n",
+ event->status,
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
+ }
dapl_evd_connection_callback(conn, cm_event, NULL, conn->ep);
break;
}
case RDMA_CM_EVENT_ESTABLISHED:
-
dapl_dbg_log(DAPL_DBG_TYPE_CM,
- " active_cb: cm_id %d PORT %d CONNECTED to 0x%x!\n",
+ " active_cb: cm_id %d PORT %d CONNECTED to %s!\n",
conn->cm_id,
ntohs(((struct sockaddr_in *)
&conn->cm_id->route.addr.dst_addr)->sin_port),
- ntohl(((struct sockaddr_in *)
- &conn->cm_id->route.addr.dst_addr)->sin_addr.s_addr));
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr));
/* setup local and remote ports for ep query */
- conn->ep->param.remote_port_qual = PORT_TO_SID(rdma_get_dst_port(conn->cm_id));
- conn->ep->param.local_port_qual = PORT_TO_SID(rdma_get_src_port(conn->cm_id));
+ conn->ep->param.remote_port_qual =
+ PORT_TO_SID(rdma_get_dst_port(conn->cm_id));
+ conn->ep->param.local_port_qual =
+ PORT_TO_SID(rdma_get_src_port(conn->cm_id));
dapl_evd_connection_callback(conn, IB_CME_CONNECTED,
- event->param.conn.private_data, conn->ep);
+ event->param.conn.private_data,
+ conn->ep);
break;
case RDMA_CM_EVENT_DISCONNECTED:
struct rdma_cm_event *event)
{
struct dapl_cm_id *new_conn;
-#ifdef DAPL_DBG
- struct rdma_addr *ipaddr = &conn->cm_id->route.addr;
-#endif
dapl_dbg_log(DAPL_DBG_TYPE_CM,
" passive_cb: conn %p id %d event %d\n",
break;
case RDMA_CM_EVENT_UNREACHABLE:
case RDMA_CM_EVENT_CONNECT_ERROR:
-
- dapl_dbg_log(
- DAPL_DBG_TYPE_WARN,
- " dapli_cm_passive: CONN_ERR "
- " event=0x%x status=%d %s"
- " on SRC 0x%x,0x%x DST 0x%x,0x%x\n",
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cm_passive: CONN_ERR event=0x%x status=%d %s,"
+ " DST %s,%d\n",
event->event, event->status,
- (event->status == -110)?"TIMEOUT":"",
- ntohl(((struct sockaddr_in *)
- &ipaddr->src_addr)->sin_addr.s_addr),
- ntohs(((struct sockaddr_in *)
- &ipaddr->src_addr)->sin_port),
- ntohl(((struct sockaddr_in *)
- &ipaddr->dst_addr)->sin_addr.s_addr),
- ntohs(((struct sockaddr_in *)
- &ipaddr->dst_addr)->sin_port));
+ (event->status == -ETIMEDOUT)?"TIMEOUT":"",
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
dapls_cr_callback(conn, IB_CME_DESTINATION_UNREACHABLE,
- NULL, conn->sp);
+ NULL, conn->sp);
break;
case RDMA_CM_EVENT_REJECTED:
{
ib_cm_events_t cm_event;
- /* no device type specified so assume IB for now */
- if (event->status == 28) /* IB_CM_REJ_CONSUMER_DEFINED */
+ /* valid REJ from consumer will always contain private data */
+ if (event->status == 28 &&
+ event->param.conn.private_data_len)
cm_event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
- else
+ else {
cm_event = IB_CME_DESTINATION_REJECT;
-
- dapl_dbg_log(
- DAPL_DBG_TYPE_WARN,
- " dapli_cm_passive: REJECTED reason=%d"
- " on SRC 0x%x,0x%x DST 0x%x,0x%x\n",
- event->status,
- ntohl(((struct sockaddr_in *)
- &ipaddr->src_addr)->sin_addr.s_addr),
- ntohs(((struct sockaddr_in *)
- &ipaddr->src_addr)->sin_port),
- ntohl(((struct sockaddr_in *)
- &ipaddr->dst_addr)->sin_addr.s_addr),
- ntohs(((struct sockaddr_in *)
- &ipaddr->dst_addr)->sin_port));
-
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cm_active: non-consumer REJ, reason=%d,"
+ " DST %s, %d\n",
+ event->status,
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
+ }
dapls_cr_callback(conn, cm_event, NULL, conn->sp);
-
break;
}
case RDMA_CM_EVENT_ESTABLISHED:
-
dapl_dbg_log(DAPL_DBG_TYPE_CM,
" passive_cb: cm_id %p PORT %d CONNECTED from 0x%x!\n",
conn->cm_id,
if (rdma_resolve_addr(conn->cm_id, NULL,
(struct sockaddr *)&conn->r_addr,
- conn->arp_timeout))
+ conn->arp_timeout)) {
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " dapl_cma_connect: rdma_resolve_addr ERR %s\n",
+ strerror(errno));
return dapl_convert_errno(errno,"ib_connect");
-
+ }
dapl_dbg_log(DAPL_DBG_TYPE_CM,
" connect: resolve_addr: cm_id %p -> %s port %d\n",
conn->cm_id,
*/
dat_status = dapls_ib_qp_alloc(ia_ptr, ep_ptr, NULL);
if (dat_status != DAT_SUCCESS) {
- dapl_dbg_log(DAPL_DBG_TYPE_ERR,
- " accept: ib_qp_alloc failed: %d\n",
- dat_status);
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " dapl_cma_accept: qp_alloc ERR %d\n",
+ dat_status);
goto bail;
}
}
ep_ptr->qp_handle->cm_id->qp = NULL;
dapli_destroy_conn(ep_ptr->qp_handle);
} else {
- dapl_dbg_log(DAPL_DBG_TYPE_ERR,
- " accept: ERR dev(%p!=%p) or port mismatch(%d!=%d)\n",
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " dapl_cma_accept: ERR dev(%p!=%p) or"
+ " port mismatch(%d!=%d)\n",
ep_ptr->qp_handle->cm_id->verbs,cr_conn->cm_id->verbs,
- ep_ptr->qp_handle->cm_id->port_num,
- cr_conn->cm_id->port_num );
+ ntohs(ep_ptr->qp_handle->cm_id->port_num),
+ ntohs(cr_conn->cm_id->port_num));
dat_status = DAT_INTERNAL_ERROR;
goto bail;
}
ret = rdma_accept(cr_conn->cm_id, &cr_conn->params);
if (ret) {
- dapl_dbg_log(DAPL_DBG_TYPE_ERR," accept: ERROR %d\n", ret);
+ dapl_log(DAPL_DBG_TYPE_ERR," dapl_cma_accept: ERR %d %s\n",
+ ret, strerror(errno));
dat_status = dapl_convert_errno(ret, "accept");
goto bail;
}
return DAT_SUCCESS;
}
+ /*
+ * Private data is needed so peer can determine real application
+ * reject from an abnormal application termination
+ */
ret = rdma_reject(cm_handle->cm_id, NULL, 0);
dapli_destroy_conn(cm_handle);
break;
case RDMA_CM_EVENT_ADDR_ERROR:
- dapl_dbg_log(DAPL_DBG_TYPE_WARN,
- " CM ADDR ERROR: -> %s retry (%d)..\n",
- inet_ntoa(((struct sockaddr_in *)
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cma_active: CM ADDR ERROR: ->"
+ " DST %s retry (%d)..\n",
+ inet_ntoa(((struct sockaddr_in *)
&conn->r_addr)->sin_addr),
- conn->arp_retries);
+ conn->arp_retries);
/* retry address resolution */
if ((--conn->arp_retries) &&
}
}
/* retries exhausted or resolve_addr failed */
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ "dapl_cma_active: ARP_ERR, retries(%d)"
+ " exhausted -> DST %s,%d\n",
+ IB_ARP_RETRY_COUNT,
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
+
dapl_evd_connection_callback(
conn, IB_CME_DESTINATION_UNREACHABLE,
NULL, conn->ep);
break;
-
case RDMA_CM_EVENT_ROUTE_ERROR:
- dapl_dbg_log(DAPL_DBG_TYPE_WARN,
- " CM ROUTE ERROR: -> %s retry (%d)..\n",
- inet_ntoa(((struct sockaddr_in *)
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl_cma_active: CM ROUTE ERROR: ->"
+ " DST %s retry (%d)..\n",
+ inet_ntoa(((struct sockaddr_in *)
&conn->r_addr)->sin_addr),
- conn->route_retries );
+ conn->route_retries );
/* retry route resolution */
if ((--conn->route_retries) &&
(event->status == -ETIMEDOUT))
dapli_addr_resolve(conn);
- else
- dapl_evd_connection_callback( conn,
+ else {
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ "dapl_cma_active: PATH_RECORD_ERR,"
+ " retries(%d) exhausted, DST %s,%d\n",
+ IB_ROUTE_RETRY_COUNT,
+ inet_ntoa(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_addr),
+ ntohs(((struct sockaddr_in *)
+ &conn->cm_id->route.addr.dst_addr)->sin_port));
+
+ dapl_evd_connection_callback(
+ conn,
IB_CME_DESTINATION_UNREACHABLE,
NULL, conn->ep);
+ }
break;
case RDMA_CM_EVENT_DEVICE_REMOVAL:
/* retry using network device name */
ret = getipaddr_netdev(name,addr,len);
if (ret) {
- dapl_dbg_log(DAPL_DBG_TYPE_WARN,
- " getipaddr: invalid name, addr, or netdev(%s)\n",
- name);
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " open_hca: getaddr_netdev ERROR:"
+ " %s. Is %s configured?\n",
+ strerror(errno), name);
return ret;
}
} else {
/* cm_id will bind local device/GID based on IP address */
if (rdma_create_id(g_cm_events, &cm_id, (void*)hca_ptr, RDMA_PS_TCP)) {
- dapl_dbg_log (DAPL_DBG_TYPE_ERR,
- " open_hca: ERR with RDMA channel: %s\n",
- strerror(errno));
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " open_hca: rdma_create_id ERR %s\n",
+ strerror(errno));
return DAT_INTERNAL_ERROR;
}
ret = rdma_bind_addr(cm_id,
(struct sockaddr *)&hca_ptr->hca_address);
if ((ret) || (cm_id->verbs == NULL)) {
rdma_destroy_id(cm_id);
- dapl_dbg_log(DAPL_DBG_TYPE_UTIL,
- " open_hca: ERR bind (%d) %s \n",
- ret, strerror(-ret));
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " open_hca: rdma_bind ERR %s."
+ " Is %s configured?\n",
+ strerror(errno),hca_name);
return DAT_INVALID_ADDRESS;
}
hca_ptr->ib_trans.ib_cq =
ibv_create_comp_channel(hca_ptr->ib_hca_handle);
if (hca_ptr->ib_trans.ib_cq == NULL) {
- dapl_dbg_log (DAPL_DBG_TYPE_ERR,
- " open_hca: ERR with CQ channel: %s\n",
- strerror(errno));
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " open_hca: ibv_create_comp_channel ERR %s\n",
+ strerror(errno));
goto bail;
}
dapl_dbg_log (DAPL_DBG_TYPE_UTIL,
opts = fcntl(hca_ptr->ib_trans.ib_cq->fd, F_GETFL); /* uCQ */
if (opts < 0 || fcntl(hca_ptr->ib_trans.ib_cq->fd,
F_SETFL, opts | O_NONBLOCK) < 0) {
- dapl_dbg_log (DAPL_DBG_TYPE_ERR,
- " open_hca: ERR with CQ FD (%d)\n",
- hca_ptr->ib_trans.ib_cq->fd);
+ dapl_log(DAPL_DBG_TYPE_ERR,
+ " open_hca: fcntl on ib_cq->fd %d ERR %d %s\n",
+ hca_ptr->ib_trans.ib_cq->fd, opts,
+ strerror(errno));
goto bail;
}
ia_attr->ia_address_ptr =
(DAT_IA_ADDRESS_PTR)&hca_ptr->hca_address;
- dapl_dbg_log(DAPL_DBG_TYPE_UTIL,
- " query_hca: %s %s %d.%d.%d.%d\n", hca_ptr->name,
+ dapl_log(DAPL_DBG_TYPE_UTIL,
+ "dapl_query_hca: %s %s %s\n", hca_ptr->name,
((struct sockaddr_in *)
ia_attr->ia_address_ptr)->sin_family == AF_INET ?
"AF_INET":"AF_INET6",
- ((struct sockaddr_in *)
- ia_attr->ia_address_ptr)->sin_addr.s_addr >> 0 & 0xff,
- ((struct sockaddr_in *)
- ia_attr->ia_address_ptr)->sin_addr.s_addr >> 8 & 0xff,
- ((struct sockaddr_in *)
- ia_attr->ia_address_ptr)->sin_addr.s_addr >> 16 & 0xff,
- ((struct sockaddr_in *)
- ia_attr->ia_address_ptr)->sin_addr.s_addr >> 24 & 0xff);
+ inet_ntoa(((struct sockaddr_in *)
+ ia_attr->ia_address_ptr)->sin_addr));
ia_attr->hardware_version_major = dev_attr.hw_ver;
ia_attr->max_eps = dev_attr.max_qp;
ia_attr->extension_supported = DAT_EXTENSION_IB;
ia_attr->extension_version = DAT_IB_EXTENSION_VERSION;
#endif
- dapl_dbg_log(DAPL_DBG_TYPE_UTIL,
- " query_hca: (ver=%x) ep %d ep_q %d evd %d evd_q %d\n",
+ dapl_log(DAPL_DBG_TYPE_UTIL,
+ "dapl_query_hca: (ver=%x) ep's %d ep_q %d"
+ " evd's %d evd_q %d\n",
ia_attr->hardware_version_major,
ia_attr->max_eps, ia_attr->max_dto_per_ep,
ia_attr->max_evds, ia_attr->max_evd_qlen );
- dapl_dbg_log(DAPL_DBG_TYPE_UTIL,
- " query_hca: msg %llu rdma %llu iov %d lmr %d rmr %d"
- " rd_io %d inline=%d\n",
+ dapl_log(DAPL_DBG_TYPE_UTIL,
+ "dapl_query_hca: msg %llu rdma %llu iov's %d"
+ " lmr %d rmr %d rd_io %d inline=%d\n",
ia_attr->max_mtu_size, ia_attr->max_rdma_size,
ia_attr->max_iov_segments_per_dto, ia_attr->max_lmrs,
ia_attr->max_rmrs, ia_attr->max_rdma_read_per_ep_in,
ep_attr->max_rdma_read_out= dev_attr.max_qp_rd_atom;
ep_attr->max_rdma_read_iov= dev_attr.max_sge;
ep_attr->max_rdma_write_iov= dev_attr.max_sge;
- dapl_dbg_log(DAPL_DBG_TYPE_UTIL,
- " query_hca: MAX msg %llu dto %d iov %d rdma i%d,o%d\n",
+ dapl_log(DAPL_DBG_TYPE_UTIL,
+ "dapl_query_hca: MAX msg %llu dto %d iov %d"
+ " rdma i%d,o%d\n",
ep_attr->max_mtu_size,
ep_attr->max_recv_dtos, ep_attr->max_recv_iov,
ep_attr->max_rdma_read_in, ep_attr->max_rdma_read_out);
struct dapl_ep *evd_ptr =
event.element.cq->cq_context;
- dapl_dbg_log(
- DAPL_DBG_TYPE_WARN,
- " async_event CQ (%p) ERR %d\n",
+ dapl_log(
+ DAPL_DBG_TYPE_ERR,
+ "dapl async_event CQ (%p) ERR %d\n",
evd_ptr, event.event_type);
/* report up if async callback still setup */
case IBV_EVENT_COMM_EST:
{
/* Received msgs on connected QP before RTU */
- dapl_dbg_log(
+ dapl_log(
DAPL_DBG_TYPE_UTIL,
" async_event COMM_EST(%p) rdata beat RTU\n",
event.element.qp);
struct dapl_ep *ep_ptr =
event.element.qp->qp_context;
- dapl_dbg_log(
- DAPL_DBG_TYPE_WARN,
- " async_event QP (%p) ERR %d\n",
+ dapl_log(
+ DAPL_DBG_TYPE_ERR,
+ "dapl async_event QP (%p) ERR %d\n",
ep_ptr, event.event_type);
/* report up if async callback still setup */
case IBV_EVENT_PKEY_CHANGE:
case IBV_EVENT_SM_CHANGE:
{
- dapl_dbg_log(DAPL_DBG_TYPE_WARN,
- " async_event: DEV ERR %d\n",
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ "dapl async_event: DEV ERR %d\n",
event.event_type);
/* report up if async callback still setup */
}
case IBV_EVENT_CLIENT_REREGISTER:
/* no need to report this event this time */
- dapl_dbg_log (DAPL_DBG_TYPE_WARN,
+ dapl_log (DAPL_DBG_TYPE_UTIL,
" async_event: IBV_EVENT_CLIENT_REREGISTER\n");
break;
default:
- dapl_dbg_log (DAPL_DBG_TYPE_WARN,
- " async_event: %d UNKNOWN\n",
+ dapl_log (DAPL_DBG_TYPE_WARN,
+ "dapl async_event: %d UNKNOWN\n",
event.event_type);
break;