~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/usb/cdc.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/usb/cdc.h (Version linux-6.12-rc7) and /include/linux/usb/cdc.h (Version linux-2.6.32.71)


  1 // SPDX-License-Identifier: GPL-2.0            << 
  2 /*                                                  1 /*
  3  * USB CDC common helpers                      !!   2  * USB Communications Device Class (CDC) definitions
  4  *                                                  3  *
  5  * Copyright (c) 2015 Oliver Neukum <oneukum@s !!   4  * CDC says how to talk to lots of different types of network adapters,
                                                   >>   5  * notably ethernet adapters and various modems.  It's used mostly with
                                                   >>   6  * firmware based USB peripherals.
  6  */                                                 7  */
                                                   >>   8 
  7 #ifndef __LINUX_USB_CDC_H                           9 #ifndef __LINUX_USB_CDC_H
  8 #define __LINUX_USB_CDC_H                          10 #define __LINUX_USB_CDC_H
  9                                                    11 
 10 #include <uapi/linux/usb/cdc.h>                !!  12 #include <linux/types.h>
                                                   >>  13 
                                                   >>  14 #define USB_CDC_SUBCLASS_ACM                    0x02
                                                   >>  15 #define USB_CDC_SUBCLASS_ETHERNET               0x06
                                                   >>  16 #define USB_CDC_SUBCLASS_WHCM                   0x08
                                                   >>  17 #define USB_CDC_SUBCLASS_DMM                    0x09
                                                   >>  18 #define USB_CDC_SUBCLASS_MDLM                   0x0a
                                                   >>  19 #define USB_CDC_SUBCLASS_OBEX                   0x0b
                                                   >>  20 #define USB_CDC_SUBCLASS_EEM                    0x0c
                                                   >>  21 
                                                   >>  22 #define USB_CDC_PROTO_NONE                      0
                                                   >>  23 
                                                   >>  24 #define USB_CDC_ACM_PROTO_AT_V25TER             1
                                                   >>  25 #define USB_CDC_ACM_PROTO_AT_PCCA101            2
                                                   >>  26 #define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE       3
                                                   >>  27 #define USB_CDC_ACM_PROTO_AT_GSM                4
                                                   >>  28 #define USB_CDC_ACM_PROTO_AT_3G                 5
                                                   >>  29 #define USB_CDC_ACM_PROTO_AT_CDMA               6
                                                   >>  30 #define USB_CDC_ACM_PROTO_VENDOR                0xff
                                                   >>  31 
                                                   >>  32 #define USB_CDC_PROTO_EEM                       7
                                                   >>  33 
                                                   >>  34 /*-------------------------------------------------------------------------*/
 11                                                    35 
 12 /*                                                 36 /*
 13  * inofficial magic numbers                    !!  37  * Class-Specific descriptors ... there are a couple dozen of them
 14  */                                                38  */
 15                                                    39 
 16 #define CDC_PHONET_MAGIC_NUMBER         0xAB   !!  40 #define USB_CDC_HEADER_TYPE             0x00    /* header_desc */
                                                   >>  41 #define USB_CDC_CALL_MANAGEMENT_TYPE    0x01    /* call_mgmt_descriptor */
                                                   >>  42 #define USB_CDC_ACM_TYPE                0x02    /* acm_descriptor */
                                                   >>  43 #define USB_CDC_UNION_TYPE              0x06    /* union_desc */
                                                   >>  44 #define USB_CDC_COUNTRY_TYPE            0x07
                                                   >>  45 #define USB_CDC_NETWORK_TERMINAL_TYPE   0x0a    /* network_terminal_desc */
                                                   >>  46 #define USB_CDC_ETHERNET_TYPE           0x0f    /* ether_desc */
                                                   >>  47 #define USB_CDC_WHCM_TYPE               0x11
                                                   >>  48 #define USB_CDC_MDLM_TYPE               0x12    /* mdlm_desc */
                                                   >>  49 #define USB_CDC_MDLM_DETAIL_TYPE        0x13    /* mdlm_detail_desc */
                                                   >>  50 #define USB_CDC_DMM_TYPE                0x14
                                                   >>  51 #define USB_CDC_OBEX_TYPE               0x15
                                                   >>  52 
                                                   >>  53 /* "Header Functional Descriptor" from CDC spec  5.2.3.1 */
                                                   >>  54 struct usb_cdc_header_desc {
                                                   >>  55         __u8    bLength;
                                                   >>  56         __u8    bDescriptorType;
                                                   >>  57         __u8    bDescriptorSubType;
                                                   >>  58 
                                                   >>  59         __le16  bcdCDC;
                                                   >>  60 } __attribute__ ((packed));
                                                   >>  61 
                                                   >>  62 /* "Call Management Descriptor" from CDC spec  5.2.3.2 */
                                                   >>  63 struct usb_cdc_call_mgmt_descriptor {
                                                   >>  64         __u8    bLength;
                                                   >>  65         __u8    bDescriptorType;
                                                   >>  66         __u8    bDescriptorSubType;
                                                   >>  67 
                                                   >>  68         __u8    bmCapabilities;
                                                   >>  69 #define USB_CDC_CALL_MGMT_CAP_CALL_MGMT         0x01
                                                   >>  70 #define USB_CDC_CALL_MGMT_CAP_DATA_INTF         0x02
                                                   >>  71 
                                                   >>  72         __u8    bDataInterface;
                                                   >>  73 } __attribute__ ((packed));
                                                   >>  74 
                                                   >>  75 /* "Abstract Control Management Descriptor" from CDC spec  5.2.3.3 */
                                                   >>  76 struct usb_cdc_acm_descriptor {
                                                   >>  77         __u8    bLength;
                                                   >>  78         __u8    bDescriptorType;
                                                   >>  79         __u8    bDescriptorSubType;
                                                   >>  80 
                                                   >>  81         __u8    bmCapabilities;
                                                   >>  82 } __attribute__ ((packed));
                                                   >>  83 
                                                   >>  84 /* capabilities from 5.2.3.3 */
                                                   >>  85 
                                                   >>  86 #define USB_CDC_COMM_FEATURE    0x01
                                                   >>  87 #define USB_CDC_CAP_LINE        0x02
                                                   >>  88 #define USB_CDC_CAP_BRK 0x04
                                                   >>  89 #define USB_CDC_CAP_NOTIFY      0x08
                                                   >>  90 
                                                   >>  91 /* "Union Functional Descriptor" from CDC spec 5.2.3.8 */
                                                   >>  92 struct usb_cdc_union_desc {
                                                   >>  93         __u8    bLength;
                                                   >>  94         __u8    bDescriptorType;
                                                   >>  95         __u8    bDescriptorSubType;
                                                   >>  96 
                                                   >>  97         __u8    bMasterInterface0;
                                                   >>  98         __u8    bSlaveInterface0;
                                                   >>  99         /* ... and there could be other slave interfaces */
                                                   >> 100 } __attribute__ ((packed));
                                                   >> 101 
                                                   >> 102 /* "Country Selection Functional Descriptor" from CDC spec 5.2.3.9 */
                                                   >> 103 struct usb_cdc_country_functional_desc {
                                                   >> 104         __u8    bLength;
                                                   >> 105         __u8    bDescriptorType;
                                                   >> 106         __u8    bDescriptorSubType;
                                                   >> 107 
                                                   >> 108         __u8    iCountryCodeRelDate;
                                                   >> 109         __le16  wCountyCode0;
                                                   >> 110         /* ... and there can be a lot of country codes */
                                                   >> 111 } __attribute__ ((packed));
                                                   >> 112 
                                                   >> 113 /* "Network Channel Terminal Functional Descriptor" from CDC spec 5.2.3.11 */
                                                   >> 114 struct usb_cdc_network_terminal_desc {
                                                   >> 115         __u8    bLength;
                                                   >> 116         __u8    bDescriptorType;
                                                   >> 117         __u8    bDescriptorSubType;
                                                   >> 118 
                                                   >> 119         __u8    bEntityId;
                                                   >> 120         __u8    iName;
                                                   >> 121         __u8    bChannelIndex;
                                                   >> 122         __u8    bPhysicalInterface;
                                                   >> 123 } __attribute__ ((packed));
                                                   >> 124 
                                                   >> 125 /* "Ethernet Networking Functional Descriptor" from CDC spec 5.2.3.16 */
                                                   >> 126 struct usb_cdc_ether_desc {
                                                   >> 127         __u8    bLength;
                                                   >> 128         __u8    bDescriptorType;
                                                   >> 129         __u8    bDescriptorSubType;
                                                   >> 130 
                                                   >> 131         __u8    iMACAddress;
                                                   >> 132         __le32  bmEthernetStatistics;
                                                   >> 133         __le16  wMaxSegmentSize;
                                                   >> 134         __le16  wNumberMCFilters;
                                                   >> 135         __u8    bNumberPowerFilters;
                                                   >> 136 } __attribute__ ((packed));
                                                   >> 137 
                                                   >> 138 /* "Telephone Control Model Functional Descriptor" from CDC WMC spec 6.3..3 */
                                                   >> 139 struct usb_cdc_dmm_desc {
                                                   >> 140         __u8    bFunctionLength;
                                                   >> 141         __u8    bDescriptorType;
                                                   >> 142         __u8    bDescriptorSubtype;
                                                   >> 143         __u16   bcdVersion;
                                                   >> 144         __le16  wMaxCommand;
                                                   >> 145 } __attribute__ ((packed));
                                                   >> 146 
                                                   >> 147 /* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */
                                                   >> 148 struct usb_cdc_mdlm_desc {
                                                   >> 149         __u8    bLength;
                                                   >> 150         __u8    bDescriptorType;
                                                   >> 151         __u8    bDescriptorSubType;
                                                   >> 152 
                                                   >> 153         __le16  bcdVersion;
                                                   >> 154         __u8    bGUID[16];
                                                   >> 155 } __attribute__ ((packed));
                                                   >> 156 
                                                   >> 157 /* "MDLM Detail Functional Descriptor" from CDC WMC spec 6.7.2.4 */
                                                   >> 158 struct usb_cdc_mdlm_detail_desc {
                                                   >> 159         __u8    bLength;
                                                   >> 160         __u8    bDescriptorType;
                                                   >> 161         __u8    bDescriptorSubType;
                                                   >> 162 
                                                   >> 163         /* type is associated with mdlm_desc.bGUID */
                                                   >> 164         __u8    bGuidDescriptorType;
                                                   >> 165         __u8    bDetailData[0];
                                                   >> 166 } __attribute__ ((packed));
                                                   >> 167 
                                                   >> 168 /* "OBEX Control Model Functional Descriptor" */
                                                   >> 169 struct usb_cdc_obex_desc {
                                                   >> 170         __u8    bLength;
                                                   >> 171         __u8    bDescriptorType;
                                                   >> 172         __u8    bDescriptorSubType;
                                                   >> 173 
                                                   >> 174         __le16  bcdVersion;
                                                   >> 175 } __attribute__ ((packed));
                                                   >> 176 
                                                   >> 177 /*-------------------------------------------------------------------------*/
 17                                                   178 
 18 /*                                                179 /*
 19  * parsing CDC headers                         !! 180  * Class-Specific Control Requests (6.2)
                                                   >> 181  *
                                                   >> 182  * section 3.6.2.1 table 4 has the ACM profile, for modems.
                                                   >> 183  * section 3.8.2 table 10 has the ethernet profile.
                                                   >> 184  *
                                                   >> 185  * Microsoft's RNDIS stack for Ethernet is a vendor-specific CDC ACM variant,
                                                   >> 186  * heavily dependent on the encapsulated (proprietary) command mechanism.
                                                   >> 187  */
                                                   >> 188 
                                                   >> 189 #define USB_CDC_SEND_ENCAPSULATED_COMMAND       0x00
                                                   >> 190 #define USB_CDC_GET_ENCAPSULATED_RESPONSE       0x01
                                                   >> 191 #define USB_CDC_REQ_SET_LINE_CODING             0x20
                                                   >> 192 #define USB_CDC_REQ_GET_LINE_CODING             0x21
                                                   >> 193 #define USB_CDC_REQ_SET_CONTROL_LINE_STATE      0x22
                                                   >> 194 #define USB_CDC_REQ_SEND_BREAK                  0x23
                                                   >> 195 #define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS  0x40
                                                   >> 196 #define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER  0x41
                                                   >> 197 #define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER  0x42
                                                   >> 198 #define USB_CDC_SET_ETHERNET_PACKET_FILTER      0x43
                                                   >> 199 #define USB_CDC_GET_ETHERNET_STATISTIC          0x44
                                                   >> 200 
                                                   >> 201 /* Line Coding Structure from CDC spec 6.2.13 */
                                                   >> 202 struct usb_cdc_line_coding {
                                                   >> 203         __le32  dwDTERate;
                                                   >> 204         __u8    bCharFormat;
                                                   >> 205 #define USB_CDC_1_STOP_BITS                     0
                                                   >> 206 #define USB_CDC_1_5_STOP_BITS                   1
                                                   >> 207 #define USB_CDC_2_STOP_BITS                     2
                                                   >> 208 
                                                   >> 209         __u8    bParityType;
                                                   >> 210 #define USB_CDC_NO_PARITY                       0
                                                   >> 211 #define USB_CDC_ODD_PARITY                      1
                                                   >> 212 #define USB_CDC_EVEN_PARITY                     2
                                                   >> 213 #define USB_CDC_MARK_PARITY                     3
                                                   >> 214 #define USB_CDC_SPACE_PARITY                    4
                                                   >> 215 
                                                   >> 216         __u8    bDataBits;
                                                   >> 217 } __attribute__ ((packed));
                                                   >> 218 
                                                   >> 219 /* table 62; bits in multicast filter */
                                                   >> 220 #define USB_CDC_PACKET_TYPE_PROMISCUOUS         (1 << 0)
                                                   >> 221 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST       (1 << 1) /* no filter */
                                                   >> 222 #define USB_CDC_PACKET_TYPE_DIRECTED            (1 << 2)
                                                   >> 223 #define USB_CDC_PACKET_TYPE_BROADCAST           (1 << 3)
                                                   >> 224 #define USB_CDC_PACKET_TYPE_MULTICAST           (1 << 4) /* filtered */
                                                   >> 225 
                                                   >> 226 
                                                   >> 227 /*-------------------------------------------------------------------------*/
                                                   >> 228 
                                                   >> 229 /*
                                                   >> 230  * Class-Specific Notifications (6.3) sent by interrupt transfers
                                                   >> 231  *
                                                   >> 232  * section 3.8.2 table 11 of the CDC spec lists Ethernet notifications
                                                   >> 233  * section 3.6.2.1 table 5 specifies ACM notifications, accepted by RNDIS
                                                   >> 234  * RNDIS also defines its own bit-incompatible notifications
 20  */                                               235  */
 21                                                   236 
 22 struct usb_cdc_parsed_header {                 !! 237 #define USB_CDC_NOTIFY_NETWORK_CONNECTION       0x00
 23         struct usb_cdc_union_desc *usb_cdc_uni !! 238 #define USB_CDC_NOTIFY_RESPONSE_AVAILABLE       0x01
 24         struct usb_cdc_header_desc *usb_cdc_he !! 239 #define USB_CDC_NOTIFY_SERIAL_STATE             0x20
 25                                                !! 240 #define USB_CDC_NOTIFY_SPEED_CHANGE             0x2a
 26         struct usb_cdc_call_mgmt_descriptor *u !! 241 
 27         struct usb_cdc_acm_descriptor *usb_cdc !! 242 struct usb_cdc_notification {
 28         struct usb_cdc_country_functional_desc !! 243         __u8    bmRequestType;
 29         struct usb_cdc_network_terminal_desc * !! 244         __u8    bNotificationType;
 30         struct usb_cdc_ether_desc *usb_cdc_eth !! 245         __le16  wValue;
 31         struct usb_cdc_dmm_desc *usb_cdc_dmm_d !! 246         __le16  wIndex;
 32         struct usb_cdc_mdlm_desc *usb_cdc_mdlm !! 247         __le16  wLength;
 33         struct usb_cdc_mdlm_detail_desc *usb_c !! 248 } __attribute__ ((packed));
 34         struct usb_cdc_obex_desc *usb_cdc_obex << 
 35         struct usb_cdc_ncm_desc *usb_cdc_ncm_d << 
 36         struct usb_cdc_mbim_desc *usb_cdc_mbim << 
 37         struct usb_cdc_mbim_extended_desc *usb << 
 38                                                << 
 39         bool phonet_magic_present;             << 
 40 };                                             << 
 41                                                << 
 42 struct usb_interface;                          << 
 43 int cdc_parse_cdc_header(struct usb_cdc_parsed << 
 44                                 struct usb_int << 
 45                                 u8 *buffer,    << 
 46                                 int buflen);   << 
 47                                                   249 
 48 #endif /* __LINUX_USB_CDC_H */                    250 #endif /* __LINUX_USB_CDC_H */
 49                                                   251 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php