> > Basically, if that bit is set, then short packets (as set up by the
> > HCD) won't be reported as errors.  You set that for IN endpoints
> > that could really halt (bulk, interrupt), so I don't see how one of
> > those non-error cases could happen.
> 
> I just set the (R) bit on the last TD of multi TD transfers.

Which seems right ...

> > I don't see any restrictions there for queues with multiple TDs.
> > Even if I send, say, 4097 bytes (one max size URB, and one
> > short one), and someone queues another transfer after that, it
> > should behave.  Am I missing some information?
> 
> But if we request 4097 bytes 
> (2 TDs, 1st without (R) bit, 2nd has (R) bit)
> and we just get 4095 (1TD without (R)) then we get an
> DATAUNDERRUN error that is no real error (well, depends 
> on the USB_DISABLE_SPD flag).

OK, my patch does the right thing unless DISABLE_SPD is set.
I see what you're saying now.  I know short transfers get used
for things like descriptors, which won't hit that 4K line much.

The fix would be to also check for that flag, where that new
test is already sitting.


> Most if not all drivers now use relative short buffers (<=4096 Byte),
> so you just don't see the trouble.

The devfs code imposes 4k chunking, FWIW.

- Dave





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to