From: Matan Barak <matanb@xxxxxxxxxxxx> Since creating AH depends on resolving the MAC address for Ethernet link layer, ibv_query_port is used. This verb gives some information that is irrelevant for creating AH, but in some vendors it forces us to call kernel uverb. Therefore, we prefer using the extended verb and query only the relevant fields and by thus give the vendor more chance to optimizations. Signed-off-by: Matan Barak <matanb@xxxxxxxxxxxx> Signed-off-by: Or Gerlitz <ogerlitz@xxxxxxxxxxxx> --- src/verbs.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/verbs.c b/src/verbs.c index 6db79e8..e022cd8 100644 --- a/src/verbs.c +++ b/src/verbs.c @@ -552,7 +552,7 @@ struct ibv_ah *__ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) int err; struct ibv_ah *ah = NULL; #ifndef NRESOLVE_NEIGH - struct ibv_port_attr port_attr; + struct ibv_port_attr_ex port_attr; int dst_family; int src_family; int oif; @@ -572,7 +572,9 @@ struct ibv_ah *__ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) goto return_ah; } - err = ibv_query_port(pd->context, attr->port_num, &port_attr); + port_attr.comp_mask = IBV_QUERY_PORT_EX_LINK_LAYER | + IBV_QUERY_PORT_EX_CAP_FLAGS; + err = ibv_query_port_ex(pd->context, attr->port_num, &port_attr); if (err) { fprintf(stderr, PFX "ibv_create_ah failed to query port.\n"); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html