|
@@ -19,6 +19,7 @@
|
|
|
#define USB_CDC_SUBCLASS_OBEX 0x0b
|
|
|
#define USB_CDC_SUBCLASS_EEM 0x0c
|
|
|
#define USB_CDC_SUBCLASS_NCM 0x0d
|
|
|
+#define USB_CDC_SUBCLASS_MBIM 0x0e
|
|
|
|
|
|
#define USB_CDC_PROTO_NONE 0
|
|
|
|
|
@@ -33,6 +34,7 @@
|
|
|
#define USB_CDC_PROTO_EEM 7
|
|
|
|
|
|
#define USB_CDC_NCM_PROTO_NTB 1
|
|
|
+#define USB_CDC_MBIM_PROTO_NTB 2
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
|
@@ -53,6 +55,7 @@
|
|
|
#define USB_CDC_DMM_TYPE 0x14
|
|
|
#define USB_CDC_OBEX_TYPE 0x15
|
|
|
#define USB_CDC_NCM_TYPE 0x1a
|
|
|
+#define USB_CDC_MBIM_TYPE 0x1b
|
|
|
|
|
|
/* "Header Functional Descriptor" from CDC spec 5.2.3.1 */
|
|
|
struct usb_cdc_header_desc {
|
|
@@ -187,6 +190,21 @@ struct usb_cdc_ncm_desc {
|
|
|
__le16 bcdNcmVersion;
|
|
|
__u8 bmNetworkCapabilities;
|
|
|
} __attribute__ ((packed));
|
|
|
+
|
|
|
+/* "MBIM Control Model Functional Descriptor" */
|
|
|
+struct usb_cdc_mbim_desc {
|
|
|
+ __u8 bLength;
|
|
|
+ __u8 bDescriptorType;
|
|
|
+ __u8 bDescriptorSubType;
|
|
|
+
|
|
|
+ __le16 bcdMBIMVersion;
|
|
|
+ __le16 wMaxControlMessage;
|
|
|
+ __u8 bNumberFilters;
|
|
|
+ __u8 bMaxFilterSize;
|
|
|
+ __le16 wMaxSegmentSize;
|
|
|
+ __u8 bmNetworkCapabilities;
|
|
|
+} __attribute__ ((packed));
|
|
|
+
|
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
|
|
/*
|
|
@@ -332,6 +350,11 @@ struct usb_cdc_ncm_nth32 {
|
|
|
#define USB_CDC_NCM_NDP32_CRC_SIGN 0x316D636E /* ncm1 */
|
|
|
#define USB_CDC_NCM_NDP32_NOCRC_SIGN 0x306D636E /* ncm0 */
|
|
|
|
|
|
+#define USB_CDC_MBIM_NDP16_IPS_SIGN 0x00535049 /* IPS<sessionID> : IPS0 for now */
|
|
|
+#define USB_CDC_MBIM_NDP32_IPS_SIGN 0x00737069 /* ips<sessionID> : ips0 for now */
|
|
|
+#define USB_CDC_MBIM_NDP16_DSS_SIGN 0x00535344 /* DSS<sessionID> */
|
|
|
+#define USB_CDC_MBIM_NDP32_DSS_SIGN 0x00737364 /* dss<sessionID> */
|
|
|
+
|
|
|
/* 16-bit NCM Datagram Pointer Entry */
|
|
|
struct usb_cdc_ncm_dpe16 {
|
|
|
__le16 wDatagramIndex;
|