On Wednesday 01 August 2007, Oliver Neukum wrote:
> Am Dienstag 31 Juli 2007 schrieb Alan Stern:
> > You assign dev->intf in both the usbnet framework driver and the
> > subdriver.  Could the subdriver's assignment be removed?
> 
> Here we go again.
> 
>       Regards
>               Oliver
> Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]>

You know that drivers/net/usb patches go to the netdev list, right?
They merge through the network queue, not the USB queue.

This looks plausible to me, except

        /* multi-line comments
         * in the code
         * should not end like this: */

        /* do it like this, with
         * nice clean line endings:
         */


> ---
> 
> --- a/drivers/net/usb/asix.c  2007-07-30 14:18:38.000000000 +0200
> +++ b/drivers/net/usb/asix.c  2007-08-01 09:48:10.000000000 +0200
> @@ -1474,6 +1474,7 @@ static struct usb_driver asix_driver = {
>       .suspend =      usbnet_suspend,
>       .resume =       usbnet_resume,
>       .disconnect =   usbnet_disconnect,
> +     .supports_autosuspend = 1,
>  };
>  
>  static int __init asix_init(void)
> --- a/drivers/net/usb/usbnet.h        2007-07-30 14:23:08.000000000 +0200
> +++ b/drivers/net/usb/usbnet.h        2007-07-31 11:08:12.000000000 +0200
> @@ -28,6 +28,7 @@
>  struct usbnet {
>       /* housekeeping */
>       struct usb_device       *udev;
> +     struct usb_interface    *intf;
>       struct driver_info      *driver_info;
>       const char              *driver_name;
>       wait_queue_head_t       *wait;
> --- a/drivers/net/usb/usbnet.c        2007-07-30 14:27:40.000000000 +0200
> +++ b/drivers/net/usb/usbnet.c        2007-07-31 11:07:51.000000000 +0200
> @@ -590,6 +590,7 @@ static int usbnet_stop (struct net_devic
>       dev->flags = 0;
>       del_timer_sync (&dev->delay);
>       tasklet_kill (&dev->bh);
> +     usb_autopm_put_interface(dev->intf);
>  
>       return 0;
>  }
> @@ -603,9 +604,19 @@ static int usbnet_stop (struct net_devic
>  static int usbnet_open (struct net_device *net)
>  {
>       struct usbnet           *dev = netdev_priv(net);
> -     int                     retval = 0;
> +     int                     retval;
>       struct driver_info      *info = dev->driver_info;
>  
> +     if ((retval = usb_autopm_get_interface(dev->intf)) < 0) {
> +             if (netif_msg_ifup (dev))
> +                     devinfo (dev,
> +                             "resumption fail (%d) usbnet usb-%s-%s, %s",
> +                             retval,
> +                             dev->udev->bus->bus_name, dev->udev->devpath,
> +                     info->description);
> +             goto done_nopm;
> +     }
> +
>       // put into "known safe" state
>       if (info->reset && (retval = info->reset (dev)) < 0) {
>               if (netif_msg_ifup (dev))
> @@ -659,7 +670,10 @@ static int usbnet_open (struct net_devic
>  
>       // delay posting reads until we're fully open
>       tasklet_schedule (&dev->bh);
> +     return retval;
>  done:
> +     usb_autopm_put_interface(dev->intf);
> +done_nopm:
>       return retval;
>  }
>  
> @@ -1143,6 +1157,7 @@ usbnet_probe (struct usb_interface *udev
>  
>       dev = netdev_priv(net);
>       dev->udev = xdev;
> +     dev->intf = udev;
>       dev->driver_info = info;
>       dev->driver_name = name;
>       dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV
> @@ -1273,6 +1288,9 @@ int usbnet_suspend (struct usb_interface
>               netif_device_detach (dev->net);
>               (void) unlink_urbs (dev, &dev->rxq);
>               (void) unlink_urbs (dev, &dev->txq);
> +             /* reattach so runtime management can use and
> +              * wake the device */
> +             netif_device_attach (dev->net);
>       }
>       return 0;
>  }
> @@ -1282,10 +1300,9 @@ int usbnet_resume (struct usb_interface 
>  {
>       struct usbnet           *dev = usb_get_intfdata(intf);
>  
> -     if (!--dev->suspend_count) {
> -             netif_device_attach (dev->net);
> +     if (!--dev->suspend_count)
>               tasklet_schedule (&dev->bh);
> -     }
> +
>       return 0;
>  }
>  EXPORT_SYMBOL_GPL(usbnet_resume);
> 



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to