fixes or multi-nic support
This commit was SVN r1051.
Этот коммит содержится в:
родитель
18ea956075
Коммит
07d6a4db6b
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user