Honor port_num while resolving GID for IB link layer in ibcore.
ah_attr contains the port number to which cm_id is bound. However, while searching for GID table for matching GID entry, the port number is ignored. This could cause the wrong GID to be used when the ah_attr is converted to an AH. Linux commit: 563c4ba3bd2b8b0b21c65669ec2226b1cfa1138b MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
56acbf0932
commit
0f2b4041fe
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=336386
@ -727,21 +727,19 @@ int ib_init_ah_from_mcmember(struct ib_device *device, u8 port_num,
|
||||
{
|
||||
int ret;
|
||||
u16 gid_index;
|
||||
u8 p;
|
||||
|
||||
if (rdma_protocol_roce(device, port_num)) {
|
||||
ret = ib_find_cached_gid_by_port(device, &rec->port_gid,
|
||||
gid_type, port_num,
|
||||
ndev,
|
||||
&gid_index);
|
||||
} else if (rdma_protocol_ib(device, port_num)) {
|
||||
ret = ib_find_cached_gid(device, &rec->port_gid,
|
||||
IB_GID_TYPE_IB, NULL, &p,
|
||||
/* GID table is not based on the netdevice for IB link layer,
|
||||
* so ignore ndev during search.
|
||||
*/
|
||||
if (rdma_protocol_ib(device, port_num))
|
||||
ndev = NULL;
|
||||
else if (!rdma_protocol_roce(device, port_num))
|
||||
return -EINVAL;
|
||||
|
||||
ret = ib_find_cached_gid_by_port(device, &rec->port_gid,
|
||||
gid_type, port_num,
|
||||
ndev,
|
||||
&gid_index);
|
||||
} else {
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user