Re: [PATCH 4/4] usbdevfs: Use scatter-gather lists for large transfers

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

 



Hi,

On 06/29/2012 04:18 PM, Alan Stern wrote:

<snip>

Okay.

Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

Too soon. As said I still needed to test the patch with isoc
devices, and it failed. It turns out most controllers don't
handle urb->sg for isoc transfers! I've checked the ehci code,
and it certainly does not.

If you look at ehci-sched.c: itd_sched_init() it
unconditionally uses urb->transfer_dma. I've not checked the
xhci code, but I got similar (non working) results during
testing there.

This may very well be by design, but when writing the devio.c
patch I thought it would be best to split all large-ish
transfers, abnd that turns out to not be a good idea :)

This is not really a problem since large isoc urbs can easily
be split by userspace by simply using less iso-packets / urb,
without any of the issues we've seen with bulk transfer
splitting.

And likewise there are no kernel drivers needing sg support
for isoc transfers. We may want to add a BUG_ON urb->sg
being set for isoc transfers somewhere though, in case a
driver author ever does decide to try and use sg there,
like I did :)

So I'm sending a new version of the patchset, where the
use of scatterlists is limited to bulk transfers (just a
small change really).

This new version also addresses / changes:
-making the caps ioctl parameter u32 instead of u64
-a missing "totlen -= u;" statement in the loop allocating
 the per sg entry buffers, causing the last buffer to always
 be USB_SG_SIZE, even if a smaller buffer would suffice

Regards,

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux