Commit 190797d4 authored by Zhu Yanjun's avatar Zhu Yanjun Committed by Leon Romanovsky
Browse files

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: default avatarZhu Yanjun <yanjun.zhu@linux.dev>
Link: https://patch.msgid.link/20250119172831.3123110-4-yanjun.zhu@linux.dev


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent 93486fc9
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -739,6 +739,19 @@ cma_validate_port(struct ib_device *device, u32 port,
		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 {
		if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port)) {
			ndev = dev_get_by_index(dev_addr->net, bound_if_index);
			if (!ndev)
@@ -746,6 +759,7 @@ cma_validate_port(struct ib_device *device, u32 port,
		} else {
			gid_type = IB_GID_TYPE_IB;
		}
	}

	sgid_attr = rdma_find_gid_by_port(device, gid, gid_type, port, ndev);
	dev_put(ndev);