From 27f64186c5c421557a9fc7bdaf3a0cda26d6f951 Mon Sep 17 00:00:00 2001 From: Sergey Oblomov Date: Mon, 4 Feb 2019 17:14:10 +0200 Subject: [PATCH] IB/iWARP: shifted evaluation to uct_ib_device_port_check --- src/uct/ib/base/ib_device.c | 11 +++++++++++ src/uct/ib/base/ib_md.c | 12 ++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/uct/ib/base/ib_device.c b/src/uct/ib/base/ib_device.c index b7633f0ee4d..af67993f96a 100644 --- a/src/uct/ib/base/ib_device.c +++ b/src/uct/ib/base/ib_device.c @@ -385,6 +385,11 @@ static size_t uct_ib_device_get_ib_gid_index(uct_ib_md_t *md) } } +static int uct_ib_device_is_iwarp(uct_ib_device_t *dev) +{ + return dev->ibv_context->device->transport_type == IBV_TRANSPORT_IWARP; +} + ucs_status_t uct_ib_device_port_check(uct_ib_device_t *dev, uint8_t port_num, unsigned flags) { @@ -405,6 +410,12 @@ ucs_status_t uct_ib_device_port_check(uct_ib_device_t *dev, uint8_t port_num, return UCS_ERR_UNREACHABLE; } + if (uct_ib_device_is_iwarp(dev)) { + /* TODO: enable it when support is ready */ + ucs_debug("iWarp device %s is not supported", uct_ib_device_name(dev)); + return UCS_ERR_UNSUPPORTED; + } + if (!uct_ib_device_is_port_ib(dev, port_num) && (flags & UCT_IB_DEVICE_FLAG_LINK_IB)) { ucs_debug("%s:%d is not IB link layer", uct_ib_device_name(dev), port_num); diff --git a/src/uct/ib/base/ib_md.c b/src/uct/ib/base/ib_md.c index 8d20d06476d..21bed12ca4a 100644 --- a/src/uct/ib/base/ib_md.c +++ b/src/uct/ib/base/ib_md.c @@ -1161,7 +1161,7 @@ static ucs_status_t uct_ib_query_md_resources(uct_md_resource_desc_t **resources uct_md_resource_desc_t *resources; struct ibv_device **device_list; ucs_status_t status; - int i, num_devices, num_resources; + int i, num_devices; /* Get device list from driver */ device_list = ibv_get_device_list(&num_devices); @@ -1177,16 +1177,12 @@ static ucs_status_t uct_ib_query_md_resources(uct_md_resource_desc_t **resources goto out_free_device_list; } - for (i = 0, num_resources = 0; i < num_devices; ++i) { - if (device_list[i]->transport_type != IBV_TRANSPORT_IWARP) { - uct_ib_make_md_name(resources[num_resources++].md_name, device_list[i]); - } else { - ucs_debug("iWarp device %s is not supported", ibv_get_device_name(device_list[i])); - } + for (i = 0; i < num_devices; ++i) { + uct_ib_make_md_name(resources[i].md_name, device_list[i]); } *resources_p = resources; - *num_resources_p = num_resources; + *num_resources_p = num_devices; status = UCS_OK; out_free_device_list: