Re: [PATCH experimental 4/6] usb: cdc-wdm: adding interface => wdm_device list lookup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Dienstag, 24. Januar 2012, 00:52:02 schrieb Bjørn Mork:
>  /* --- method tables --- */
>  
> @@ -111,13 +112,45 @@ struct wdm_device {
>         struct work_struct      rxwork;
>         int                     werr;
>         int                     rerr;
> +
> +       struct list_head        device_list;
>  };
>  
>  static struct usb_driver wdm_driver;
>  
> +/* return intfdata if we own the interface, else look up intf in the list */
>  static struct wdm_device *wdm_get_device(struct usb_interface *intf)
>  {
> -       struct wdm_device *desc = usb_get_intfdata(intf);
> +       struct wdm_device *desc = NULL;
> +
> +       pr_debug("%s: intf->dev.driver=%p, &wdm_driver=%p\n", __func__, to_usb_driver(intf->dev.driver), &wdm_driver);
> +
> +       mutex_lock(&wdm_mutex);
> +       if (to_usb_driver(intf->dev.driver) == &wdm_driver)
> +               desc = usb_get_intfdata(intf);
> +       else
> +               list_for_each_entry(desc, &wdm_device_list, device_list)
> +                       if (desc->intf == intf)
> +                               break;
> +       mutex_unlock(&wdm_mutex);
> +
> +       return desc;
> +}

Well, this is conceptually inelegant. If we need to maintain our own list,
we can put every instance on it. We should have as few code paths as
possible.

	Regards
		Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux