david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2016-03-04 13:55:50 +00:00
parent bd1687465c
commit 114a2f19a6
1 changed files with 6 additions and 7 deletions

View 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 ) {