[Bug?] Control Transfers in xHCI
Hans Petter Selasky
hps at selasky.org
Thu Jan 29 19:59:20 UTC 2015
On 01/29/15 20:57, Chagin Dmitry wrote:
> On Thu, Jan 29, 2015 at 04:04:03PM +0100, Hans Petter Selasky wrote:
>> On 01/29/15 13:25, Kohji Okuno wrote:
>>> Hi HPS,
>>>
>>> I found a bug in xHCI device driver.
>>>
>>> Acording to extensible-host-controler-interface-usb-xhci.pdf:"3.2.9
>>> Control Transfers"...
>>>
>>> A Data Stage TD consists of a Data Stage TRB followed by zero or more
>>> Normal TRBs. If the data is not physically contiguous, Normal TRBs may
>>> be chained to the Data Stage TRB.
>>>
>>>
>>> But, in the current imprementation, when two or more TRBs are needed,
>>> the device driver set XHCI_TRB_TYPE_DATA_STAGE to all TRBs.
>>> This is the violation of the spec.
>>>
>>> In my minor xHCI, I encountered strange bubble error in a control
>>> transfer. After I changed as the following, I succeeded its control
>>> transfer.
>>>
>>> Would you check the following (****)?
>>>
>>
>> Hi Kohji,
>>
>> You are correct there is a bug, but your patch is not correct.
>>
>> In FreeBSD we allow SETUP and DATA stages to be done as separate jobs.
>> That means at the entry of creating a new DATA chain, we need to check
>> if it is there first DATA packet or not.
>>
>> Can you test the attached patch and see if it works for you?
>>
> patch is lost somewhere, Hans.
>
Trying again.
I think Kohji got it.
--HPS
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xhci.patch
Type: text/x-patch
Size: 2839 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-usb/attachments/20150129/1bb84d58/attachment.bin>
More information about the freebsd-usb
mailing list