Re: the mysterious

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok, it works! And I'm sending this mail from the wwan0 interface XD !!
thank you very much for this work!!
Hoping this patch can be submitted - and hoping to send you soon even the 
option-related one.

Note to everyone: to bring up the ndis interface, use the
at^ndisdup=1,1,<apn>
command ad usual; here also ndisconn is usable.



On Fri, 28 Jun 2013, Bj?rn Mork wrote:

==Date: Fri, 28 Jun 2013 10:53:06 +0200
==From: Bj?rn Mork <bjorn@xxxxxxx>
==To: Enrico Mioso <mrkiko.rs@xxxxxxxxx>
==Cc: linux-usb@xxxxxxxxxxxxxxx
==Subject: Re: the mysterious
==
==Bj?rn Mork <bjorn@xxxxxxx> writes:
==
==> I guess we can add a workaround for this to cdc_ether.c, just like we
==> recently did for cdc_ncm.c for other types of Huawei devices with the
==> same problem.
==
==Could you try the patch below and see if that makes the driver work with
==this modem?  It's build tested only.
==
==
==From 330a716f964eab191b248a8ff7385c6be4261fca Mon Sep 17 00:00:00 2001
==From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@xxxxxxx>
==Date: Fri, 28 Jun 2013 10:49:25 +0200
==Subject: [RFT] net: cdc_ether: allow combined control and data interface
==MIME-Version: 1.0
==Content-Type: text/plain; charset=UTF-8
==Content-Transfer-Encoding: 8bit
==
==Signed-off-by: Bj?rn Mork <bjorn@xxxxxxx>
==---
== drivers/net/usb/cdc_ether.c |   24 +++++++++++++++++-------
== 1 file changed, 17 insertions(+), 7 deletions(-)
==
==diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
==index 078795f..8da35f8 100644
==--- a/drivers/net/usb/cdc_ether.c
==+++ b/drivers/net/usb/cdc_ether.c
==@@ -215,6 +215,10 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
== 					goto bad_desc;
== 			}
== 
==+			/* some devices merge these - skip class check */
==+			if (info->control == info->data)
==+				goto next_desc;
==+
== 			/* a data interface altsetting does the real i/o */
== 			d = &info->data->cur_altsetting->desc;
== 			if (d->bInterfaceClass != USB_CLASS_CDC_DATA) {
==@@ -304,19 +308,23 @@ next_desc:
== 	/* claim data interface and set it up ... with side effects.
== 	 * network traffic can't flow until an altsetting is enabled.
== 	 */
==-	status = usb_driver_claim_interface(driver, info->data, dev);
==-	if (status < 0)
==-		return status;
==+	if (info->data != info->control) {
==+		status = usb_driver_claim_interface(driver, info->data, dev);
==+		if (status < 0)
==+			return status;
==+	}
== 	status = usbnet_get_endpoints(dev, info->data);
== 	if (status < 0) {
== 		/* ensure immediate exit from usbnet_disconnect */
== 		usb_set_intfdata(info->data, NULL);
==-		usb_driver_release_interface(driver, info->data);
==+		if (info->data != info->control)
==+			usb_driver_release_interface(driver, info->data);
== 		return status;
== 	}
== 
== 	/* status endpoint: optional for CDC Ethernet, not RNDIS (or ACM) */
==-	dev->status = NULL;
==+	if (info->data != info->control)
==+		dev->status = NULL;
== 	if (info->control->cur_altsetting->desc.bNumEndpoints == 1) {
== 		struct usb_endpoint_descriptor	*desc;
== 
==@@ -353,7 +361,8 @@ void usbnet_cdc_unbind(struct usbnet *dev, struct usb_interface *intf)
== 	if (intf == info->control && info->data) {
== 		/* ensure immediate exit from usbnet_disconnect */
== 		usb_set_intfdata(info->data, NULL);
==-		usb_driver_release_interface(driver, info->data);
==+		if (info->data != info->control)
==+			usb_driver_release_interface(driver, info->data);
== 		info->data = NULL;
== 	}
== 
==@@ -361,7 +370,8 @@ void usbnet_cdc_unbind(struct usbnet *dev, struct usb_interface *intf)
== 	else if (intf == info->data && info->control) {
== 		/* ensure immediate exit from usbnet_disconnect */
== 		usb_set_intfdata(info->control, NULL);
==-		usb_driver_release_interface(driver, info->control);
==+		if (info->data != info->control)
==+			usb_driver_release_interface(driver, info->control);
== 		info->control = NULL;
== 	}
== }
==-- 
==1.7.10.4
==
==
--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux