diff options
Diffstat (limited to 'drivers/infiniband/core/verbs.c')
-rw-r--r-- | drivers/infiniband/core/verbs.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 1d7d4cf442e3..6298f54b4137 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c | |||
@@ -511,12 +511,16 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, | |||
511 | ah_attr->grh.dgid = sgid; | 511 | ah_attr->grh.dgid = sgid; |
512 | 512 | ||
513 | if (!rdma_cap_eth_ah(device, port_num)) { | 513 | if (!rdma_cap_eth_ah(device, port_num)) { |
514 | ret = ib_find_cached_gid_by_port(device, &dgid, | 514 | if (dgid.global.interface_id != cpu_to_be64(IB_SA_WELL_KNOWN_GUID)) { |
515 | IB_GID_TYPE_IB, | 515 | ret = ib_find_cached_gid_by_port(device, &dgid, |
516 | port_num, NULL, | 516 | IB_GID_TYPE_IB, |
517 | &gid_index); | 517 | port_num, NULL, |
518 | if (ret) | 518 | &gid_index); |
519 | return ret; | 519 | if (ret) |
520 | return ret; | ||
521 | } else { | ||
522 | gid_index = 0; | ||
523 | } | ||
520 | } | 524 | } |
521 | 525 | ||
522 | ah_attr->grh.sgid_index = (u8) gid_index; | 526 | ah_attr->grh.sgid_index = (u8) gid_index; |