RDMA/rxe: Make rping work with tun device
Because the type of tun device is ARPHRD_NONE, in cma, ARPHRD_NONE is not recognized. To RXE device, just as SIW does, ARPHRD_NONE is added to support. Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> Link: https://patch.msgid.link/20250119172831.3123110-4-yanjun.zhu@linux.dev Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
93486fc96f
commit
190797d47f
@@ -739,12 +739,26 @@ cma_validate_port(struct ib_device *device, u32 port,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port)) {
|
||||
ndev = dev_get_by_index(dev_addr->net, bound_if_index);
|
||||
if (!ndev)
|
||||
goto out;
|
||||
/*
|
||||
* For a RXE device, it should work with TUN device and normal ethernet
|
||||
* devices. Use driver_id to check if a device is a RXE device or not.
|
||||
* ARPHDR_NONE means a TUN device.
|
||||
*/
|
||||
if (device->ops.driver_id == RDMA_DRIVER_RXE) {
|
||||
if ((dev_type == ARPHRD_NONE || dev_type == ARPHRD_ETHER)
|
||||
&& rdma_protocol_roce(device, port)) {
|
||||
ndev = dev_get_by_index(dev_addr->net, bound_if_index);
|
||||
if (!ndev)
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
gid_type = IB_GID_TYPE_IB;
|
||||
if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port)) {
|
||||
ndev = dev_get_by_index(dev_addr->net, bound_if_index);
|
||||
if (!ndev)
|
||||
goto out;
|
||||
} else {
|
||||
gid_type = IB_GID_TYPE_IB;
|
||||
}
|
||||
}
|
||||
|
||||
sgid_attr = rdma_find_gid_by_port(device, gid, gid_type, port, ndev);
|
||||
|
||||
Reference in New Issue
Block a user