From: Michael Brown Date: Fri, 4 Mar 2016 13:55:50 +0000 (+0000) Subject: [infiniband] Do not use GRH for local paths X-Git-Tag: v1.20.1~562 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=114a2f19a638bb92fb39e901d802f68a7276dca1;p=thirdparty%2Fipxe.git [infiniband] Do not use GRH for local paths Avoid including an unnecessary GRH in packets sent to unicast destinations within the local subnet. Signed-off-by: Michael Brown --- diff --git a/src/net/infiniband/ib_pathrec.c b/src/net/infiniband/ib_pathrec.c index 113b90bda..4b00f3b96 100644 --- a/src/net/infiniband/ib_pathrec.c +++ b/src/net/infiniband/ib_pathrec.c @@ -75,6 +75,12 @@ static void ib_path_complete ( struct ib_device *ibdev, "%d\n", ibdev->name, IB_GID_ARGS ( dgid ), path->av.lid, path->av.sl, path->av.rate ); + /* Use only the LID if no GRH is needed for this path */ + if ( memcmp ( &path->av.gid.s.prefix, &ibdev->gid.s.prefix, + sizeof ( path->av.gid.s.prefix ) ) == 0 ) { + path->av.gid_present = 0; + } + out: /* Destroy the completed transaction */ ib_destroy_madx ( ibdev, mi, madx ); @@ -245,13 +251,6 @@ int ib_resolve_path ( struct ib_device *ibdev, struct ib_address_vector *av ) { struct ib_cached_path *cached; unsigned int cache_idx; - /* Sanity check */ - if ( ! av->gid_present ) { - DBGC ( ibdev, "IBDEV %s attempt to look up path without GID\n", - ibdev->name ); - return -EINVAL; - } - /* Look in cache for a matching entry */ cached = ib_find_path_cache_entry ( ibdev, gid ); if ( cached && cached->path->av.lid ) {