Encouraged by all the nice comments and feedback I got on the first series with demo-quality code, I have now cleaned up the mess and am hopefully closer to something that can be accepted. The changes are a) merged all the small changes and split them out again in only three patches, each containing just one distinct change b) included all suggested changes in comments from * Oliver Neukum: - use full "usb_cdc_wdm_" prefix for all exported functions - pass the endpoint as a parameter - rename wdm_get_device to wdm_find_device as get/put usually implies a reference count - always use the driver maintained device list instead of intfdata - remove unnecessary NULL checking in disconnect and suspend - public headers belong in include/linux/usb * Alan Stern: - remove unnecessary NULL checking on endpoint pointer c) a few fixes on my own account: - initialize device list to avoid crashing in the error path - removed "deregister" as it ended up identical to disconnect and the main driver can just as well call disconnect In total, this makes the code much simpler. Always using the device list made it possible to remove all calls to usb_set_intfdata, which again made it possible to move the call to usb_register_dev into the common wdm_create function. Letting the main driver deregister the subdriver by calling its disconnect reduces the number of exported functions to one, and makes the exit path identical in both driver and subdriver mode! There are probably a few more issues to fix, but all-in-all I believe this is in a state where it deserves to be put into use. Note that I have not included any usbnet based main driver example in this patch set. There are two reasons for that: I am still not sure whether that should make use of the subdriver mode for two-interface devices as well, and it is to be reviewed by netdev so I would like to have the subdriver interface in place before submitting anything using it to another subsystem. The patches are based on current (20120125) linux-next, i.e. on top of the so far acked changes to cdc-wdm. Bjørn Mork (3): usb: cdc-wdm: split out reusable parts of probe usb: cdc-wdm: adding list lookup indirection usb: cdc-wdm: adding usb_cdc_wdm_register subdriver support drivers/usb/class/cdc-wdm.c | 197 +++++++++++++++++++++++++++++-------------- include/linux/usb/cdc-wdm.h | 18 ++++ 2 files changed, 152 insertions(+), 63 deletions(-) create mode 100644 include/linux/usb/cdc-wdm.h -- 1.7.8.3 -- 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