1
1
This commit was SVN r1051.
Этот коммит содержится в:
Tim Woodall 2004-04-19 16:10:24 +00:00
родитель 18ea956075
Коммит 07d6a4db6b
3 изменённых файлов: 31 добавлений и 8 удалений

Просмотреть файл

@ -140,19 +140,19 @@ int mca_ptl_tcp_module_close(void)
if (mca_ptl_tcp_module.tcp_send_requests.fl_num_allocated != if (mca_ptl_tcp_module.tcp_send_requests.fl_num_allocated !=
mca_ptl_tcp_module.tcp_send_requests.super.lam_list_length) { mca_ptl_tcp_module.tcp_send_requests.super.lam_list_length) {
lam_output(0, "tcp send requests: %d allocated %d returned\n", lam_output(0, "tcp send requests: %d allocated %d returned\n",
mca_ptl_tcp_module.tcp_send_requests.fl_num_allocated != mca_ptl_tcp_module.tcp_send_requests.fl_num_allocated,
mca_ptl_tcp_module.tcp_send_requests.super.lam_list_length); mca_ptl_tcp_module.tcp_send_requests.super.lam_list_length);
} }
if (mca_ptl_tcp_module.tcp_send_frags.fl_num_allocated != if (mca_ptl_tcp_module.tcp_send_frags.fl_num_allocated !=
mca_ptl_tcp_module.tcp_send_frags.super.lam_list_length) { mca_ptl_tcp_module.tcp_send_frags.super.lam_list_length) {
lam_output(0, "tcp send frags: %d allocated %d returned\n", lam_output(0, "tcp send frags: %d allocated %d returned\n",
mca_ptl_tcp_module.tcp_send_frags.fl_num_allocated != mca_ptl_tcp_module.tcp_send_frags.fl_num_allocated,
mca_ptl_tcp_module.tcp_send_frags.super.lam_list_length); mca_ptl_tcp_module.tcp_send_frags.super.lam_list_length);
} }
if (mca_ptl_tcp_module.tcp_recv_frags.fl_num_allocated != if (mca_ptl_tcp_module.tcp_recv_frags.fl_num_allocated !=
mca_ptl_tcp_module.tcp_recv_frags.super.lam_list_length) { mca_ptl_tcp_module.tcp_recv_frags.super.lam_list_length) {
lam_output(0, "tcp recv frags: %d allocated %d returned\n", lam_output(0, "tcp recv frags: %d allocated %d returned\n",
mca_ptl_tcp_module.tcp_recv_frags.fl_num_allocated != mca_ptl_tcp_module.tcp_recv_frags.fl_num_allocated,
mca_ptl_tcp_module.tcp_recv_frags.super.lam_list_length); mca_ptl_tcp_module.tcp_recv_frags.super.lam_list_length);
} }
@ -216,7 +216,7 @@ static int mca_ptl_tcp_module_create_instances(void)
return LAM_ERR_OUT_OF_RESOURCE; return LAM_ERR_OUT_OF_RESOURCE;
/* if the user specified an interface list - use these exclusively */ /* if the user specified an interface list - use these exclusively */
argv = include = lam_argv_split(mca_ptl_tcp_module.tcp_if_include,'\''); argv = include = lam_argv_split(mca_ptl_tcp_module.tcp_if_include,',');
while(argv && *argv) { while(argv && *argv) {
char* if_name = *argv; char* if_name = *argv;
int if_index = lam_ifnametoindex(if_name); int if_index = lam_ifnametoindex(if_name);
@ -235,7 +235,7 @@ static int mca_ptl_tcp_module_create_instances(void)
/* if the interface list was not specified by the user, create /* if the interface list was not specified by the user, create
* a PTL for each interface that was not excluded. * a PTL for each interface that was not excluded.
*/ */
exclude = lam_argv_split(mca_ptl_tcp_module.tcp_if_exclude,'\''); exclude = lam_argv_split(mca_ptl_tcp_module.tcp_if_exclude,',');
for(if_index = lam_ifbegin(); if_index >= 0; if_index = lam_ifnext(if_index)) { for(if_index = lam_ifbegin(); if_index >= 0; if_index = lam_ifnext(if_index)) {
char if_name[32]; char if_name[32];
lam_ifindextoname(if_index, if_name, sizeof(if_name)); lam_ifindextoname(if_index, if_name, sizeof(if_name));
@ -394,8 +394,6 @@ mca_ptl_t** mca_ptl_tcp_module_init(int *num_ptls,
/* create a PTL TCP module for selected interfaces */ /* create a PTL TCP module for selected interfaces */
if(mca_ptl_tcp_module_create_instances() != LAM_SUCCESS) if(mca_ptl_tcp_module_create_instances() != LAM_SUCCESS)
return 0; return 0;
if(mca_ptl_tcp_module.tcp_num_ptls == 1)
mca_ptl_tcp_module.tcp_ptls[0]->super.ptl_max_frag_size = 1024 * 1024;
/* create a TCP listen socket for incoming connection attempts */ /* create a TCP listen socket for incoming connection attempts */
if(mca_ptl_tcp_module_create_listen() != LAM_SUCCESS) if(mca_ptl_tcp_module_create_listen() != LAM_SUCCESS)

Просмотреть файл

@ -232,6 +232,31 @@ void mca_ptl_tcp_peer_close(mca_ptl_base_peer_t* ptl_peer)
static void mca_ptl_tcp_peer_connected(mca_ptl_base_peer_t* ptl_peer) static void mca_ptl_tcp_peer_connected(mca_ptl_base_peer_t* ptl_peer)
{ {
/* setup socket options */
int optval = 1;
lam_socklen_t optlen = sizeof(optval);
#if defined(TCP_NODELAY)
optval = 1;
if(setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, &optval, optlen) < 0) {
lam_output(0, "mca_ptl_tcp_peer_connected: setsockopt(TCP_NODELAY) failed with errno=%d\n", errno);
}
#endif
#if defined(TCP_NODELACK)
optval = 1;
if(setsockopt(sd, IPPROTO_TCP, TCP_NODELACK, &optval, optlen) < 0) {
lam_output(0, "mca_ptl_tcp_peer_connected: setsockopt(TCP_NODELACK) failed with errno=%d\n", errno);
}
#endif
#if 0
#if defined(TCP_QUICKACK)
optval = 1;
if(setsockopt(sd, IPPROTO_TCP, TCP_QUICKACK, &optval, optlen) < 0) {
lam_output(0, "mca_ptl_tcp_peer_connected: setsockopt(TCP_QUICKACK) failed with errno=%d\n", errno);
}
#endif
#endif
ptl_peer->peer_state = MCA_PTL_TCP_CONNECTED; ptl_peer->peer_state = MCA_PTL_TCP_CONNECTED;
ptl_peer->peer_retries = 0; ptl_peer->peer_retries = 0;
if(lam_list_get_size(&ptl_peer->peer_frags) > 0) { if(lam_list_get_size(&ptl_peer->peer_frags) > 0) {

Просмотреть файл

@ -123,7 +123,7 @@ static bool mca_ptl_tcp_recv_frag_ack(mca_ptl_tcp_recv_frag_t* frag, int sd)
sendreq = sendfrag->super.frag_request; sendreq = sendfrag->super.frag_request;
sendreq->req_peer_request = frag->frag_header.hdr_ack.hdr_dst_ptr; sendreq->req_peer_request = frag->frag_header.hdr_ack.hdr_dst_ptr;
sendfrag->frag_owner->ptl_send_progress(sendreq, &sendfrag->super); sendfrag->frag_owner->ptl_send_progress(sendreq, &sendfrag->super);
/* don't return first fragment - it is returned along with the request */ mca_ptl_tcp_recv_frag_return(frag->frag_owner, frag);
return true; return true;
} }