Hi:

The kaweth driver kills the URBs in kaweth_disconnect() as well as
kaweth_close().  The former is unnecessary because as part of the
netdev deregistration dev_close() will be called if the interface
is up which ends up calling kaweth_close().

If the interface isn't up then no URBs should be active.

Similarly, once kaweth_close() calls netif_stop_queue() no further
calls to kaweth_start_xmit() will be made.  Therefore it is not
needed for it to check kaweth->removed.

The following patch removes these unnecessary code.
 
Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff --git a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c
--- a/drivers/usb/net/kaweth.c
+++ b/drivers/usb/net/kaweth.c
@@ -219,7 +219,6 @@ struct kaweth_device
 
        __u32 status;
        int end;
-       int removed;
        int suspend_lowmem_rx;
        int suspend_lowmem_ctrl;
        int linkstate;
@@ -750,13 +749,6 @@ static int kaweth_start_xmit(struct sk_b
 
        spin_lock(&kaweth->device_lock);
 
-       if (kaweth->removed) {
-       /* our device is undergoing disconnection - we bail out */
-               spin_unlock(&kaweth->device_lock);
-               dev_kfree_skb_irq(skb);
-               return 0;
-       }
-
        kaweth_async_set_rx_mode(kaweth);
        netif_stop_queue(net);
 
@@ -1136,10 +1128,6 @@ static void kaweth_disconnect(struct usb
                return;
        }
        netdev = kaweth->net;
-       kaweth->removed = 1;
-       usb_kill_urb(kaweth->irq_urb);
-       usb_kill_urb(kaweth->rx_urb);
-       usb_kill_urb(kaweth->tx_urb);
 
        kaweth_dbg("Unregistering net device");
        unregister_netdev(netdev);

Reply via email to