xhci ring expansion

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

 



Code was recently added to the xhci driver to dynamically add extra ring
segments if there is insufficient space for all the fragments of the
URB being sent.

ISTM that it would be better to just queue the URB (on the ring)
and process it when space becomes available.

This wouldn't solve the problem of pathologically badly fragmented,
or very long URB, but there are simpler solutions to that.

I believe that very long bulk transfers can be split into
separate TD on USB block boundaries - so they can be safely
added to the ring in several pieces.
I don't know if any other data type is allowed to exceed the
block length?

Badly fragmented URB are probably best copied into a linear buffer.

This would make the code a lot simpler, especially since the
tx setup could be started if there were a 'reasonable' number
of free entries in the TRB ring without having to calculate
the actual number needed (and 

Additionally it would make it possible to ensure that LINK TRB
only happen on the appropriate boundary. This might require
some fragments be copied to a linear buffer.

If this is a reasonable idea I'll volunteer to do the changes.
We are seeing some issues with the xhci driver, and parts of it
are just to contorted!

	David



--
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