]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Staging: rtl8192su: fix for rtl819xU:Error TX URB for zero byte xxx, error -2
authorFlorian Schilhabel <florian.c.schilhabel@googlemail.com>
Fri, 19 Feb 2010 19:11:37 +0000 (20:11 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 4 Mar 2010 00:43:04 +0000 (16:43 -0800)
according to 'linux device drivers',
ENOENT, ECONNRESET, ESHUTDOWN are not real transmission errors.
also, a little cosmetics.

Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rtl8192su/r8192U_core.c

index 23d1d35be7ed7a97faed964b4b8eb81f54a2b68b..8393bc57bdfc60b181f1d77537cfbfb6b469ef4e 100644 (file)
@@ -2340,25 +2340,24 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
                                    skb->len, rtl8192_tx_isr, skb);
 
        status = usb_submit_urb(tx_urb, GFP_ATOMIC);
-       if (!status){
-//we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted. Otherwise, it will be halt to wait for another packet. WB. 2008.08.27
+       if (!status) {
+               /*
+                * we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted.
+                * Otherwise, it will be halt to wait for another packet. WB. 2008.08.27
+                */
                bool bSend0Byte = false;
                u8 zero = 0;
-               if(udev->speed == USB_SPEED_HIGH)
-               {
+               if(udev->speed == USB_SPEED_HIGH) {
                        if (skb->len > 0 && skb->len % 512 == 0)
                                bSend0Byte = true;
                }
-               else
-               {
+               else {
                        if (skb->len > 0 && skb->len % 64 == 0)
                                bSend0Byte = true;
                }
-               if (bSend0Byte)
-               {
-#if 1
+               if (bSend0Byte) {
                        tx_urb_zero = usb_alloc_urb(0,GFP_ATOMIC);
-                       if(!tx_urb_zero){
+                       if(!tx_urb_zero) {
                                RT_TRACE(COMP_ERR, "can't alloc urb for zero byte\n");
                                return -ENOMEM;
                        }
@@ -2366,16 +2365,23 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
                                        usb_sndbulkpipe(udev,idx_pipe), &zero,
                                        0, tx_zero_isr, dev);
                        status = usb_submit_urb(tx_urb_zero, GFP_ATOMIC);
-                       if (status){
-                       RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status);
-                       return -1;
+                       switch (status) {
+                               case 0:
+                                       break;
+                               case -ECONNRESET:
+                               case -ENOENT:
+                               case -ESHUTDOWN:
+                                       break;
+                               default:
+                                       RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d",
+                                               atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status);
+                                       return -1;
                        }
-#endif
                }
                dev->trans_start = jiffies;
                atomic_inc(&priv->tx_pending[tcb_desc->queue_index]);
                return 0;
-       }else{
+       } else {
                RT_TRACE(COMP_ERR, "Error TX URB %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]),
                                status);
                return -1;