On 3/19/20 6:53 AM, Jason Gunthorpe wrote:
On Thu, Mar 19, 2020 at 02:48:20PM +0200, Max Gurtovoy wrote:
Nevertheless, this situation is better from the current SRQ per HCA
implementation.
nvme/srp/etc already use srq? I see it in the target but not initiator?
Just worried about breaking some weird target somewhere
From the upstream SRP target driver:
static void srpt_get_ioc(struct srpt_port *sport, u32 slot,
struct ib_dm_mad *mad)
{
[ ... ]
if (sdev->use_srq)
send_queue_depth = sdev->srq_size;
else
send_queue_depth = min(MAX_SRPT_RQ_SIZE,
sdev->device->attrs.max_qp_wr);
[ ... ]
iocp->send_queue_depth = cpu_to_be16(send_queue_depth);
[ ... ]
}
I'm not sure the SRP initiator uses that data from the device management
I/O controller profile.
Anyway, with one SRQ per initiator it is possible for the initiator to
prevent SRQ overflows. I don't think that it is possible for an initiator
to prevent target side SRQ overflows if shared receive queues are shared
across multiple initiators.
Thanks,
Bart.