Hi, This patch set introduces 3 helpers for handling usb read, write and write_async command, and replaces the low level's implemention with the generic ones. Firstly, it is a cleanup and about 300 lines code can be saved. Secondly, the patch fixes DMA on the buffer which is embedded inside one dynamic allocated buffer, and such usages can be found in cdc-ncm, sierra_net, mcs7830 and asix drivers. Finally, almost all low level drivers don't consider runtime PM situation when reading/writing control command to device via usb_control_message. For example, 'ethtool' may touch a suspended device and kind of below message will be dumped: [tom@tom-pandaboard ~]$ ethtool eth0 Settings for eth[ 117.084411] smsc95xx 1-1.1:1.0 eth0: Failed to read register index 0x00000114 0: [ 117.093139] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS [ 117.099395] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read This patch fixes the problem above by holding runtime PM referece count before calling usb_control_msg. drivers/net/usb/asix_common.c | 117 ++++------------------------------- drivers/net/usb/cdc_ncm.c | 73 +++++++--------------- drivers/net/usb/dm9601.c | 107 +++++--------------------------- drivers/net/usb/int51x1.c | 52 +--------------- drivers/net/usb/mcs7830.c | 85 ++----------------------- drivers/net/usb/net1080.c | 110 +++++++++------------------------ drivers/net/usb/plusb.c | 11 ++-- drivers/net/usb/sierra_net.c | 45 +++++--------- drivers/net/usb/smsc75xx.c | 39 +++++------- drivers/net/usb/smsc95xx.c | 115 ++++++++-------------------------- drivers/net/usb/usbnet.c | 137 +++++++++++++++++++++++++++++++++++++++++ include/linux/usb/usbnet.h | 6 ++ 12 files changed, 295 insertions(+), 602 deletions(-) Thanks, -- Ming Lei -- 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