|
@@ -75,6 +75,12 @@ static void ib_path_complete ( struct ib_device *ibdev,
|
75
|
75
|
"%d\n", ibdev->name, IB_GID_ARGS ( dgid ), path->av.lid,
|
76
|
76
|
path->av.sl, path->av.rate );
|
77
|
77
|
|
|
78
|
+ /* Use only the LID if no GRH is needed for this path */
|
|
79
|
+ if ( memcmp ( &path->av.gid.s.prefix, &ibdev->gid.s.prefix,
|
|
80
|
+ sizeof ( path->av.gid.s.prefix ) ) == 0 ) {
|
|
81
|
+ path->av.gid_present = 0;
|
|
82
|
+ }
|
|
83
|
+
|
78
|
84
|
out:
|
79
|
85
|
/* Destroy the completed transaction */
|
80
|
86
|
ib_destroy_madx ( ibdev, mi, madx );
|
|
@@ -245,13 +251,6 @@ int ib_resolve_path ( struct ib_device *ibdev, struct ib_address_vector *av ) {
|
245
|
251
|
struct ib_cached_path *cached;
|
246
|
252
|
unsigned int cache_idx;
|
247
|
253
|
|
248
|
|
- /* Sanity check */
|
249
|
|
- if ( ! av->gid_present ) {
|
250
|
|
- DBGC ( ibdev, "IBDEV %s attempt to look up path without GID\n",
|
251
|
|
- ibdev->name );
|
252
|
|
- return -EINVAL;
|
253
|
|
- }
|
254
|
|
-
|
255
|
254
|
/* Look in cache for a matching entry */
|
256
|
255
|
cached = ib_find_path_cache_entry ( ibdev, gid );
|
257
|
256
|
if ( cached && cached->path->av.lid ) {
|