usb: cdc: ncm constants and structures added

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Yauheni Kaliuta 2010-04-16 16:13:34 +03:00 committed by Greg Kroah-Hartman
parent 9ff68c7ad8
commit 01154aa714

View File

@ -18,6 +18,7 @@
#define USB_CDC_SUBCLASS_MDLM 0x0a
#define USB_CDC_SUBCLASS_OBEX 0x0b
#define USB_CDC_SUBCLASS_EEM 0x0c
#define USB_CDC_SUBCLASS_NCM 0x0d
#define USB_CDC_PROTO_NONE 0
@ -49,6 +50,7 @@
#define USB_CDC_MDLM_DETAIL_TYPE 0x13 /* mdlm_detail_desc */
#define USB_CDC_DMM_TYPE 0x14
#define USB_CDC_OBEX_TYPE 0x15
#define USB_CDC_NCM_TYPE 0x1a
/* "Header Functional Descriptor" from CDC spec 5.2.3.1 */
struct usb_cdc_header_desc {
@ -174,6 +176,15 @@ struct usb_cdc_obex_desc {
__le16 bcdVersion;
} __attribute__ ((packed));
/* "NCM Control Model Functional Descriptor" */
struct usb_cdc_ncm_desc {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__le16 bcdNcmVersion;
__u8 bmNetworkCapabilities;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/*
@ -197,6 +208,17 @@ struct usb_cdc_obex_desc {
#define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER 0x42
#define USB_CDC_SET_ETHERNET_PACKET_FILTER 0x43
#define USB_CDC_GET_ETHERNET_STATISTIC 0x44
#define USB_CDC_GET_NTB_PARAMETERS 0x80
#define USB_CDC_GET_NET_ADDRESS 0x81
#define USB_CDC_SET_NET_ADDRESS 0x82
#define USB_CDC_GET_NTB_FORMAT 0x83
#define USB_CDC_SET_NTB_FORMAT 0x84
#define USB_CDC_GET_NTB_INPUT_SIZE 0x85
#define USB_CDC_SET_NTB_INPUT_SIZE 0x86
#define USB_CDC_GET_MAX_DATAGRAM_SIZE 0x87
#define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
#define USB_CDC_GET_CRC_MODE 0x89
#define USB_CDC_SET_CRC_MODE 0x8a
/* Line Coding Structure from CDC spec 6.2.13 */
struct usb_cdc_line_coding {
@ -247,4 +269,76 @@ struct usb_cdc_notification {
__le16 wLength;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/*
* Class Specific structures and constants
*
* CDC NCM parameter structure, CDC NCM subclass 6.2.1
*
*/
struct usb_cdc_ncm_ntb_parameter {
__le16 wLength;
__le16 bmNtbFormatSupported;
__le32 dwNtbInMaxSize;
__le16 wNdpInDivisor;
__le16 wNdpInPayloadRemainder;
__le16 wNdpInAlignment;
__le16 wPadding1;
__le32 dwNtbOutMaxSize;
__le16 wNdpOutDivisor;
__le16 wNdpOutPayloadRemainder;
__le16 wNdpOutAlignment;
__le16 wPadding2;
} __attribute__ ((packed));
/*
* CDC NCM transfer headers, CDC NCM subclass 3.2
*/
#define NCM_NTH16_SIGN 0x484D434E /* NCMH */
#define NCM_NTH32_SIGN 0x686D636E /* ncmh */
struct usb_cdc_ncm_nth16 {
__le32 dwSignature;
__le16 wHeaderLength;
__le16 wSequence;
__le16 wBlockLength;
__le16 wFpIndex;
} __attribute__ ((packed));
struct usb_cdc_ncm_nth32 {
__le32 dwSignature;
__le16 wHeaderLength;
__le16 wSequence;
__le32 dwBlockLength;
__le32 dwFpIndex;
} __attribute__ ((packed));
/*
* CDC NCM datagram pointers, CDC NCM subclass 3.3
*/
#define NCM_NDP16_CRC_SIGN 0x314D434E /* NCM1 */
#define NCM_NDP16_NOCRC_SIGN 0x304D434E /* NCM0 */
#define NCM_NDP32_CRC_SIGN 0x316D636E /* ncm1 */
#define NCM_NDP32_NOCRC_SIGN 0x306D636E /* ncm0 */
struct usb_cdc_ncm_ndp16 {
__le32 dwSignature;
__le16 wLength;
__le16 wNextFpIndex;
__u8 data[0];
} __attribute__ ((packed));
struct usb_cdc_ncm_ndp32 {
__le32 dwSignature;
__le16 wLength;
__le16 wReserved6;
__le32 dwNextFpIndex;
__le32 dwReserved12;
__u8 data[0];
} __attribute__ ((packed));
#endif /* __LINUX_USB_CDC_H */