scm provider sends small messages from both server and client sides. Set NODELAY on both sides to avoid send delays either way.
Signed-off-by: Arlin Davis <[email protected]> --- dapl/openib_scm/cm.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dapl/openib_scm/cm.c b/dapl/openib_scm/cm.c index 9713641..32e50fc 100644 --- a/dapl/openib_scm/cm.c +++ b/dapl/openib_scm/cm.c @@ -427,7 +427,7 @@ DAT_RETURN dapli_socket_disconnect(dp_ib_cm_handle_t cm_ptr) */ static void dapli_socket_connected(dp_ib_cm_handle_t cm_ptr, int err) { - int len, opt = 1; + int ret, len, opt = 1; struct iovec iov[2]; struct dapl_ep *ep_ptr = cm_ptr->ep; @@ -447,8 +447,12 @@ static void dapli_socket_connected(dp_ib_cm_handle_t cm_ptr, int err) " socket connected, write QP and private data\n"); /* no delay for small packets */ - setsockopt(cm_ptr->socket, IPPROTO_TCP, TCP_NODELAY, - (char *)&opt, sizeof(opt)); + ret = setsockopt(cm_ptr->socket, IPPROTO_TCP, TCP_NODELAY, + (char *)&opt, sizeof(opt)); + if (ret) + dapl_log(DAPL_DBG_TYPE_WARN, + " connected: NODELAY setsockopt: %s\n", + strerror(errno)); /* send qp info and pdata to remote peer */ iov[0].iov_base = (void *)&cm_ptr->dst; @@ -798,6 +802,7 @@ dapli_socket_listen(DAPL_IA * ia_ptr, DAT_CONN_QUAL serviceID, DAPL_SP * sp_ptr) setsockopt(cm_ptr->socket, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(opt)); + addr.sin_port = htons(serviceID); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; @@ -839,7 +844,7 @@ dapli_socket_listen(DAPL_IA * ia_ptr, DAT_CONN_QUAL serviceID, DAPL_SP * sp_ptr) static void dapli_socket_accept(ib_cm_srvc_handle_t cm_ptr) { dp_ib_cm_handle_t acm_ptr; - int len; + int ret, len, opt = 1; dapl_dbg_log(DAPL_DBG_TYPE_EP, " socket_accept\n"); @@ -868,6 +873,14 @@ static void dapli_socket_accept(ib_cm_srvc_handle_t cm_ptr) return; } + /* no delay for small packets */ + ret = setsockopt(acm_ptr->socket, IPPROTO_TCP, TCP_NODELAY, + (char *)&opt, sizeof(opt)); + if (ret) + dapl_log(DAPL_DBG_TYPE_WARN, + " accept: NODELAY setsockopt: %s\n", + strerror(errno)); + acm_ptr->state = DCM_ACCEPTING; dapli_cm_queue(acm_ptr); -- 1.5.2.5 _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
