alistair23-linux/drivers/net/usb
Ming Lei 4b49f58fff usbnet: handle link change
The link change is detected via the interrupt pipe, and bulk
pipes are responsible for transfering packets, so it is reasonable
to stop bulk transfer after link is reported as off.

Two adavantages may be obtained with stopping bulk transfer
after link becomes off:

- USB bus bandwidth is saved(USB bus is shared bus except for
USB3.0), for example, lots of 'IN' token packets and 'NYET'
handshake packets is transfered on 2.0 bus.

- probabaly power might be saved for usb host controller since
cancelling bulk transfer may disable the asynchronous schedule of
host controller.

With this patch, when link becomes off, about ~10% performance
boost can be found on bulk transfer of anther usb device which
is attached to same bus with the usbnet device, see below
test on next-20130410:

- read from usb mass storage(Sandisk Extreme USB 3.0) on pandaboard
with below command after unplugging ethernet cable:

	dd if=/dev/sda iflag=direct of=/dev/null bs=1M count=800

- without the patch
1, 838860800 bytes (839 MB) copied, 36.2216 s, 23.2 MB/s
2, 838860800 bytes (839 MB) copied, 35.8368 s, 23.4 MB/s
3, 838860800 bytes (839 MB) copied, 35.823 s, 23.4 MB/s
4, 838860800 bytes (839 MB) copied, 35.937 s, 23.3 MB/s
5, 838860800 bytes (839 MB) copied, 35.7365 s, 23.5 MB/s
average: 23.6MB/s

- with the patch
1, 838860800 bytes (839 MB) copied, 32.3817 s, 25.9 MB/s
2, 838860800 bytes (839 MB) copied, 31.7389 s, 26.4 MB/s
3, 838860800 bytes (839 MB) copied, 32.438 s, 25.9 MB/s
4, 838860800 bytes (839 MB) copied, 32.5492 s, 25.8 MB/s
5, 838860800 bytes (839 MB) copied, 31.6178 s, 26.5 MB/s
average: 26.1MB/s

Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-04-11 15:57:32 -04:00
..
asix.h net: asix: handle packets crossing URB boundaries 2013-01-18 14:13:29 -05:00
asix_common.c net: asix: handle packets crossing URB boundaries 2013-01-18 14:13:29 -05:00
asix_devices.c usbnet: asix: apply usbnet_link_change 2013-04-11 15:57:16 -04:00
ax88172a.c drivers: net: usb: Remove unnecessary alloc/OOM messages 2013-02-04 13:22:34 -05:00
ax88179_178a.c usbnet: ax88179_1781: apply usbnet_link_change 2013-04-11 15:57:17 -04:00
catc.c ethtool: fix drvinfo strings set in drivers 2013-01-06 21:06:31 -08:00
cdc-phonet.c cdc-phonet: Don't leak in usbpn_open 2012-08-08 16:04:47 -07:00
cdc_eem.c net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs 2012-11-07 21:12:26 -05:00
cdc_ether.c usbnet: cdc-ether: apply usbnet_link_change 2013-04-11 15:57:17 -04:00
cdc_mbim.c net: cdc_ncm, cdc_mbim: allow user to prefer NCM for backwards compatibility 2013-03-17 11:59:03 -04:00
cdc_ncm.c usbnet: cdc_ncm: apply usbnet_link_change 2013-04-11 15:57:16 -04:00
cdc_subset.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00
cx82310_eth.c net: cx82310_eth: use common match macro 2012-09-03 13:51:02 -04:00
dm9601.c usbnet: dm9601: apply usbnet_link_change 2013-04-11 15:57:17 -04:00
gl620a.c USB: remove dbg() usage in USB networking drivers 2012-09-20 17:53:14 -04:00
hso.c tty/serial patches for 3.9-rc1 2013-02-21 13:41:04 -08:00
int51x1.c usbnet: int51x1: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
ipheth.c usb/ipheth: Add iPhone 5 support 2012-10-18 15:34:30 -04:00
kalmia.c remove init of dev->perm_addr in drivers 2013-01-08 18:00:48 -08:00
kaweth.c kaweth: print correct debug ptr 2012-10-11 15:12:33 -04:00
Kconfig smsc75xx: configuration help incorrectly mentions smsc95xx 2013-03-15 09:06:57 -04:00
lg-vl600.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00
Makefile ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver 2013-03-03 01:43:47 -05:00
mcs7830.c usbnet: mcs7830: apply usbnet_link_change 2013-04-11 15:57:16 -04:00
net1080.c usbnet: net1080: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
pegasus.c drivers: net: Remove remaining alloc/OOM messages 2013-02-08 17:44:39 -05:00
pegasus.h usb: pegasus: fixed coding style issues 2010-06-30 10:26:16 -07:00
plusb.c usbnet: plusb: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
qmi_wwan.c net: qmi_wwan: set correct altsetting for Gobi 1K devices 2013-03-13 11:33:42 -04:00
rndis_host.c remove init of dev->perm_addr in drivers 2013-01-08 18:00:48 -08:00
rtl8150.c ethtool: fix drvinfo strings set in drivers 2013-01-06 21:06:31 -08:00
sierra_net.c usbnet: sierra: apply usbnet_link_change 2013-04-11 15:57:17 -04:00
smsc75xx.c smsc75xx: fix jumbo frame support 2013-03-29 15:16:21 -04:00
smsc75xx.h smsc75xx: replace 0xffff with PHY_INT_SRC_CLEAR_ALL 2012-05-07 23:43:56 -04:00
smsc95xx.c usbnet: smsc95xx: rename FEATURE_AUTOSUSPEND 2013-02-25 15:49:52 -05:00
smsc95xx.h smsc95xx: support PHY wakeup source 2012-11-23 14:15:18 -05:00
usbnet.c usbnet: handle link change 2013-04-11 15:57:32 -04:00
zaurus.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00