mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-03-23 11:47:04 +08:00
IB/core: Fix false search of the IB_SA_WELL_KNOWN_GUID
When virtualziation is supported, VFs may send SA MADs to a GID formed by the concatenation of the subnet prefix with the IB_SA_WELL_KNOWN_GUID. When a response is required, the current code will search the local HCA's port for the received GID to figure out the GID index of the entry containing this GID. However, since this is not a real GID it will not be found and error will be printed. We change the logic to check if the destination GID is this special GID and avoid lookup in this case and use GID index 0. Fixes: a0c1b2a35087 ('IB/core: Support accessing SA in virtualized environment') Signed-off-by: Eli Cohen <eli@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
c65f6c5a36
commit
b3556005c5
@ -511,12 +511,16 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num,
|
||||
ah_attr->grh.dgid = sgid;
|
||||
|
||||
if (!rdma_cap_eth_ah(device, port_num)) {
|
||||
ret = ib_find_cached_gid_by_port(device, &dgid,
|
||||
IB_GID_TYPE_IB,
|
||||
port_num, NULL,
|
||||
&gid_index);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (dgid.global.interface_id != cpu_to_be64(IB_SA_WELL_KNOWN_GUID)) {
|
||||
ret = ib_find_cached_gid_by_port(device, &dgid,
|
||||
IB_GID_TYPE_IB,
|
||||
port_num, NULL,
|
||||
&gid_index);
|
||||
if (ret)
|
||||
return ret;
|
||||
} else {
|
||||
gid_index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ah_attr->grh.sgid_index = (u8) gid_index;
|
||||
|
Loading…
x
Reference in New Issue
Block a user