Re: [PATCH] xhci: Fix full speed bInterval encoding some more.

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

 



On Tue, 31 May 2011, Sarah Sharp wrote:

> I originally implemented the max interval for FS devices as 10 because
> the version of the xHCI 0.96 spec I have says to.  Table 56 says that
> "The legal range of values is 3 to 10 for Full- or Low-speed Interrupt
> endpoints (1 to 256 ms.)"  I think maybe that got changed in an errata
> to the 0.96 spec, but I'm not sure.

It sure looks like the sort of thing that would be fixed in an
addendum.  The "1 - 256" part is clearly wrong in two respects.  
First, since the bInterval value is a single byte, it can't possibly
take on the value 256.  Second, the binary exponents corresponding to 1
- 256 are 0 - 8, and converting to microframes by adding 3 yields 3 -
11, not 3 - 10.

(This also ignores the fact that for low-speed devices, bInterval is 
not allowed to be smaller than 10.  This would mean the minimum 
acceptable exponent should be 6 rather than 3.  But never mind that...)

> The xHCI 1.0 spec says something different in the same table "The legal
> range of values is 3 to 11 for Full- or Low-speed Interrupt endpoints (1
> to 256 ms.)"

That makes a little more sense, but it's still not right.

> So maybe we need to have a different clamping interval based on whether
> the host is 0.96 or 1.0 based?  You can check xhci->hci_version, and
> clamp it to 10 for hosts with xhci->hci_version < 0x100, and clamp it to
> 11 otherwise.

Why go to the trouble?  Always clamp it to 10.  The host system 
software is allowed to poll interrupt endpoints more frequently than 
the endpoint descriptor calls for.

Alan Stern

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