]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[infiniband] Do not use GRH for local paths
authorMichael Brown <mcb30@ipxe.org>
Fri, 4 Mar 2016 13:55:50 +0000 (13:55 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 8 Mar 2016 12:23:24 +0000 (12:23 +0000)
Avoid including an unnecessary GRH in packets sent to unicast
destinations within the local subnet.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/infiniband/ib_pathrec.c

index 113b90bdaddb1b44ccb17091fa1abc2087067fef..4b00f3b96198bf1433f3df693dfa0e634b50b8e6 100644 (file)
@@ -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 ) {