On 7/19/19 11:54 PM, oulijun wrote:
I am targeting a problem about RoCE and SCSI over RDMA from srpt in kernel-4.14. When insmod srpt.ko and insmod hns-roce-hw-v2.ko, it will report a warning in srpt_add_one: ib_srpt srpt_add_one(hns_0) failed.
How about the following patch? diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 1a039f16d315..e2a4a14763b8 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -3109,7 +3109,8 @@ static void srpt_add_one(struct ib_device *device) srpt_use_srq(sdev, sdev->port[0].port_attrib.use_srq); if (!srpt_service_guid) - srpt_service_guid = be64_to_cpu(device->node_guid); + srpt_service_guid = be64_to_cpu(device->node_guid) & + ~IB_SERVICE_ID_AGN_MASK; if (rdma_port_get_link_layer(device, 1) == IB_LINK_LAYER_INFINIBAND) sdev->cm_id = ib_create_cm_id(device, srpt_cm_handler, sdev);
In addition, I analyzed a patch in kernel-4.17(IB/srpt: Add RDMA/CM support). As a result, I can understand that the previous srpt is not supported by RDMA/CM? So, all RoCE will failed when use kernel-4.14 version to run srpt.ko?
That's correct. The upstream SRP drivers only support RoCE in kernel versions v4.17 and later. Thanks, Bart.