[U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send

2010-08-15 Thread Stefano Babic
The patch removes an endless loop  in the usb_eth_send
if the tx_complete is not called before going
in the loop. The driver interrupt routine is called
allowing the driver to check if the TX is completed.

Signed-off-by: Stefano Babic sba...@denx.de
---
 drivers/usb/gadget/ether.c |   10 +-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 9fc6a36..2965299 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -1801,6 +1801,8 @@ static int usb_eth_send(struct eth_device* netdev, 
volatile void* packet, int le
int retval;
struct usb_request  *req = NULL;
struct eth_dev  *dev = l_ethdev;
+   unsigned long ts;
+   unsigned long timeout = USB_CONNECT_TIMEOUT;
 
debug(%s:...\n, __func__);
 
@@ -1826,6 +1828,8 @@ static int usb_eth_send(struct eth_device* netdev, 
volatile void* packet, int le
? ((dev-tx_qlen % qmult) != 0) : 0;
 #endif
dev-tx_qlen=1;
+   ts = get_timer(0);
+   packet_sent = 0;
 
retval = usb_ep_queue (dev-in_ep, req, GFP_ATOMIC);
 
@@ -1833,7 +1837,11 @@ static int usb_eth_send(struct eth_device* netdev, 
volatile void* packet, int le
debug(%s: packet queued\n, __func__);
while(!packet_sent)
{
-   packet_sent=0;
+   if (get_timer(ts)  timeout) {
+   printf(timeout sending packets to usb ethernet\n);
+   return -1;
+   }
+   usb_gadget_handle_interrupts();
}
 
return 0;
-- 
1.6.3.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V3 2/2] USB-CDC: called handle_interrupts inside usb_eth_send

2010-08-15 Thread Remy Bohmer
Hi,

2010/8/15 Stefano Babic sba...@denx.de:
 The patch removes an endless loop  in the usb_eth_send
 if the tx_complete is not called before going
 in the loop. The driver interrupt routine is called
 allowing the driver to check if the TX is completed.

 Signed-off-by: Stefano Babic sba...@denx.de
 ---
  drivers/usb/gadget/ether.c |   10 +-
  1 files changed, 9 insertions(+), 1 deletions(-)

Applied to u-boot-usb/cdc
Thanks.

Remy
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot