Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Dec 2013 08:47:02 +0100
From:      Hans Petter Selasky <hps@bitfrost.no>
To:        Kohji Okuno <okuno.kohji@jp.panasonic.com>
Cc:        freebsd-current@FreeBSD.org, freebsd-usb@freebsd.org
Subject:   Re: spec violation of xHCI?
Message-ID:  <52A969F6.3010201@bitfrost.no>
In-Reply-To: <52A96276.3060203@bitfrost.no>
References:  <52A85FAA.8030402@bitfrost.no> <20131211.220615.1986324315440989553.okuno.kohji@jp.panasonic.com> <52A870FA.5080803@bitfrost.no> <20131212.095958.798647707277033359.okuno.kohji@jp.panasonic.com> <52A96276.3060203@bitfrost.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On 12/12/13 08:15, Hans Petter Selasky wrote:
> On 12/12/13 01:59, Kohji Okuno wrote:
>
> Hi Kohji,
>
> Did you check using a USB analyzer what the difference is when setting
> the CHAIN bit and not setting the chain bit?
>
> I would guess that if you set the CHAIN-bit in this case, no ZLP will be
> sent, because the TRB is associated with the previous one.
>
> What endpoint type is this? BULK/CONTROL/INTR/ISOC
>
> What direction is this? IN or OUT?
>
> --HPS

Hi Kohji,

If there is no CHAIN bit in the IN-direction, my TD chain will receive 
multiple short packets. This is of course not correct. This only happens 
if you have very large buffers above 64KByte that don't fit in a single TD.

For OUT direction:
There are no short packets received, though errors can happen and those 
will stop the endpoint. Are we sure that by setting the CHAIN bit, that 
the HC's will transfer ZLP's if the length of the second last "TD" is a 
multiple of wMaxPacketSize and the last one has a length of zero bytes?

I will do some testing to verify the corner cases.

Thank you!

--HPS




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52A969F6.3010201>