kernel: fix usb interface on 3G dwm-158 modem
authorGiuseppe Lippolis <giu.lippolis@gmail.com>
Fri, 20 Apr 2018 17:00:33 +0000 (19:00 +0200)
committerMathias Kresin <dev@kresin.me>
Mon, 23 Apr 2018 20:07:22 +0000 (22:07 +0200)
The current option driver binds to the usb interface 2,3,4,5.
But the interface 4 and 5 doesn't answer to the AT commands.
On the new openwrt configuration the wwan script select the 5th
interface as control interface, failing to establish the
3G connection.

Backport the fix for the problem.

Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch [new file with mode: 0644]

diff --git a/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch b/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch
new file mode 100644 (file)
index 0000000..eccfbe5
--- /dev/null
@@ -0,0 +1,42 @@
+From ebe37f322acbb95966094cb2b0fff6e44b5893a6 Mon Sep 17 00:00:00 2001
+From: Giuseppe Lippolis <giu.lippolis@gmail.com>
+Date: Mon, 23 Apr 2018 09:03:06 +0200
+Subject: [PATCH] USB: serial: option: fix dwm-158 3g modem interface
+
+The dwm-158 interface 4 and 5 doesn't answer to the AT commands
+and doesn't appears a option interface.
+Tested on openwrt distribution (kernel 4.14 using the old blacklist
+definitions).
+
+Lars Melin also writes:
+
+       Blacklisting interface 4 and 5 is correct because:
+
+       MI_00 D-Link Mobile Broadband Device  (cdc_ether)
+       MI_02 D-Link HSPA+DataCard Diagnostics Interface (also ppp modem)
+       MI_03 D-Link HSPA+DataCard NMEA Device
+       MI_04 D-Link HSPA+DataCard Speech Port
+       MI_05 D-Link HSPA+DataCard Debug Port
+       MI_06 USB Mass Storage Device
+
+Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
+[ johan: add Lars's comment on the interface layout ]
+Cc: Lars Melin <larsm17@gmail.com>
+Cc: stable <stable@vger.kernel.org>    # c3a65808f04a
+Signed-off-by: Johan Hovold <johan@kernel.org>
+---
+ drivers/usb/serial/option.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -2046,7 +2046,8 @@ static const struct usb_device_id option
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) },                   /* D-Link DWM-156 (variant) */
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) },
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) },
+-      { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) },                   /* D-Link DWM-158 */
++      { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff),                     /* D-Link DWM-158 */
++       .driver_info = (kernel_ulong_t)&cinterion_rmnet2_blacklist },
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d0e, 0xff) },                   /* D-Link DWM-157 C1 */
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff),                     /* D-Link DWM-221 B1 */
+         .driver_info = (kernel_ulong_t)&net_intf4_blacklist },