RE: Query: USB: XHCI: Endpoint Context Max Burst Capability

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

 



From: Sarah Sharp [mailto:sarah.a.sharp@xxxxxxxxxxxxxxx] 
Sent: Wednesday, October 17, 2012 12:09 PM
> On Wed, Oct 17, 2012 at 06:49:14PM +0000, Paul Zimmerman wrote:
> > From: linux-usb-owner@xxxxxxxxxxxxxxx [mailto:linux-usb-owner@xxxxxxxxxxxxxxx] On Behalf Of Pratyush Anand
> > Sent: Wednesday, October 17, 2012 6:13 AM
> > > 
> > > I was trying to test max bulk through put capability of my usb3.0 
> > > device. Bulk IN EP Companion descriptor's bMaxburst is 15 in my gadget. 
> > > My host controller is TUSB7340.
> > > 
> > > I see, that Device Sends ERDY with NumP=16.
> > > Host sends ACK with NumP=4. I noticed that xhci driver programs Max 
> > > Burst Size same as that of reported by companion descriptor. So, what 
> > > does it mean, host controller's Max Burst is 4 only? So, even if driver 
> > > programs 15, it is limited by 3.
> > > 
> > > If yes, Does anybody know about any host controller supporting Max Burst 
> > > as 16 on Bulk EP?
> > 
> > The NumP=4 from the host probably means that the host only has buffer
> > space for 4 1K packets. 4K is the page size, so maybe the host was given a
> > scatter-gather list made up of single pages (just a guess). Or else the host
> > system just cannot empty the buffers quick enough to keep up.
> 
> The SCSI layer and mass storage driver usually queues a scatter-gather
> list of 4K entries for the data phase.  The Linux xHCI driver turns each
> sg-list entry into one TRB, and chains them all into one TD.  So it's up
> to the host controller to fetch multiple TRBs and set the NumP field
> appropriately.
> 
> It's possible the host controller only wants to fetch the current TRB's
> worth of data.  We could attempt to collasce adjacent sg-list entries,
> but I would have to look into whether that's possible, or if the upper
> layer is already doing that when it creates the sg-list.
> 
> > What is the host OS and driver? We have found that the Linux xHCI driver
> > does not perform very well compared to the MCCI xHCI driver under
> > Windows (which AFAIK is the xHCI driver you usually get when you buy a
> > NEC/Renesas host adapter). Did you get a Windows xHCI driver along with
> > your TUSB7340 adapter?
> 
> Yep, the Linux xHCI driver performance needs improvement.  That's next
> on my todo list after I slog through my current bug list.

Hi Sarah,

Actually, I think I misspoke. I suspect it's actually the USB mass-storage
class driver, or the layers above it, that is responsible for the slowness.
The performance under Windows is comparable to Linux, until you
replace the standard USB mass-storage class driver with the one from
MCCI (in addition to their xHCI driver). And AFAIK you don't get that
driver when you buy a NEC/Renesas add-in card.

Which reminds me, I need to do a performance test under Windows
8, to see how it compares using its built-in USB 3.0 support.

-- 
Paul

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