tag name | debian-bug-670241-update (d1ea56bf05cacbd32fb259fba575004c9dab1c24) |
tag date | 2012-06-04 22:08:34 +0200 |
tagged by | Bjørn Mork <bjorn@mork.no> |
tagged object | commit 3ffaa24df8... |
rebased on v3.2.19, including new device IDs from v3.5-rc1
A few changes since the bug was reported:
- v3.2.19 includes a few fixes in cdc-wdm which conflict with the
backport. The easiest way to merge these is to first revert them, do
the backport, and then reapply the fixes as cherry-picks from
mainline.
- The sierra driver fix has been included in stable and can be dropped.
- A few new device IDs has been added to the qmi_wwan driver.
The following procedure will produce a backported version of qmi_wwan
and the supporting cdc-wdm driver on top of a clean v3.2.19:
1) revert the following conflicting stable fixes (will be reapplied in
the next step):
8fd4242 USB: cdc-wdm: cannot use dev_printk when device is gone
0c68ab1 USB: cdc-wdm: add debug messages on cleanup
7569109 USB: cdc-wdm: fix memory leak
811c72b USB: cdc-wdm: sanitize error returns
2) cherry-pick to add subdriver support to cdc-wdm:
19b85b3 USB: cdc-wdm: no need to fill the in request URB every time it's submitted
8143a89 USB: cdc-wdm: kill the now unnecessary bMaxPacketSize0 field and udev variable
820c629 USB: cdc-wdm: avoid printing odd-looking "cdc-wdm-176" names
fec67b4 usb: cdc-wdm: Add device-id for Huawei 3G/LTE modems
8804420 usb: cdc-wdm: make reset work with blocking IO
8457d99 USB: cdc-wdm: no need to use usb_alloc_coherent
0dffb48 usb: cdc-wdm: split out reusable parts of probe
b0c1386 usb: cdc-wdm: adding list lookup indirection
3cc3615 usb: cdc-wdm: adding usb_cdc_wdm_register subdriver support
24a85ba USB: cdc-wdm: sanitize error returns
2f338c8 USB: cdc-wdm: fix memory leak
880bca3 USB: cdc-wdm: add debug messages on cleanup
12a98b2 USB: cdc-wdm: cleanup error codes
6b0b79d USB: cdc-wdm: cannot use dev_printk when device is gone
6286d85 USB: cdc-wdm: remove from device list on disconnect
3) cherry-pick to add qmi_wwan driver:
423ce8c net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices
c3ecb08 net: qmi_wwan: support devices having a shared QMI/wwan interface
b086cf0 net: qmi_wwan: add Gobi and Pantech UML290 device IDs
11207b6 net: qmi_wwan: add support for ZTE MF820D
1aa35a2 USB: qmi_wwan: Add ZTE (Vodafone) K3565-Z and K4505-Z net interfaces
dbb6d09 USB: qmi_wwan: Add ZTE (Vodafone) K3570-Z and K3571-Z net interfaces
3bc17d1 net: qmi_wwan: support Sierra Wireless MC77xx devices in QMI mode
88c16dc net: qmi_wwan: Add Vodafone/Huawei K5005 support
0000188 USB: qmi_wwan: Make forced int 4 whitelist generic
8965c98 USB: qmi_wwan: Add ZTE (Vodafone) K3765-Z
f7142e6 USB: qmi_wwan: Add ZTE (Vodafone) K3520-Z
5e071b5 net: qmi_wwan: Add Sierra Wireless device IDs
The diffstat of the above is:
bjorn@nemi:/usr/local/src/git/linux$ git diff --stat v3.2.19..HEAD
drivers/net/usb/Kconfig | 22 +++++++
drivers/net/usb/Makefile | 1 +
drivers/net/usb/qmi_wwan.c | 581 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
drivers/usb/class/cdc-wdm.c | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------
include/linux/usb/cdc-wdm.h | 19 ++++++
5 files changed, 849 insertions(+), 119 deletions(-)
The resulting drivers will be identical to the 3.5-rc1 versions, with
the exception of the module_usb_driver() macro and the
disable_hub_initiated_lpm patch:
bjorn@nemi:/usr/local/src/git/linux$ git diff HEAD..v3.5-rc1 -- drivers/usb/class/cdc-wdm.c include/linux/usb/cdc-wdm.h drivers/net/usb/qmi_wwan.c
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 32755c6..3b20678 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -562,6 +562,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)
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index 2236fe7..ea8b304 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -1034,26 +1034,10 @@ static struct usb_driver wdm_driver = {
.post_reset = wdm_post_reset,
.id_table = wdm_ids,
.supports_autosuspend = 1,
+ .disable_hub_initiated_lpm = 1,
};
-/* --- low level module stuff --- */
-
-static int __init wdm_init(void)
-{
- int rv;
-
- rv = usb_register(&wdm_driver);
-
- return rv;
-}
-
-static void __exit wdm_exit(void)
-{
- usb_deregister(&wdm_driver);
-}
-
-module_init(wdm_init);
-module_exit(wdm_exit);
+module_usb_driver(wdm_driver);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iEYEABECAAYFAk/NFjQACgkQ10rqkowbIskt3ACdEmxOvnX3e04op8fxbeV35rBc
GA8AnR7nB9PIKzn7ltNsfJ2wgk46SMjA
=guYV
-----END PGP SIGNATURE-----