Re: sitd OUT s-mask cross frame boundary

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

 



On Fri, 11 Sep 2009, Julie Zhu wrote:

> Hi, all,
> 
> We are testing the USB Host controller from Xilinx using a PowerPC
> platform. This test is FS isochronous OUT, with the maxp 1023 and
> interval 1ms. We noticed that with direct connection between the host
> controller and the FS iso OUT device, the s-mask is 0x3f. And the test
> finished fine.
> 
> However, if the device is connected through a FS hub, then the sitd
> s-mask becomes 0x1f8, this makes the 6th packet crosses the frame
> boundary. From EHCI spec page 104, section 4.12.3.1, it says under Case
> 2a:
> 
> 	Software must never schedule full-speed isochronous OUTs across
> an H-Frame boundary.
> 
> The test therefore failed, because the host controller never put the 6th
> packet out.
> 
> The kernel version is 2.6.30.
> 
> The function sitd_slot_ok() shifts the s-mask by the starting frame
> number. It does check for crossing frame boundary for IN case, but never
> does anything for OUT. I wonder whether it is a bug? Or, it is intended?

It is a bug.  The code in ehci-sched.c for dealing with split
transactions needs a lot of work.  For example, it doesn't support
FSTNs.  In the case you noticed, the code checks for CSPLITs crossing a 
frame boundary but not for SSPLITs.

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