RE: NFSoRDMA Fails for max_sge Less Than 18

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey Chuck,

> >
> > Browsing the code of other drivers it can be seen that this ability is
either
> hardcoded or is
> > learnt by the driver from the device.
> 
> In the latter case, there's no way for me to know what that
> capability is by looking at kernel code. There's also no way
> for me to know about out-of-tree drivers or pre-release devices.

But shouldn't NFS always limit its sge depths based on ib_device_attr->max_sge?
I don't think it is reasonable to assume any minimum value supported by all
devices...

> 
> It's not feasible for me to stock my lab with more than a
> couple of devices anyway.
> 
> For all these reasons, I rely on HCA vendors for smoke testing
> NFS/RDMA with their devices.
> 
> [1] was posted for review on public mailing lists for weeks. I
> received no review comments or reports of testing successes or
> failures from any vendor, until Broadcom's report in late
> December, three months after [1] appeared in a kernel release
> candidate.
> 
> This may sound like sour grapes, but this is a review and
> testing gap, and I think the community should have the ability
> to address it.
> 
> HCA vendors, especially, have to focus on kernel release
> candidate testing if functional ULPs are a critical release
> criterion for them.
>

You're absolutely right.  I'm querying Chelsio to see how this might have
slipped through the cracks.  Did this initial change land in linux-4.9?  

I have one nit though, your patch series are always very long and thus, to me,
tedious to review.  It would be nice to see 5-8 patches submitted for review vs
15+.

> 
> > If I'm not mistaken, this issue affects nes and
> > cxgb3/4 drivers, and perhaps others.
> 
> ocrdma and Oracle's HCA.
> 
> 
> > E.g., for cxgb4:
> >
> >        #define T4_MAX_RECV_SGE 4
> 
> Yet, without hard-coded max_sge values in kernel drivers, it's
> difficult to say whether 4 is truly the lower bound.
> 
> 
> >        static int c4iw_query_device(struct ib_device *ibdev, struct
ib_device_attr
> *props,
> >                                     struct ib_udata *uhw)
> >        {
> >                ...
> >                props->max_sge = T4_MAX_RECV_SGE;
> >
> > ***

FYI:  cxgb4 supports 4 max for recv wrs, and 17 max for send wrs.  Perhaps 17
avoided any problems for cxgb4 with the original code?

Note: the ib_device_attr only has a max_sge that pertains to both send and recv,
so cxgb4 sets it to the min value.  We should probably add a max_recv_sge and
max_send_sge to ib_device_attr...

Steve.


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux