Skip to content

Commit c1425b4

Browse files
committed
UCT: CR fixes p2
1 parent 2c492c4 commit c1425b4

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/uct/ib/base/ib_device.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <ucs/sys/sock.h>
2323
#include <ucs/sys/sys.h>
2424
#include <sys/poll.h>
25+
#include <netinet/in.h>
2526
#include <libgen.h>
2627
#include <pthread.h>
2728
#include <sched.h>
@@ -851,7 +852,7 @@ const char *uct_ib_gid_str(const union ibv_gid *gid, char *str, size_t max_size)
851852

852853
static int uct_ib_gid_is_ipv6_ll(const union ibv_gid *gid)
853854
{
854-
return ((gid->raw[0] == 0xfe) && ((gid->raw[1] & 0xc0) == 0x80));
855+
return IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)gid);
855856
}
856857

857858
static int uct_ib_device_is_addr_ipv4_mcast(const struct in6_addr *raw,
@@ -1081,14 +1082,14 @@ uct_ib_device_select_gid(uct_ib_device_t *dev, uint8_t port_num,
10811082
static const size_t max_str_len = 200;
10821083
struct {
10831084
uct_ib_roce_version_info_t info;
1084-
int skip_ll; /* link-local not allowed when true */
1085+
int allow_ll; /* link-local allowed when true */
10851086
} roce_prio[] = {
1086-
{{UCT_IB_DEVICE_ROCE_V2, AF_INET}},
1087+
{{UCT_IB_DEVICE_ROCE_V2, AF_INET}, 1},
1088+
{{UCT_IB_DEVICE_ROCE_V2, AF_INET6}, 0},
10871089
{{UCT_IB_DEVICE_ROCE_V2, AF_INET6}, 1},
1088-
{{UCT_IB_DEVICE_ROCE_V2, AF_INET6}},
1089-
{{UCT_IB_DEVICE_ROCE_V1, AF_INET}},
1090-
{{UCT_IB_DEVICE_ROCE_V1, AF_INET6}, 1},
1091-
{{UCT_IB_DEVICE_ROCE_V1, AF_INET6}}
1090+
{{UCT_IB_DEVICE_ROCE_V1, AF_INET}, 1},
1091+
{{UCT_IB_DEVICE_ROCE_V1, AF_INET6}, 0},
1092+
{{UCT_IB_DEVICE_ROCE_V1, AF_INET6}, 1}
10921093
};
10931094
int gid_tbl_len = uct_ib_device_port_attr(dev, port_num)->gid_tbl_len;
10941095
ucs_status_t status = UCS_OK;
@@ -1120,7 +1121,7 @@ uct_ib_device_select_gid(uct_ib_device_t *dev, uint8_t port_num,
11201121

11211122
if ((roce_prio[prio_idx].info.ver == gid_info_tmp.roce_info.ver) &&
11221123
(roce_prio[prio_idx].info.addr_family == gid_info_tmp.roce_info.addr_family) &&
1123-
(!roce_prio[prio_idx].skip_ll || !uct_ib_gid_is_ipv6_ll(&gid_info_tmp.gid)) &&
1124+
(roce_prio[prio_idx].allow_ll || !uct_ib_gid_is_ipv6_ll(&gid_info_tmp.gid)) &&
11241125
uct_ib_device_test_roce_gid_index(dev, port_num, &gid_info_tmp.gid, i) &&
11251126
uct_ib_device_match_roce_subnet(&gid_info_tmp, &subnets,
11261127
subnet_strs->mode)) {

0 commit comments

Comments
 (0)