X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fnet%2Fkaweth.c;h=6eb637a8069e963651cc347ae5c3c0ebd4544283;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=09c6bbe66b39b3a0c800c5ff41722b41ae9042bb;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c index 09c6bbe66..6eb637a80 100644 --- a/drivers/usb/net/kaweth.c +++ b/drivers/usb/net/kaweth.c @@ -62,7 +62,7 @@ #include #include -#define DEBUG +#undef DEBUG #ifdef DEBUG #define kaweth_dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" ,##arg) @@ -123,9 +123,10 @@ static int kaweth_probe( const struct usb_device_id *id /* from id_table */ ); static void kaweth_disconnect(struct usb_interface *intf); -int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, - struct usb_ctrlrequest *cmd, void *data, - int len, int timeout); +static int kaweth_internal_control_msg(struct usb_device *usb_dev, + unsigned int pipe, + struct usb_ctrlrequest *cmd, void *data, + int len, int timeout); /**************************************************************** * usb_device_id @@ -591,7 +592,7 @@ static void kaweth_usb_receive(struct urb *urb, struct pt_regs *regs) struct sk_buff *skb; - if(unlikely(urb->status == -ECONNRESET || urb->status == -ECONNABORTED)) + if(unlikely(urb->status == -ECONNRESET || urb->status == -ECONNABORTED || urb->status == -ESHUTDOWN)) /* we are killed - set a flag and wake the disconnect handler */ { kaweth->end = 1; @@ -736,7 +737,7 @@ static int kaweth_ioctl(struct net_device *net, struct ifreq *rq, int cmd) { switch (cmd) { case SIOCETHTOOL: - return netdev_ethtool_ioctl(net, (void __user *)rq->ifr_data); + return netdev_ethtool_ioctl(net, rq->ifr_data); } return -EOPNOTSUPP; } @@ -1239,20 +1240,21 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length) init_waitqueue_head(&awd.wqh); awd.done = 0; - set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&awd.wqh, &wait); urb->context = &awd; - status = usb_submit_urb(urb, GFP_ATOMIC); + status = usb_submit_urb(urb, GFP_NOIO); if (status) { // something went wrong usb_free_urb(urb); - set_current_state(TASK_RUNNING); remove_wait_queue(&awd.wqh, &wait); return status; } - while (timeout && !awd.done) + set_current_state(TASK_UNINTERRUPTIBLE); + while (timeout && !awd.done) { timeout = schedule_timeout(timeout); + set_current_state(TASK_UNINTERRUPTIBLE); + } set_current_state(TASK_RUNNING); remove_wait_queue(&awd.wqh, &wait); @@ -1277,9 +1279,10 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length) /*-------------------------------------------------------------------*/ // returns status (negative) or length (positive) -int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, - struct usb_ctrlrequest *cmd, void *data, int len, - int timeout) +static int kaweth_internal_control_msg(struct usb_device *usb_dev, + unsigned int pipe, + struct usb_ctrlrequest *cmd, void *data, + int len, int timeout) { struct urb *urb; int retv; @@ -1290,7 +1293,7 @@ int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, return -ENOMEM; usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char*)cmd, data, - len, usb_api_blocking_completion,0); + len, usb_api_blocking_completion, NULL); retv = usb_start_wait_urb(urb, timeout, &length); if (retv < 0) { @@ -1305,7 +1308,7 @@ int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, /**************************************************************** * kaweth_init ****************************************************************/ -int __init kaweth_init(void) +static int __init kaweth_init(void) { kaweth_dbg("Driver loading"); return usb_register(&kaweth_driver); @@ -1314,7 +1317,7 @@ int __init kaweth_init(void) /**************************************************************** * kaweth_exit ****************************************************************/ -void __exit kaweth_exit(void) +static void __exit kaweth_exit(void) { usb_deregister(&kaweth_driver); }