USB: Disable hub-initiated LPM for comms devices.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Mon, 23 Apr 2012 17:08:51 +0000 (10:08 -0700)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 18 May 2012 22:42:55 +0000 (15:42 -0700)
Hub-initiated LPM is not good for USB communications devices.  Comms
devices should be able to tell when their link can go into a lower power
state, because they know when an incoming transmission is finished.
Ideally, these devices would slam their links into a lower power state,
using the device-initiated LPM, after finishing the last packet of their
data transfer.

If we enable the idle timeouts for the parent hubs to enable
hub-initiated LPM, we will get a lot of useless LPM packets on the bus
as the devices reject LPM transitions when they're in the middle of
receiving data.  Worse, some devices might blindly accept the
hub-initiated LPM and power down their radios while they're in the
middle of receiving a transmission.

The Intel Windows folks are disabling hub-initiated LPM for all USB
communications devices under a xHCI USB 3.0 host.  In order to keep
the Linux behavior as close as possible to Windows, we need to do the
same in Linux.

Set the disable_hub_initiated_lpm flag for for all USB communications
drivers.  I know there aren't currently any USB 3.0 devices that
implement these class specifications, but we should be ready if they do.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: Marcel Holtmann <marcel@holtmann.org>
Cc: Gustavo Padovan <gustavo@padovan.org>
Cc: Johan Hedberg <johan.hedberg@gmail.com>
Cc: Hansjoerg Lipp <hjlipp@web.de>
Cc: Tilman Schmidt <tilman@imap.cc>
Cc: Karsten Keil <isdn@linux-pingi.de>
Cc: Peter Korsgaard <jacmet@sunsite.dk>
Cc: Jan Dumon <j.dumon@option.com>
Cc: Petko Manolov <petkan@users.sourceforge.net>
Cc: Steve Glendinning <steve.glendinning@smsc.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: Kalle Valo <kvalo@qca.qualcomm.com>
Cc: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
Cc: Jouni Malinen <jouni@qca.qualcomm.com>
Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
Cc: Christian Lamparter <chunkeey@googlemail.com>
Cc: Brett Rudley <brudley@broadcom.com>
Cc: Roland Vossen <rvossen@broadcom.com>
Cc: Arend van Spriel <arend@broadcom.com>
Cc: "Franky (Zhenhui) Lin" <frankyl@broadcom.com>
Cc: Kan Yan <kanyan@broadcom.com>
Cc: Dan Williams <dcbw@redhat.com>
Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Cc: Ivo van Doorn <IvDoorn@gmail.com>
Cc: Gertjan van Wingerde <gwingerde@gmail.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
Cc: Herton Ronaldo Krzesinski <herton@canonical.com>
Cc: Hin-Tak Leung <htl10@users.sourceforge.net>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Chaoming Li <chaoming_li@realsil.com.cn>
Cc: Daniel Drake <dsd@gentoo.org>
Cc: Ulrich Kunitz <kune@deine-taler.de>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
56 files changed:
drivers/bluetooth/ath3k.c
drivers/bluetooth/bcm203x.c
drivers/bluetooth/bfusb.c
drivers/bluetooth/bpa10x.c
drivers/bluetooth/btusb.c
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/gigaset/usb-gigaset.c
drivers/isdn/hardware/mISDN/hfcsusb.c
drivers/isdn/hisax/hfc_usb.c
drivers/isdn/hisax/st5481_init.c
drivers/net/usb/asix.c
drivers/net/usb/catc.c
drivers/net/usb/cdc-phonet.c
drivers/net/usb/cdc_eem.c
drivers/net/usb/cdc_ether.c
drivers/net/usb/cdc_ncm.c
drivers/net/usb/cdc_subset.c
drivers/net/usb/cx82310_eth.c
drivers/net/usb/dm9601.c
drivers/net/usb/gl620a.c
drivers/net/usb/hso.c
drivers/net/usb/int51x1.c
drivers/net/usb/ipheth.c
drivers/net/usb/kalmia.c
drivers/net/usb/kaweth.c
drivers/net/usb/lg-vl600.c
drivers/net/usb/mcs7830.c
drivers/net/usb/net1080.c
drivers/net/usb/pegasus.c
drivers/net/usb/plusb.c
drivers/net/usb/qmi_wwan.c
drivers/net/usb/rndis_host.c
drivers/net/usb/rtl8150.c
drivers/net/usb/sierra_net.c
drivers/net/usb/smsc75xx.c
drivers/net/usb/smsc95xx.c
drivers/net/usb/zaurus.c
drivers/net/wireless/at76c50x-usb.c
drivers/net/wireless/ath/ath6kl/usb.c
drivers/net/wireless/ath/ath9k/hif_usb.c
drivers/net/wireless/ath/carl9170/usb.c
drivers/net/wireless/brcm80211/brcmfmac/usb.c
drivers/net/wireless/libertas/if_usb.c
drivers/net/wireless/libertas_tf/if_usb.c
drivers/net/wireless/orinoco/orinoco_usb.c
drivers/net/wireless/p54/p54usb.c
drivers/net/wireless/rndis_wlan.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2800usb.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/rtl818x/rtl8187/dev.c
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
drivers/net/wireless/zd1201.c
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/usb/class/cdc-acm.c
drivers/usb/class/cdc-wdm.c

index 57fd867553d7ab1dc5fcf1737e3c19e8d8181257..2812b152d6e953acacf19106d737bec7f84f127c 100644 (file)
@@ -439,6 +439,7 @@ static struct usb_driver ath3k_driver = {
        .probe          = ath3k_probe,
        .disconnect     = ath3k_disconnect,
        .id_table       = ath3k_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(ath3k_driver);
index 1e742a50e2cda0e6e6a618068441db9bc808f5ff..37ae175162f346a3316b4864b2f1eebefd9e9d71 100644 (file)
@@ -279,6 +279,7 @@ static struct usb_driver bcm203x_driver = {
        .probe          = bcm203x_probe,
        .disconnect     = bcm203x_disconnect,
        .id_table       = bcm203x_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(bcm203x_driver);
index b8ac1c549a1c75507700c8f608f844233314ea7e..32e825144fe9835bb30ef4693bf902d6a13fc87e 100644 (file)
@@ -749,6 +749,7 @@ static struct usb_driver bfusb_driver = {
        .probe          = bfusb_probe,
        .disconnect     = bfusb_disconnect,
        .id_table       = bfusb_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(bfusb_driver);
index d894340a7601ee789eff108b1dddd29e173b157f..609861a53c28445ef90670788e6a45b43c81949f 100644 (file)
@@ -508,6 +508,7 @@ static struct usb_driver bpa10x_driver = {
        .probe          = bpa10x_probe,
        .disconnect     = bpa10x_disconnect,
        .id_table       = bpa10x_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(bpa10x_driver);
index 9217121362e10820da89b5678311b61ad6cac849..461c68bc4dd738b2a398dbebcebcd4404d0d8cab 100644 (file)
@@ -1218,6 +1218,7 @@ static struct usb_driver btusb_driver = {
 #endif
        .id_table       = btusb_table,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(btusb_driver);
index afa080258bfa54be0bb48b0f51a5abce8df7afd5..17ea0177a5292bb31217b8fcac7d177ee0fe52a6 100644 (file)
@@ -148,6 +148,7 @@ static struct usb_driver gigaset_usb_driver = {
        .reset_resume = gigaset_post_reset,
        .pre_reset =    gigaset_pre_reset,
        .post_reset =   gigaset_post_reset,
+       .disable_hub_initiated_lpm = 1,
 };
 
 /* get message text for usb_submit_urb return code
index 049da67f639231ffc5714abf45f75f2094859fe8..78f81e8a5be6bc19e514a6e53933274cfeebc522 100644 (file)
@@ -124,6 +124,7 @@ static struct usb_driver gigaset_usb_driver = {
        .reset_resume = gigaset_resume,
        .pre_reset =    gigaset_pre_reset,
        .post_reset =   gigaset_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 struct usb_cardstate {
index 8cde2a0538ab862f65b36411d4c3f06d2e0ec45e..cddb769a8b123de3cf89d0cf351c182302f00680 100644 (file)
@@ -2151,6 +2151,7 @@ static struct usb_driver hfcsusb_drv = {
        .id_table = hfcsusb_idtab,
        .probe = hfcsusb_probe,
        .disconnect = hfcsusb_disconnect,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(hfcsusb_drv);
index 62c65bdefd8a0d2f7100197b0b5116133205a45d..84f9c810307843cdf7c9ee884ac48856ba0be233 100644 (file)
@@ -1568,6 +1568,7 @@ static struct usb_driver hfc_drv = {
        .id_table = hfcusb_idtab,
        .probe = hfc_usb_probe,
        .disconnect = hfc_usb_disconnect,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static void __exit
index 100296e20dc0d0aa9524231ddaa13bc5b785d384..54ef9e4f8cbc58c734ef064b7cc4085c32afb2a9 100644 (file)
@@ -182,6 +182,7 @@ static struct usb_driver st5481_usb_driver = {
        .probe =        probe_st5481,
        .disconnect =   disconnect_st5481,
        .id_table =     st5481_ids,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static int __init st5481_usb_init(void)
index 42b5151aa78ae8523b27493394ba87e9900338a5..71e2b0523bc2db243704abab76ce8bd32a47d6d9 100644 (file)
@@ -1647,6 +1647,7 @@ static struct usb_driver asix_driver = {
        .resume =       usbnet_resume,
        .disconnect =   usbnet_disconnect,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(asix_driver);
index 5a73730b32eb62eb9db542c7b889c6b1973ee029..26c5bebd9ecab4c39c23044bbc45d0adc84a5897 100644 (file)
@@ -952,6 +952,7 @@ static struct usb_driver catc_driver = {
        .probe =        catc_probe,
        .disconnect =   catc_disconnect,
        .id_table =     catc_id_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(catc_driver);
index 3e41b00c6806c6b88020a0a441aee979d5c21637..d848d4dd5754fd27de451d619088748fef8f6581 100644 (file)
@@ -457,6 +457,7 @@ static struct usb_driver usbpn_driver = {
        .probe =        usbpn_probe,
        .disconnect =   usbpn_disconnect,
        .id_table =     usbpn_ids,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(usbpn_driver);
index 685a4e22c768e4bbe4c7e4f64348dd548b397507..434d5af8e6fba0bdddcf6245945f7d3cfbb40c6c 100644 (file)
@@ -368,6 +368,7 @@ static struct usb_driver eem_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(eem_driver);
index 00880edba04801bc9b686e17182bc09cc0531564..04997320862a9d319f78e587c2452c8c6a7cb255 100644 (file)
@@ -633,6 +633,7 @@ static struct usb_driver cdc_driver = {
        .resume =       usbnet_resume,
        .reset_resume = usbnet_resume,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(cdc_driver);
index 7adc9f6b0ea184bf7580ec42f85499f46545cff9..4b9513fcf27539953704630475f7754b5e3a7eb4 100644 (file)
@@ -1212,6 +1212,7 @@ static struct usb_driver cdc_ncm_driver = {
        .resume = usbnet_resume,
        .reset_resume = usbnet_resume,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static const struct ethtool_ops cdc_ncm_ethtool_ops = {
index b403d934e4e35fd57ce3598968ae1bc6a452c3b2..0d1fe89ae0bde94d813a44bc9c507fa3dac01f16 100644 (file)
@@ -336,6 +336,7 @@ static struct usb_driver cdc_subset_driver = {
        .resume =       usbnet_resume,
        .disconnect =   usbnet_disconnect,
        .id_table =     products,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(cdc_subset_driver);
index 0e0531356e629d1fb46a287c9cc1785561bbc1a6..49ab45e17fe8999c6da7281773c4be8c4da2cee3 100644 (file)
@@ -327,6 +327,7 @@ static struct usb_driver cx82310_driver = {
        .disconnect     = usbnet_disconnect,
        .suspend        = usbnet_suspend,
        .resume         = usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(cx82310_driver);
index b97226318ea5951870b45a92c9538418a551c867..e0433ce6ced7aedaf7d4e39d87aeb1c39c6a42de 100644 (file)
@@ -670,6 +670,7 @@ static struct usb_driver dm9601_driver = {
        .disconnect = usbnet_disconnect,
        .suspend = usbnet_suspend,
        .resume = usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(dm9601_driver);
index 38266bdae26b9ced95c79c19742b3458a55414f2..db3c8021f2a3aedb2dd69cd093cd65023f8b6cdc 100644 (file)
@@ -225,6 +225,7 @@ static struct usb_driver gl620a_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(gl620a_driver);
index 2d2a6882ba337dc79194319bb58c531f8c76d4d8..042c1a99520fe6204ba108b21599bec963fa022b 100644 (file)
@@ -3291,6 +3291,7 @@ static struct usb_driver hso_driver = {
        .resume = hso_resume,
        .reset_resume = hso_resume,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static int __init hso_init(void)
index 12a22a453ff1aa7fc8ccd8b04172c9018b2cd1d3..8de641713d5fcbfdfac05bc6475d86c0d596bd64 100644 (file)
@@ -236,6 +236,7 @@ static struct usb_driver int51x1_driver = {
        .disconnect = usbnet_disconnect,
        .suspend    = usbnet_suspend,
        .resume     = usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(int51x1_driver);
index 32519e5a7b97157a347365dcdcac1c29505bb42b..964031e3da877f64c54cde0fa92f7cc6b7b06f69 100644 (file)
@@ -554,6 +554,7 @@ static struct usb_driver ipheth_driver = {
        .probe =        ipheth_probe,
        .disconnect =   ipheth_disconnect,
        .id_table =     ipheth_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(ipheth_driver);
index 7562649b3d6ba1d856c8dc2c744c010e8b633669..92c49e0a59ec144a93abda0f04515185d9a5d0b0 100644 (file)
@@ -372,7 +372,8 @@ static struct usb_driver kalmia_driver = {
        .probe = usbnet_probe,
        .disconnect = usbnet_disconnect,
        .suspend = usbnet_suspend,
-       .resume = usbnet_resume
+       .resume = usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(kalmia_driver);
index b8baf085851542f59d999c3172943659f9e4265b..d8ad552843893c357e5b509b3b60daf2310217fb 100644 (file)
@@ -179,6 +179,7 @@ static struct usb_driver kaweth_driver = {
        .resume =       kaweth_resume,
        .id_table =     usb_klsi_table,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 typedef __u8 eth_addr_t[6];
index 45a981fde43fc278cc1d418fc9d2fb7ba19b9060..808d6506da41293ed9689ab2c064cfca7a99853d 100644 (file)
@@ -344,6 +344,7 @@ static struct usb_driver lg_vl600_driver = {
        .disconnect     = usbnet_disconnect,
        .suspend        = usbnet_suspend,
        .resume         = usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(lg_vl600_driver);
index c434b6ba033793457581f5aa07b41d175698a057..add1064f755dd4e78fb27ed5a49604a6165a2e50 100644 (file)
@@ -690,6 +690,7 @@ static struct usb_driver mcs7830_driver = {
        .suspend = usbnet_suspend,
        .resume = usbnet_resume,
        .reset_resume = mcs7830_reset_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(mcs7830_driver);
index 83f965cb69e74fc233d03fdd93538a05304e6670..28c4d513ba850c9165a6e0376986fcff0bb9a0f5 100644 (file)
@@ -587,6 +587,7 @@ static struct usb_driver net1080_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(net1080_driver);
index 752393092325029a4d68ad757ac9c205d83fd27a..7023220456c50b32485445d2f6fcc4d7e4d6497b 100644 (file)
@@ -1489,6 +1489,7 @@ static struct usb_driver pegasus_driver = {
        .id_table = pegasus_ids,
        .suspend = pegasus_suspend,
        .resume = pegasus_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static void __init parse_id(char *id)
index b2b035e2997897c0f38574e400bc30a50e850eee..4584b9a805b3b044b0261871def65c6b5cf13c03 100644 (file)
@@ -152,6 +152,7 @@ static struct usb_driver plusb_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(plusb_driver);
index d316503b35d477c3d0338c2ceeb8ba1cc5b107cf..9048efed46db5ab4a64fb2345f0332aa4c03b933 100644 (file)
@@ -525,6 +525,7 @@ static struct usb_driver qmi_wwan_driver = {
        .resume               = qmi_wwan_resume,
        .reset_resume         = qmi_wwan_resume,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static int __init qmi_wwan_init(void)
index c8f1b5b3aff3e13c85bf8c528a59eebc0a7cf8c1..446d074ad7d0d470765e725fd889ca46e1974498 100644 (file)
@@ -633,6 +633,7 @@ static struct usb_driver rndis_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rndis_driver);
index 65854cdcedc892a04a788090d806d9e95e4cbc35..0e2c92e0e5323e03b57b442e43db78f4f0739e8a 100644 (file)
@@ -948,7 +948,8 @@ static struct usb_driver rtl8150_driver = {
        .disconnect     = rtl8150_disconnect,
        .id_table       = rtl8150_table,
        .suspend        = rtl8150_suspend,
-       .resume         = rtl8150_resume
+       .resume         = rtl8150_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rtl8150_driver);
index b59cf20c78178046c8fca1d6b340beadef2d3a3b..3faef5670d1ff60547ec9fcbb42eb956fa7b58df 100644 (file)
@@ -982,6 +982,7 @@ static struct usb_driver sierra_net_driver = {
        .suspend = usbnet_suspend,
        .resume = usbnet_resume,
        .no_dynamic_id = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(sierra_net_driver);
index 00103a8c5e04d69e17408d32f139c9bee93aa03c..1fb4ddb2ccbfd9144b2d03df4846bf3415232c85 100644 (file)
@@ -1250,6 +1250,7 @@ static struct usb_driver smsc75xx_driver = {
        .suspend        = usbnet_suspend,
        .resume         = usbnet_resume,
        .disconnect     = usbnet_disconnect,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(smsc75xx_driver);
index 94ae66999f592a4a8a1c45fdc24505050271d086..b1112e7538592181faf89f9147c20e0feb53485a 100644 (file)
@@ -1297,6 +1297,7 @@ static struct usb_driver smsc95xx_driver = {
        .suspend        = usbnet_suspend,
        .resume         = usbnet_resume,
        .disconnect     = usbnet_disconnect,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(smsc95xx_driver);
index 34db195fb8b00880bbc6f42d9d1837bbce67c601..35c90307d473009250aa7e711d8e4949db891607 100644 (file)
@@ -377,6 +377,7 @@ static struct usb_driver zaurus_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(zaurus_driver);
index cc741b3cc0247e580ca8df73b29d7014482689b0..9dcd49cfab949d3b57f244623d1f5cf0657a46ca 100644 (file)
@@ -2486,6 +2486,7 @@ static struct usb_driver at76_driver = {
        .probe = at76_probe,
        .disconnect = at76_disconnect,
        .id_table = dev_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static int __init at76_mod_init(void)
index 325b1224c2b13b6bf9aae818acb01e3aeac0862e..f8a27db69c7ff1dd909e909d349d4adb6271f347 100644 (file)
@@ -405,6 +405,7 @@ static struct usb_driver ath6kl_usb_driver = {
        .probe = ath6kl_usb_probe,
        .disconnect = ath6kl_usb_remove,
        .id_table = ath6kl_usb_ids,
+       .disable_hub_initiated_lpm = 1,
 };
 
 static int ath6kl_usb_init(void)
index 424aabb2c7302db2bc74d4ca52256ae61fcac222..dea53dea9a5376b0c5537006472be0cbca1ffe50 100644 (file)
@@ -1356,6 +1356,7 @@ static struct usb_driver ath9k_hif_usb_driver = {
 #endif
        .id_table = ath9k_hif_usb_ids,
        .soft_unbind = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 int ath9k_hif_usb_init(void)
index 89821e4835c7c4bdadc18331df25f23e29df161a..888152ce3eca98193b01147a827b4daee59c7ff3 100644 (file)
@@ -1159,6 +1159,7 @@ static struct usb_driver carl9170_driver = {
        .resume = carl9170_usb_resume,
        .reset_resume = carl9170_usb_resume,
 #endif /* CONFIG_PM */
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(carl9170_driver);
index 82364223e81785e0023b0d56136dd2b170cac4eb..8852d23ef829cec268b080630d962a34c81ea68c 100644 (file)
@@ -1605,6 +1605,7 @@ static struct usb_driver brcmf_usbdrvr = {
        .suspend = brcmf_usb_suspend,
        .resume = brcmf_usb_resume,
        .supports_autosuspend = 1
+       .disable_hub_initiated_lpm = 1,
 };
 
 void brcmf_usb_exit(void)
index 74da5f1ea243eae088c227ecc15861a640f95bca..76ea66d53b9cbc955e45646d90bab3deb6dca2ef 100644 (file)
@@ -1180,6 +1180,7 @@ static struct usb_driver if_usb_driver = {
        .suspend = if_usb_suspend,
        .resume = if_usb_resume,
        .reset_resume = if_usb_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(if_usb_driver);
index 7ced130f4f9e2abe6c5593c18f871426fb98621a..19a5a92dd7792a0ea30d61c0427e30c2d7966cb6 100644 (file)
@@ -920,6 +920,7 @@ static struct usb_driver if_usb_driver = {
        .id_table = if_usb_table,
        .suspend = if_usb_suspend,
        .resume = if_usb_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(if_usb_driver);
index f634d4582bfe9d1d18890870ac74e499dc315a1b..7f53cea2f2052ab8b4f23b53d08c2c8eca35ee20 100644 (file)
@@ -1752,6 +1752,7 @@ static struct usb_driver orinoco_driver = {
        .probe = ezusb_probe,
        .disconnect = ezusb_disconnect,
        .id_table = ezusb_table,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(orinoco_driver);
index f4d28c39aac794bfedb75855226e6773614ae583..d14dc81820e320a283ce8684bda908af9ff3f41f 100644 (file)
@@ -1081,6 +1081,7 @@ static struct usb_driver p54u_driver = {
        .reset_resume = p54u_resume,
 #endif /* CONFIG_PM */
        .soft_unbind = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(p54u_driver);
index d66e2980bc27bab54ddd06867a8fccd50f6cfb0c..748a89de50d0967bc62904387f46ed6531cb816d 100644 (file)
@@ -3776,6 +3776,7 @@ static struct usb_driver rndis_wlan_driver = {
        .disconnect =   usbnet_disconnect,
        .suspend =      usbnet_suspend,
        .resume =       usbnet_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rndis_wlan_driver);
index 1de9c752c88b54094b320a08812f83dc931f66e7..d432e49ed6cddad4d939de49db85f5248d960294 100644 (file)
@@ -1980,6 +1980,7 @@ static struct usb_driver rt2500usb_driver = {
        .disconnect     = rt2x00usb_disconnect,
        .suspend        = rt2x00usb_suspend,
        .resume         = rt2x00usb_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rt2500usb_driver);
index 001735f7a6619b5f5419e3abbc7371c989f432cf..d60d4e2772e6bbed349db86059e14b0d5daab355 100644 (file)
@@ -1293,6 +1293,7 @@ static struct usb_driver rt2800usb_driver = {
        .disconnect     = rt2x00usb_disconnect,
        .suspend        = rt2x00usb_suspend,
        .resume         = rt2x00usb_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rt2800usb_driver);
index e477a964081df9d9148b3fab2492d818e473340d..f813de6cd1b79b3951ff30ae75578524bb30bf21 100644 (file)
@@ -2526,6 +2526,7 @@ static struct usb_driver rt73usb_driver = {
        .disconnect     = rt2x00usb_disconnect,
        .suspend        = rt2x00usb_suspend,
        .resume         = rt2x00usb_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rt73usb_driver);
index cf53ac9d6f23f2787561883f15985a974abb7f8d..c2d2a21dd4527b00f910080a021fddc64fd032cf 100644 (file)
@@ -1662,6 +1662,7 @@ static struct usb_driver rtl8187_driver = {
        .id_table       = rtl8187_table,
        .probe          = rtl8187_probe,
        .disconnect     = __devexit_p(rtl8187_disconnect),
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rtl8187_driver);
index 82c85286ab2e25852eb7e45f878fc7b783e07f97..0face8b7e524f223d51ed38e0ace34fa1f5ea8a2 100644 (file)
@@ -372,6 +372,7 @@ static struct usb_driver rtl8192cu_driver = {
 #ifdef CONFIG_AUTOSUSPEND
        .supports_autosuspend = 1,
 #endif
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(rtl8192cu_driver);
index a66b93b7ff9a11fb98dbe19ee56a38846adc9007..48273dd05b636087165a19d0af75c1054c9c6654 100644 (file)
@@ -1905,6 +1905,7 @@ static struct usb_driver zd1201_usb = {
        .id_table = zd1201_table,
        .suspend = zd1201_suspend,
        .resume = zd1201_resume,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(zd1201_usb);
index f766b3e67c6d42380cee91936cd0b85ab9907337..af83c43bcdb1ebe7d08c27ec6f6d85e13f4cf954 100644 (file)
@@ -1542,6 +1542,7 @@ static struct usb_driver driver = {
        .disconnect     = disconnect,
        .pre_reset      = pre_reset,
        .post_reset     = post_reset,
+       .disable_hub_initiated_lpm = 1,
 };
 
 struct workqueue_struct *zd_workqueue;
index b32ccb46101960b62e2e81bf4f0b655797a45668..f2a120eea9d4872657879dcc00689ff28c41dfed 100644 (file)
@@ -1664,6 +1664,7 @@ static struct usb_driver acm_driver = {
 #ifdef CONFIG_PM
        .supports_autosuspend = 1,
 #endif
+       .disable_hub_initiated_lpm = 1,
 };
 
 /*
index 631bb952d0f6d0590c73461468f4287b30abc0ae..ea8b304f0e853af63651e0d70c5f6d1b69938fe9 100644 (file)
@@ -1034,6 +1034,7 @@ static struct usb_driver wdm_driver = {
        .post_reset =   wdm_post_reset,
        .id_table =     wdm_ids,
        .supports_autosuspend = 1,
+       .disable_hub_initiated_lpm = 1,
 };
 
 module_usb_driver(wdm_driver);