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