1
1

Clarifying and fixing SCTP btl_sctp_if_11 parameter

This commit was SVN r17834.
Этот коммит содержится в:
Brad Penoff 2008-03-17 09:18:31 +00:00
родитель f488b94899
Коммит be13b86fc5
2 изменённых файлов: 15 добавлений и 3 удалений

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

@ -239,8 +239,11 @@ int mca_btl_sctp_component_open(void)
/* use a single one-to-many socket by default except in Solaris (see /* use a single one-to-many socket by default except in Solaris (see
* the configure.m4 file) * the configure.m4 file)
*/ */
mca_btl_sctp_component.sctp_if_11 = mca_base_param_reg_int(&mca_btl_sctp_component.super.btl_version,
mca_btl_sctp_param_register_int ("if_11", OMPI_MCA_BTL_SCTP_USE_ONE_TO_ONE_SOCKET); "if_11", "If 0, have one SCTP BTL module and let SCTP do multilink scheduling. If non-zero, have an SCTP BTL module per link and let the PML do the scheduling.",
false, false,
OMPI_MCA_BTL_SCTP_USE_ONE_TO_ONE_SOCKET,
&mca_btl_sctp_component.sctp_if_11);
/* have lower exclusivity than tcp */ /* have lower exclusivity than tcp */
mca_btl_sctp_module.super.btl_exclusivity = MCA_BTL_EXCLUSIVITY_LOW; mca_btl_sctp_module.super.btl_exclusivity = MCA_BTL_EXCLUSIVITY_LOW;

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

@ -203,7 +203,16 @@ int mca_btl_sctp_proc_insert(
if(endpoint_addr->addr_inuse != 0) { if(endpoint_addr->addr_inuse != 0) {
continue; continue;
} }
if(net1 == net2) { /* in the 1-to-many code, we sctp_bindx all addresses to one
* association, and only represent this multi-NIC endpoint
* internally as one BTL. this is within mca_btl_sctp_create.
* this is done so that SCTP itself handles multi-path scenarios
* since the transport has multihoming. as a result, we simply
* have to pick one of the addresses in the association (it doesn't
* matter to the API which is chosen); we pick the one which bind
* is called (NOT sctp_bindx) even if it is a private IP...
*/
if(net1 == net2 || 0 == mca_btl_sctp_component.sctp_if_11) {
btl_endpoint->endpoint_addr = endpoint_addr; btl_endpoint->endpoint_addr = endpoint_addr;
break; break;
} else if(btl_endpoint->endpoint_addr != 0) { } else if(btl_endpoint->endpoint_addr != 0) {