that means the packet will be sent during next frame instead?

can we just change the hc_interrupt to

if (.... && urb_state <= 0)
{
        if (urb_state == 0) add_packet
        else schedule_trans
        


Pei Liu wrote:
> 
> >
> >but i thought sh_done_list returns (urb_state = -1) if it is done???
> >but in the hc_interrupt... it checks whether urb_state == 0... which
> >means it would not try another packet???
> 
> Yes, I think I understand your concern.  The sh_done_list returns a -1 when
> it has completed the URB, in such case, the hc_interrupt would not call send
> another packet.  But you still have to remember in the sh_schedule_trans
> routine, which initiated every SOF, would continue to call even after the
> hc_interrupt returns.  The sequence is like this
> 
> -->sh_schedule_trans
>  ------>> scan_urb_list
> ----------->> sh_add_packet()
> 
> ->hc_interrupt ; interrupt occurred because xferdone irq.  In this case, the
> sh_schedule_trans would be pre-empted
> --->sh_done_list  : take care of the xferdone irq
> -------> sh_add_packet if urb_state >=0
> 
> ......
> 
> ->hc_interrupt ; interrupt occurred because xferdone irq.
> --->sh_done_list  : take care of the xferdone irq
> ---> hc_interrupt exits when urb_state = -1;
> 
> --> sh_schedules continues with the next urb after all irq has handled.
> 
> Pei


-------------------------------------------------------
This SF.NET email is sponsored by: FREE  SSL Guide from Thawte
are you planning your Web Server Security? Click here to get a FREE
Thawte SSL guide and find the answers to all your  SSL security issues.
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to