iso support
matthieu castet
castet.matthieu at free.fr
Sun Nov 20 05:58:22 EST 2005
Hi Duncan,
Duncan Sands wrote:
> Hi Matthieu, actually I think I may put the flags parameter in
> struct usbatm_data, and remove it from bind.
>
nice ;)
>
>>I was thinking about :
>>#define IGNORE_ELISEQ 0x02 /* ignore ELISEQ errors */
>
>
> I will reread the emails about this, because I've forgotten what it was
> all about.
>
I could make a short summary :
When using iso mode on eagle usb adsl modem, sometimes we get ELISEQ errors.
After some investigation, we discover that the ELISEQ happens, when
there is at least 1 packet in iso urb that have an error. But all the
others packets could be valid.
This seem to happen when the modem has nothing to send (ie there no
traffic or not enough traffic to fill all the packets).
So in the worst case we lose all others valid packets in the iso urb and
we are throttled.
I believe in iso mode we should use urb->status as something saying :
there is at least one packet wrong.
As we check urb->iso_frame_desc[i].status in all the case, I believe we
could ignore the urb->status (at least ELISEQ errors) for iso mode.
But we lose the throttle mechanism.
If you want, it could be easy to check if there is no valid packet
before calling mod_timer. But it won't solve our problem for eagle modem
: when there is no traffic, all the packet will be invalid and we will
call mod_timer.
So we still need a flag saying ignore ELISEQ (in iso mode).
>
>>#define ISO_PACKET_MAX_SIZE 0x04 /* don't try to use iso packets
>>that have a size != max_packet_size *
>
>
> as far as I can see, the iso packet size has to always be equal to
> a multiple of the endpoint maxpacket size.
Ok, I am not a usb guru and I could say if it is allowed by the standard ;)
Thanks,
Matthieu
More information about the Usbatm
mailing list