From 61b2638e94e717edec64a9d395d0febbf980d132 Mon Sep 17 00:00:00 2001 From: Jeff Squyres Date: Thu, 20 Apr 2017 13:28:15 -0700 Subject: [PATCH 1/2] usnic: ensure to set the iov_limit to 1 The usNIC BTL does not use more than 1 iov, so be sure to set it to 1 so that we don't allocate cq/rq/sq entries based on a default (i.e., >1) number of iovs per entry. Signed-off-by: Jeff Squyres (cherry picked from commit 7bd2de9960419422a4591f4b5d286f1f911a0a47) --- opal/mca/btl/usnic/btl_usnic_module.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opal/mca/btl/usnic/btl_usnic_module.c b/opal/mca/btl/usnic/btl_usnic_module.c index efad1ed2b7c..4b41edcde5d 100644 --- a/opal/mca/btl/usnic/btl_usnic_module.c +++ b/opal/mca/btl/usnic/btl_usnic_module.c @@ -1552,6 +1552,8 @@ static int create_ep(opal_btl_usnic_module_t* module, hint->rx_attr->size = channel->chan_rd_num; hint->tx_attr->size = channel->chan_sd_num; + hint->tx_attr->iov_limit = 1; + hint->rx_attr->iov_limit = 1; /* specific ports requested? */ sin = hint->src_addr; From e8d0e1596cd7148fdc24ca6afce1922d5bb0d7b9 Mon Sep 17 00:00:00 2001 From: Jeff Squyres Date: Fri, 21 Apr 2017 08:51:15 -0700 Subject: [PATCH 2/2] usnic: more iov_limit fixes Follow on to 7bd2de9960419422a4591f4b5d286f1f911a0a47: move setting the iov_limit to 1 earlier in the startup sequence. Signed-off-by: Jeff Squyres (cherry picked from commit 1d5e08f44a21c17547c6bce8d04ff04f138eef39) --- opal/mca/btl/usnic/btl_usnic_component.c | 7 +++++++ opal/mca/btl/usnic/btl_usnic_module.c | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/opal/mca/btl/usnic/btl_usnic_component.c b/opal/mca/btl/usnic/btl_usnic_component.c index 8a42c08d029..25a64a25d26 100644 --- a/opal/mca/btl/usnic/btl_usnic_component.c +++ b/opal/mca/btl/usnic/btl_usnic_component.c @@ -704,6 +704,8 @@ static mca_btl_base_module_t** usnic_component_init(int* num_btl_modules, struct fi_info hints = {0}; struct fi_ep_attr ep_attr = {0}; struct fi_fabric_attr fabric_attr = {0}; + struct fi_rx_attr rx_attr = {0}; + struct fi_tx_attr tx_attr = {0}; /* We only want providers named "usnic" that are of type EP_DGRAM */ fabric_attr.prov_name = "usnic"; @@ -714,6 +716,11 @@ static mca_btl_base_module_t** usnic_component_init(int* num_btl_modules, hints.addr_format = FI_SOCKADDR; hints.ep_attr = &ep_attr; hints.fabric_attr = &fabric_attr; + hints.tx_attr = &tx_attr; + hints.rx_attr = &rx_attr; + + tx_attr.iov_limit = 1; + rx_attr.iov_limit = 1; ret = fi_getinfo(libfabric_api, NULL, 0, 0, &hints, &info_list); if (0 != ret) { diff --git a/opal/mca/btl/usnic/btl_usnic_module.c b/opal/mca/btl/usnic/btl_usnic_module.c index 4b41edcde5d..efad1ed2b7c 100644 --- a/opal/mca/btl/usnic/btl_usnic_module.c +++ b/opal/mca/btl/usnic/btl_usnic_module.c @@ -1552,8 +1552,6 @@ static int create_ep(opal_btl_usnic_module_t* module, hint->rx_attr->size = channel->chan_rd_num; hint->tx_attr->size = channel->chan_sd_num; - hint->tx_attr->iov_limit = 1; - hint->rx_attr->iov_limit = 1; /* specific ports requested? */ sin = hint->src_addr;