On Thu, 2018-05-10 at 12:09 -0500, Steve Wise wrote: > On 5/10/2018 11:54 AM, Bart Van Assche wrote: > > [ ... ] > > Regarding your question about the SRP protocol: the only aspects of SRP that are > > specific to InfiniBand are the target port discovery mechanism (because it uses > > MADs) and also the format of the login data (which is too large to fit into the > > RDMA/CM login data buffer). > > Sounds like these two are show stoppers if they are required for > attaching to srp target devices. Hello Steve, Please have a look at include/scsi/srp.h. As one can see two login request data structures have been defined in that header file: srp_login_req (for the IB/CM) and srp_login_req_rdma (for the RDMA/CM). > > Other aspects of the SRP protocol do not depend on > > the IB protocol. As you may have noticed RDMA/CM support for the SRP initiator > > was added in kernel v4.16 and RDMA/CM support for the SRP target driver was > > added in kernel v4.17-rc1. I have not yet tried to test this code with the iWARP > > transport. But it is easy to test this code against RoCE as follows: > > * Clone https://github.com/bvanassche/srp-test > > * Run the following command: srp-test/run_tests -c > > I haven't looked much into the srp code. But does the target use the > RDMA_RW API? If not, then it probably has some IB-specific assumptions. > The biggie is that the target MR must have REMOTE_WRITE access. So you > cannot use the local dma lkey, for example, like you can with IB. And > iWARP procotol limits the SGE depth for the target of a read to be 1. The ib_srpt driver indeed uses the rdma_rw API (thanks to Christoph's work). As one can see in srpt_write_pending() a chain of RDMA READ requests is built and submitted to the HCA through a single ib_post_send() call. Bart. ��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f