mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure
@ 2014-03-18  3:59 Ben Chan
  2014-03-18  3:59 ` [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM Ben Chan
  2014-03-18  8:35 ` [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Bjørn Mork
  0 siblings, 2 replies; 5+ messages in thread
From: Ben Chan @ 2014-03-18  3:59 UTC (permalink / raw)
  To: linux-kernel, linux-usb, netdev, Oliver Neukum
  Cc: Greg Kroah-Hartman, Bjørn Mork, Greg Suarez

This patch adds the MBIM extended functional descriptor structure
defined in "Universal Serial Bus Communications Class Subclass
Specification for Mobile Broadband Interface Model, Revision 1.0,
Errata-1" published by USB-IF.

Signed-off-by: Ben Chan <benchan@chromium.org>
---
No changes from patch v1.

 include/uapi/linux/usb/cdc.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/include/uapi/linux/usb/cdc.h b/include/uapi/linux/usb/cdc.h
index f35aa0a..b6a9cdd 100644
--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -56,6 +56,7 @@
 #define USB_CDC_OBEX_TYPE		0x15
 #define USB_CDC_NCM_TYPE		0x1a
 #define USB_CDC_MBIM_TYPE		0x1b
+#define USB_CDC_MBIM_EXTENDED_TYPE	0x1c
 
 /* "Header Functional Descriptor" from CDC spec  5.2.3.1 */
 struct usb_cdc_header_desc {
@@ -205,6 +206,17 @@ struct usb_cdc_mbim_desc {
 	__u8    bmNetworkCapabilities;
 } __attribute__ ((packed));
 
+/* "MBIM Extended Functional Descriptor" from CDC MBIM spec 1.0 errata-1 */
+struct usb_cdc_mbim_extended_desc {
+	__u8	bLength;
+	__u8	bDescriptorType;
+	__u8	bDescriptorSubType;
+
+	__le16	bcdMBIMExtendedVersion;
+	__u8	bMaxOutstandingCommandMessages;
+	__le16	wMTU;
+} __attribute__ ((packed));
+
 /*-------------------------------------------------------------------------*/
 
 /*
-- 
1.9.0.279.gdc9e3eb


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM
  2014-03-18  3:59 [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Ben Chan
@ 2014-03-18  3:59 ` Ben Chan
  2014-03-18  8:33   ` Bjørn Mork
  2014-03-18  8:35 ` [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Bjørn Mork
  1 sibling, 1 reply; 5+ messages in thread
From: Ben Chan @ 2014-03-18  3:59 UTC (permalink / raw)
  To: linux-kernel, linux-usb, netdev, Oliver Neukum
  Cc: Greg Kroah-Hartman, Bjørn Mork, Greg Suarez

According to "Universal Serial Bus Communications Class Subclass
Specification for Mobile Broadband Interface Model, Revision 1.0,
Errata-1" published by USB-IF, the wMTU field of the MBIM extended
functional descriptor indicates the operator preferred MTU for IP data
streams.

This patch modifies cdc_ncm_setup to ensure that the MTU value set on
the usbnet device does not exceed the operator preferred MTU indicated
by wMTU if the MBIM device exposes a MBIM extended functional
descriptor.

Signed-off-by: Ben Chan <benchan@chromium.org>
---
Patch v3 (which is same as v2) adds the le16_to_cpu conversion on
ctx->mbim_extended_desc->wMTU as pointed out and suggested by
'Bjørn Mork <bjorn@mork.no>'.

 drivers/net/usb/cdc_ncm.c   | 17 +++++++++++++++++
 include/linux/usb/cdc_ncm.h |  1 +
 2 files changed, 18 insertions(+)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index dbff290..e8711a8 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -74,6 +74,7 @@ static int cdc_ncm_setup(struct usbnet *dev)
 	u8 iface_no;
 	int err;
 	int eth_hlen;
+	u16 mbim_mtu;
 	u16 ntb_fmt_supported;
 	__le16 max_datagram_size;
 
@@ -261,6 +262,14 @@ out:
 	/* set MTU to max supported by the device if necessary */
 	if (dev->net->mtu > ctx->max_datagram_size - eth_hlen)
 		dev->net->mtu = ctx->max_datagram_size - eth_hlen;
+
+	/* do not exceed operater preferred MTU */
+	if (ctx->mbim_extended_desc) {
+		mbim_mtu = le16_to_cpu(ctx->mbim_extended_desc->wMTU);
+		if (mbim_mtu != 0 && mbim_mtu < dev->net->mtu)
+			dev->net->mtu = mbim_mtu;
+	}
+
 	return 0;
 }
 
@@ -399,6 +408,14 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
 			ctx->mbim_desc = (const struct usb_cdc_mbim_desc *)buf;
 			break;
 
+		case USB_CDC_MBIM_EXTENDED_TYPE:
+			if (buf[0] < sizeof(*(ctx->mbim_extended_desc)))
+				break;
+
+			ctx->mbim_extended_desc =
+				(const struct usb_cdc_mbim_extended_desc *)buf;
+			break;
+
 		default:
 			break;
 		}
diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h
index c3fa807..bdf05fb 100644
--- a/include/linux/usb/cdc_ncm.h
+++ b/include/linux/usb/cdc_ncm.h
@@ -93,6 +93,7 @@ struct cdc_ncm_ctx {
 
 	const struct usb_cdc_ncm_desc *func_desc;
 	const struct usb_cdc_mbim_desc *mbim_desc;
+	const struct usb_cdc_mbim_extended_desc *mbim_extended_desc;
 	const struct usb_cdc_ether_desc *ether_desc;
 
 	struct usb_interface *control;
-- 
1.9.0.279.gdc9e3eb


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM
  2014-03-18  3:59 ` [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM Ben Chan
@ 2014-03-18  8:33   ` Bjørn Mork
  0 siblings, 0 replies; 5+ messages in thread
From: Bjørn Mork @ 2014-03-18  8:33 UTC (permalink / raw)
  To: Ben Chan
  Cc: linux-kernel, linux-usb, netdev, Oliver Neukum,
	Greg Kroah-Hartman, Greg Suarez

Ben Chan <benchan@chromium.org> writes:

> According to "Universal Serial Bus Communications Class Subclass
> Specification for Mobile Broadband Interface Model, Revision 1.0,
> Errata-1" published by USB-IF, the wMTU field of the MBIM extended
> functional descriptor indicates the operator preferred MTU for IP data
> streams.
>
> This patch modifies cdc_ncm_setup to ensure that the MTU value set on
> the usbnet device does not exceed the operator preferred MTU indicated
> by wMTU if the MBIM device exposes a MBIM extended functional
> descriptor.
>
> Signed-off-by: Ben Chan <benchan@chromium.org>
> ---
> Patch v3 (which is same as v2) adds the le16_to_cpu conversion on
> ctx->mbim_extended_desc->wMTU as pointed out and suggested by
> 'Bjørn Mork <bjorn@mork.no>'.

Looks good to me FWIW.

I was worried that I might have created a merge conflict here by posting
the unrelated cdc_ncm fix, touching the same function.  But we're in
luck: That fix and your patch applies cleanly on top of each other in
any order.


Bjørn

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure
  2014-03-18  3:59 [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Ben Chan
  2014-03-18  3:59 ` [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM Ben Chan
@ 2014-03-18  8:35 ` Bjørn Mork
  2014-03-19 20:05   ` David Miller
  1 sibling, 1 reply; 5+ messages in thread
From: Bjørn Mork @ 2014-03-18  8:35 UTC (permalink / raw)
  To: Ben Chan
  Cc: linux-kernel, linux-usb, netdev, Oliver Neukum,
	Greg Kroah-Hartman, Greg Suarez

Ben Chan <benchan@chromium.org> writes:

> This patch adds the MBIM extended functional descriptor structure
> defined in "Universal Serial Bus Communications Class Subclass
> Specification for Mobile Broadband Interface Model, Revision 1.0,
> Errata-1" published by USB-IF.
>
> Signed-off-by: Ben Chan <benchan@chromium.org>
> ---
> No changes from patch v1.

I believe you could have included Greg KH's ack then, to make sure it is
recorded.  Or will patchwork keep track of tags across different patch
versions?


Bjørn

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure
  2014-03-18  8:35 ` [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Bjørn Mork
@ 2014-03-19 20:05   ` David Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2014-03-19 20:05 UTC (permalink / raw)
  To: bjorn; +Cc: benchan, linux-kernel, linux-usb, netdev, oliver, gregkh, gsuarez

From: Bjørn Mork <bjorn@mork.no>
Date: Tue, 18 Mar 2014 09:35:57 +0100

> Or will patchwork keep track of tags across different patch
> versions?

It doesn't, and should not.  It has no idea if the patch changed or
not, the ACK'er might not still agree with the patch if any changes
were made.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-03-19 20:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-18  3:59 [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Ben Chan
2014-03-18  3:59 ` [PATCH v3 2/2] net: cdc_ncm: respect operator preferred MTU reported by MBIM Ben Chan
2014-03-18  8:33   ` Bjørn Mork
2014-03-18  8:35 ` [PATCH v3 1/2] USB: cdc: add MBIM extended functional descriptor structure Bjørn Mork
2014-03-19 20:05   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®