Main Page Modules Alphabetical List Data Structures File List Data Fields Globals # IxUSBRNDIS.h Go to the documentation of this file.
    00001
    00046 #ifndef IXUSBRNDIS_H
    00047 #define IXUSBRNDIS_H
    00048
    00049 #include <IxTypes.h>
    00050 #include <usb.h>
    00051 #include <stdio.h>
    00052 #include <stdarg.h>
    00053
    00107 #ifndef __doxygen_HIDE
    00108
    00109 #define USB_COMMUCATION_DEVICE          (0x02)
    00110 #define USB_COMMUNICATION_INTERFACE     (0x02)
    00111 #define USB_ABSTRACT_CONTROL_MODEL      (0x02)
    00112 #define USB_VENDOR_SPECIFIC_PROTOCOL    (0xff)
    00113 #define USB_DATA_INTERFACE              (0x0a)
    00114
    00115 #define RNDIS_SEND_ENCAPSULATED_COMMAND (0x00)
    00116 #define RNDIS_GET_ENCAPSULATED_RESPONSE (0x01)
    00117
    00118 #define RNDIS_RESPONSE_AVAILABLE                   (0x01)
    00119 #define RNDIS_RESPONSE_AVAILABLE_NOTIFICATION_SIZE (2) /* words */
    00120
    00121 /* endpoint definitions for RNDIS usage */
    00122 #define RNDIS_NOTIFICATION_ENDPOINT (ENDPOINT_5) /* Interrupt IN */
    00123 #define RNDIS_DATA_IN_ENDPOINT      (ENDPOINT_1) /* Bulk IN */
    00124 #define RNDIS_DATA_OUT_ENDPOINT     (ENDPOINT_2) /* Bulk OUT */
    00125 #define RNDIS_CONTROL_ENDPOINT      (ENDPOINT_0) /* Control */
    00126
    00127 /* RNDIS messages */
    00128 #define RNDIS_INITIALIZE        (0x2)
    00129 #define RNDIS_HALT              (0x3)
    00130 #define RNDIS_QUERY             (0x4)
    00131 #define RNDIS_SET               (0x5)
    00132 #define RNDIS_RESET             (0x6)
    00133 #define RNDIS_INDICATE_STATUS   (0x7)
    00134 #define RNDIS_KEEPALIVE         (0x8)
    00135 #define RNDIS_COMPLETED         (0x80000000) /* this flag is ORed with the message ID to indicate completion */
    00136
    00137 /* RNDIS message component offsets (in word units!) */
    00138 #define RNDIS_MESSAGE_TYPE_OFFSET  (0)
    00139 #define RNDIS_REQUEST_ID_OFFSET    (2)
    00140 #define RNDIS_OID_OFFSET           (3)
    00141 #define RNDIS_BUFFER_LENGTH_OFFSET (4)
    00142 #define RNDIS_BUFFER_OFFSET_OFFSET (5)
    00143
    00144 /* RNDIS data packets */
    00145 #define RNDIS_DATA_OFFSET_OFFSET                        (2) /* entry offset */
    00146 #define RNDIS_DATA_LENGTH_OFFSET                        (3) /* entry offset */
    00147 #define RNDIS_DATA_PAYLOAD_BYTE_OFFSET(UINT32_pPacket)  (44)
    00148 #define RNDIS_DATA_PAYLOAD_BYTE_LENGTH(UINT32_pPacket)  ((UINT32_pPacket)[RNDIS_DATA_LENGTH_OFFSET])
    00149 #define RNDIS_DATA_PACKET_HEADER_SIZE                   (44) /* size of the RNDIS packet header, in bytes */
    00150 #define RNDIS_PACKET_MSG                                (0x1)
    00151 #define RNDIS_PAYLOAD_OFFSET                            (36)
    00152
    00153 /* RNDIS message response packet sizes */
    00154 #define RNDIS_INITIALIZE_COMPLETE_SIZE   (52)
    00155 #define RNDIS_QUERY_COMPLETE_HEADER_SIZE (24)
    00156 #define RNDIS_GENERIC_MSG_COMPLETE_SIZE  (16)
    00157
    00158 /* RNDIS responses */
    00159 #define RNDIS_NUMBER_OF_SUPPORTED_OIDS (26)
    00160 #define RNDIS_MAXIMUM_FRAME_SIZE       (1520)
    00161 #define RNDIS_MAXIMUM_TOTAL_SIZE       (1558)
    00162 #define RNDIS_USB_SPEED                (12000000)
    00163 #define RNDIS_LINK_SPEED               (RNDIS_USB_SPEED / 100) /* link speed in units of 100bps - USB speed is 12Mbps */
    00164 #define RNDIS_RECEIVE_BLOCK_SIZE       (1514)
    00165 #define RNDIS_TRANSMIT_BLOCK_SIZE      (64)
    00166 #define RNDIS_MAX_PACKETS_PER_TRANSFER (1)
    00167 #define RNDIS_MAX_HOST_PACKET_SIZE     (2048)
    00168 #define RNDIS_PACKET_ALIGNMENT         (1) /* aligment, in powers of 2 - unused for 1 packet transfers */
    00169
    00170 /* RNDIS status values */
    00171 #define RNDIS_STATUS_SUCCESS            (0)
    00172 #define RNDIS_STATUS_FAILURE            (0xc0000001)
    00173 #define RNDIS_STATUS_MEDIA_CONNECT      (0x4001000b)
    00174 #define RNDIS_STATUS_MEDIA_DISCONNECT   (0x4001000c)
    00175
    00176 /* RNDIS versions */
    00177 #define RNDIS_MAJOR_VERSION (1)
    00178 #define RNDIS_MINOR_VERSION (0)
    00179
    00180 /* RNDIS device flags */
    00181 #define RNDIS_DF_CONNECTIONLESS      (1)
    00182 #define RNDIS_DF_CONNECTION_ORIENTED (2)
    00183
    00184 /* RNDIS medium definitions */
    00185 #define RNDIS_MEDIUM_802_3 (0)
    00186
    00187
    00188 /* -------------------- Imported MS RNDIS Constants --------------------- */
    00189
    00190 /*  Required OIDs */
    00191 #define OID_GEN_SUPPORTED_LIST                  0x00010101
    00192 #define OID_GEN_HARDWARE_STATUS                 0x00010102
    00193 #define OID_GEN_MEDIA_SUPPORTED                 0x00010103
    00194 #define OID_GEN_MEDIA_IN_USE                    0x00010104
    00195 #define OID_GEN_MAXIMUM_LOOKAHEAD               0x00010105
    00196 #define OID_GEN_MAXIMUM_FRAME_SIZE              0x00010106
    00197 #define OID_GEN_LINK_SPEED                      0x00010107
    00198 #define OID_GEN_TRANSMIT_BUFFER_SPACE           0x00010108
    00199 #define OID_GEN_RECEIVE_BUFFER_SPACE            0x00010109
    00200 #define OID_GEN_TRANSMIT_BLOCK_SIZE             0x0001010A
    00201 #define OID_GEN_RECEIVE_BLOCK_SIZE              0x0001010B
    00202 #define OID_GEN_VENDOR_ID                       0x0001010C
    00203 #define OID_GEN_VENDOR_DESCRIPTION              0x0001010D
    00204 #define OID_GEN_CURRENT_PACKET_FILTER           0x0001010E
    00205 #define OID_GEN_CURRENT_LOOKAHEAD               0x0001010F
    00206 #define OID_GEN_DRIVER_VERSION                  0x00010110
    00207 #define OID_GEN_MAXIMUM_TOTAL_SIZE              0x00010111
    00208 #define OID_GEN_PROTOCOL_OPTIONS                0x00010112
    00209 #define OID_GEN_MAC_OPTIONS                     0x00010113
    00210 #define OID_GEN_MEDIA_CONNECT_STATUS            0x00010114
    00211 #define OID_GEN_MAXIMUM_SEND_PACKETS            0x00010115
    00212 #define OID_GEN_VENDOR_DRIVER_VERSION           0x00010116
    00213 #define OID_GEN_SUPPORTED_GUIDS                 0x00010117
    00214 #define OID_GEN_NETWORK_LAYER_ADDRESSES         0x00010118  // Set only
    00215 #define OID_GEN_TRANSPORT_HEADER_OFFSET         0x00010119  // Set only
    00216
    00217 /*  Optional OIDs */
    00218 #define OID_GEN_MEDIA_CAPABILITIES              0x00010201
    00219 #define OID_GEN_PHYSICAL_MEDIUM                 0x00010202
    00220
    00221 /*  Required statistics */
    00222 #define OID_GEN_XMIT_OK                         0x00020101
    00223 #define OID_GEN_RCV_OK                          0x00020102
    00224 #define OID_GEN_XMIT_ERROR                      0x00020103
    00225 #define OID_GEN_RCV_ERROR                       0x00020104
    00226 #define OID_GEN_RCV_NO_BUFFER                   0x00020105
    00227
    00228 /* 802.3 Objects (Ethernet) */
    00229 #define OID_802_3_PERMANENT_ADDRESS             0x01010101
    00230 #define OID_802_3_CURRENT_ADDRESS               0x01010102
    00231 #define OID_802_3_MULTICAST_LIST                0x01010103
    00232 #define OID_802_3_MAXIMUM_LIST_SIZE             0x01010104
    00233 #define OID_802_3_MAC_OPTIONS                   0x01010105
    00234
    00235 #define NDIS_802_3_MAC_OPTION_PRIORITY          0x00000001
    00236
    00237 #define OID_802_3_RCV_ERROR_ALIGNMENT           0x01020101
    00238 #define OID_802_3_XMIT_ONE_COLLISION            0x01020102
    00239 #define OID_802_3_XMIT_MORE_COLLISIONS          0x01020103
    00240
    00241 #define OID_802_3_XMIT_DEFERRED                 0x01020201
    00242 #define OID_802_3_XMIT_MAX_COLLISIONS           0x01020202
    00243 #define OID_802_3_RCV_OVERRUN                   0x01020203
    00244 #define OID_802_3_XMIT_UNDERRUN                 0x01020204
    00245 #define OID_802_3_XMIT_HEARTBEAT_FAILURE        0x01020205
    00246 #define OID_802_3_XMIT_TIMES_CRS_LOST           0x01020206
    00247 #define OID_802_3_XMIT_LATE_COLLISIONS          0x01020207
    00248
    00249 typedef enum _NDIS_HARDWARE_STATUS
    00250 {
    00251     NdisHardwareStatusReady,
    00252     NdisHardwareStatusInitializing,
    00253     NdisHardwareStatusReset,
    00254     NdisHardwareStatusClosing,
    00255     NdisHardwareStatusNotReady
    00256 } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
    00257
    00258 typedef enum _NDIS_MEDIA_STATE
    00259 {
    00260     NdisMediaStateConnected,
    00261     NdisMediaStateDisconnected
    00262 } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
    00263
    00264 /* Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/ OID_GEN_MEDIA_IN_USE). */
    00265 typedef enum _NDIS_MEDIUM
    00266 {
    00267     NdisMedium802_3,
    00268     NdisMedium802_5,
    00269     NdisMediumFddi,
    00270     NdisMediumWan,
    00271     NdisMediumLocalTalk,
    00272     NdisMediumDix,              /* defined for convenience, not a real medium */
    00273     NdisMediumArcnetRaw,
    00274     NdisMediumArcnet878_2,
    00275     NdisMediumAtm,
    00276     NdisMediumWirelessWan,
    00277     NdisMediumIrda,
    00278     NdisMediumBpc,
    00279     NdisMediumCoWan,
    00280     NdisMedium1394,
    00281     NdisMediumMax               /* Not a real medium, defined as an upper-bound */
    00282 } NDIS_MEDIUM, *PNDIS_MEDIUM;
    00283
    00284
    00285 /* Physical Medium Type definitions. Used with OID_GEN_PHYSICAL_MEDIUM. */
    00286 typedef enum _NDIS_PHYSICAL_MEDIUM
    00287 {
    00288     NdisPhysicalMediumReserved0,
    00289     NdisPhysicalMediumWirelessLan,
    00290     NdisPhysicalMediumCableModem,
    00291     NdisPhysicalMediumPhoneLine,
    00292     NdisPhysicalMediumPowerLine,
    00293     NdisPhysicalMediumDSL,      /* includes ADSL and UADSL (G.Lite) */
    00294     NdisPhysicalMediumMax       /* Not a real physical type, defined as an upper-bound */
    00295 } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
    00296
    00297
    00298 /*
    00299  * RNDIS layer state
    00300  */
    00301 typedef enum
    00302 {
    00303     RNDIS_HALTED = 0,       /* RNDIS layer state - Halted */
    00304     RNDIS_INITIALIZED,      /* RNDIS layer state - Initialized */
    00305     RNDIS_DATA_INITIALIZED  /* RNDIS layer state - Data Initialized */
    00306 } RndisLayerState;
    00307
    00308 /*
    00309  * Structure to maintain RNDIS layer statistics
    00310  */
    00311 typedef struct
    00312 {
    00313     UINT32 Rx;          /* Number of packets recieved */
    00314     UINT32 Tx;          /* Number of packets transmitted */
    00315     UINT32 RxNoBuf;     /* Number of packets recieved but no buffer */
    00316 } RndisLayerStats;
    00317
    00318 /*
    00319  * Structure to maintain RNDIS layer data information
    00320  */
    00321 typedef struct
    00322 {
    00323     UINT32 currentPacketFilter;     /* Current packet filter */
    00324     RndisLayerStats stats;      /* RNDIS layer state statistics */
    00325 } RndisLayerData;
    00326 /* Protocol types supported by ndis. These values need to be consistent
    00327  * with ADDRESS_TYPE_XXX defined in TDI.H
    00328  */
    00329
    00330
    00331 #define NDIS_PROTOCOL_ID_DEFAULT        0x00
    00332 #define NDIS_PROTOCOL_ID_TCP_IP         0x02
    00333 #define NDIS_PROTOCOL_ID_IPX            0x06
    00334 #define NDIS_PROTOCOL_ID_NBF            0x07
    00335 #define NDIS_PROTOCOL_ID_MAX            0x0F
    00336 #define NDIS_PROTOCOL_ID_MASK           0x0F
    00337
    00338 /* Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER). */
    00339
    00340 #define NDIS_PACKET_TYPE_DIRECTED 0x0001
    00341
    00342 #define NDIS_PACKET_TYPE_MULTICAST 0x0002
    00343
    00344 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x0004
    00345
    00346 #define NDIS_PACKET_TYPE_BROADCAST 0x0008
    00347
    00348 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x0010
    00349
    00350 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x0020
    00351
    00352 #define NDIS_PACKET_TYPE_SMT 0x0040
    00353
    00354 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x0080
    00355
    00356 #define NDIS_PACKET_TYPE_MAC_FRAME 0x8000
    00357
    00358 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x4000
    00359
    00360 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x2000
    00361
    00362 #define NDIS_PACKET_TYPE_GROUP 0x1000
    00363
    00364 /* ------------------------------------------------------------- */
    00365
    00366
    00367 /* macros */
    00368 #define WORD_COUNT(packet) (sizeof(packet) / sizeof((packet)[0]))
    00369
    00370 #define MIN(a, b) ((a) < (b) ? (a) : (b))
    00371
    00372 #define NUM_ELEM(vector) (sizeof (vector) / sizeof ((vector)[0]))
    00373
    00374 /*
    00375  * Ansi Incompatible; otherwise works fine
    00376  */
    00377 #if 0
    00378 #ifdef __vxworks
    00379 #define ENUM_VERBOSE_TRACE(_fmt_,vargs...) \
    00380     { \
    00381         char _buf_[1024]; \
    00382         if (sprintf(_buf_,(const char *)_fmt_,##vargs) > 0) { \
    00383             logMsg(_buf_,0,0,0,0,0,0); \
    00384         } \
    00385     }
    00386 #else
    00387 #define ENUM_VERBOSE_TRACE(_fmt_,vargs...) \
    00388     { \
    00389         char _buf_[1024]; \
    00390         if (printf(_buf_,(const char *)_fmt_,##vargs) > 0) { \
    00391         } \
    00392     }
    00393 #endif
    00394
    00395 #define RNDIS_VERBOSE_TRACE(_fmt_,vargs...) \
    00396     ENUM_VERBOSE_TRACE(_fmt_,##vargs)
    00397 #define ENUM_TRACE(_fmt_,vargs...) \
    00398     ENUM_VERBOSE_TRACE(_fmt_,##vargs)
    00399 #define RNDIS_TRACE(_fmt_,vargs...) \
    00400     ENUM_VERBOSE_TRACE(_fmt_,##vargs)
    00401
    00402 #endif /* #if 0 */
    00403
    00404 /*
    00405  * This block of code fails to inline due to variable # of arguments
    00406  */
    00407 #if 0
    00408 static __inline__ int
    00409 ENUM_VERBOSE_TRACE(char *_fmt_,...);
    00410
    00411 static __inline__ int
    00412 ENUM_VERBOSE_TRACE(char *_fmt_,...)
    00413 {
    00414     char _buf_[1024];
    00415     int retStatus = 0;
    00416     va_list vap;
    00417
    00418     va_start(vap, _fmt_);
    00419     retStatus = vsprintf(_buf_,_fmt_,vap);
    00420     if (retStatus > 0) {
    00421 #ifdef __vxworks
    00422         logMsg(_buf_,0,0,0,0,0,0);
    00423 #else
    00424         printf(_buf_);
    00425 #endif
    00426     }
    00427     va_end(vap);
    00428     return retStatus;
    00429 }
    00430 #endif
    00431
    00432 /*
    00433  * This block of code results in declared but not used warning
    00434  */
    00435 #if 0
    00436 static int
    00437 ENUM_VERBOSE_TRACE(char *_fmt_,...);
    00438
    00439 static int
    00440 ENUM_VERBOSE_TRACE(char *_fmt_,...)
    00441 {
    00442     char _buf_[1024];
    00443     int retStatus = 0;
    00444     va_list vap;
    00445
    00446     va_start(vap, _fmt_);
    00447     retStatus = vsprintf(_buf_,_fmt_,vap);
    00448     if (retStatus > 0) {
    00449 #ifdef __vxworks
    00450         logMsg(_buf_,0,0,0,0,0,0);
    00451 #else
    00452         printf(_buf_);
    00453 #endif
    00454     }
    00455     va_end(vap);
    00456     return retStatus;
    00457 }
    00458 #endif
    00459
    00460 /*
    00461  * This function is implemented in IxUSBRNDISEnumerator.c
    00462  */
    00463 extern int
    00464 enum_verbose_log_trace(char *_fmt_,...);
    00465
    00466 #define ENUM_VERBOSE_TRACE\
    00467     if(rndisEnumVerboseTrace) enum_verbose_log_trace
    00468 #define RNDIS_VERBOSE_TRACE \
    00469     if(rndisEnumVerboseTrace) ENUM_VERBOSE_TRACE
    00470 #define ENUM_TRACE \
    00471     if (rndisEnumTrace) ENUM_VERBOSE_TRACE
    00472 #define RNDIS_TRACE \
    00473     if (rndisEnumTrace) ENUM_VERBOSE_TRACE
    00474
    00475 /* debug logging */
    00476 #ifndef __vxworks
    00477 #undef  logMsg
    00478 #define logMsg if(0) printf
    00479 #endif
    00480
    00481 #define ERROR_TRACE logMsg
    00482
    00483 #if 0
    00484 #define ENUM_TRACE if (rndisEnumTrace) logMsg
    00485 #define ENUM_VERBOSE_TRACE if (rndisEnumVerboseTrace) logMsg
    00486 #endif
    00487
    00488 #if 0
    00489 #define ENUM_TRACE logMsg
    00490 #define ENUM_VERBOSE_TRACE if (0) logMsg
    00491 #define RNDIS_TRACE logMsg
    00492 #define RNDIS_VERBOSE_TRACE if (0) logMsg
    00493 #endif
    00494
    00495
    00496 #if 0
    00497 #define DUMP_ETHERNET_FRAME(mblk) { BOOL ipPacket; ixUSBRNDISEthernetHdrDump(IX_USB_MBLK_DATA(mblk), &ipPacket); }
    00498 #define DUMP_IP_FRAME(mblk)  { ixUSBRNDISIpHdrDump(IX_USB_MBLK_DATA(mblk); }
    00499 #else
    00500 #define DUMP_ETHERNET_FRAME(mblk) {  }
    00501 #define DUMP_IP_FRAME(mblk)  {  }
    00502 #endif
    00503
    00504 /* buffer abstraction */
    00505 #ifdef __vxworks
    00506 #include <IxOsBuffMgt.h>
    00507 #include <IxOsBuffPoolMgt.h>
    00508
    00509 /* RNDIS buffer abstraction layer */
    00510 #define RNDIS_BUF                           IX_USB_MBLK
    00511 #define RNDIS_BUF_LEN(buf)                  IX_USB_MBLK_LEN(buf)
    00512 #define RNDIS_BUF_DATA(buf)                 IX_USB_MBLK_DATA(buf)
    00513 #define RNDIS_SYS_ALIGN_BUF(buf, alignment) { IX_USB_MBLK_DATA(buf)  += alignment; }
    00514 #define RNDIS_SYS_ALLOC_BUF(len)            ixUSBBufferAlloc((size_t) len)
    00515 #define RNDIS_SYS_SET_BUF_LEN(buf, len)     { IX_USB_MBLK_LEN(buf) = IX_USB_MBLK_PKT_LEN(buf) = len; buf->mBlkHdr.mFlags |= M_PKTHDR; }
    00516 #define RNDIS_SYS_FREE(buf)                 { IX_USB_MBLK_FREE(buf); }
    00517 #else /* linux */
    00518 #define RNDIS_BUF                           struct sk_buff
    00519 #define RNDIS_BUF_LEN(buf)                  buf->len
    00520 #define RNDIS_BUF_DATA(buf)                 buf->data
    00521 #define RNDIS_SYS_ALIGN_BUF(buf, alignment) { skb_reserve(buf, alignment); }
    00522 #define RNDIS_SYS_ALLOC_BUF(len)            dev_alloc_skb(len)
    00523 #define RNDIS_SYS_SET_BUF_LEN(buf, len)     { skb_put(buf, len); }
    00524 #define RNDIS_SYS_FREE(buf)                 /* Linux END de-allocates */
    00525 #endif
    00526
    00527 #define RNDIS_FREE(buf)                     { IX_USB_MBLK_FREE(buf); }
    00528
    00529 #endif /* ndef __doxygen_HIDE */
    00530
    00531 /* prototypes */
    00532
    00546 PUBLIC IX_STATUS ixUSBRNDISSignalEncapsulatedCommand(void);
    00547
    00561 PUBLIC IX_STATUS ixUSBRNDISProcessEncapsulatedCommand(IX_USB_MBLK *);
    00562
    00575 PUBLIC IX_STATUS ixUSBRNDISProcessDataPacket(IX_USB_MBLK *);
    00576
    00589 PUBLIC IX_STATUS ixUSBRNDISLayerInit(void *pDrvCtrl);
    00590
    00603 PUBLIC IX_STATUS ixUSBRNDISInit(void);
    00604
    00616 PUBLIC void ixUSBRNDISUnload(void);
    00617
    00631 PUBLIC IX_USB_MBLK* ixUSBRNDISCreateMBuf(UINT8 *buffer, UINT32 len);
    00632
    00646 PUBLIC IX_STATUS ixUSBRNDISSendDataPacket(RNDIS_BUF *packet);
    00647
    00648 /* debug */
    00649
    00650 /*
    00651  * Function prototype for debuging purpose for dumping IP Header
    00652  */
    00653 void ixUSBRNDISIpHdrDump(const char * const mData);
    00654
    00655 const char *ixUSBRNDISIpProtoStrGet (const UINT8 ipProto);
    00656
    00657 const char *ixUSBRNDISEthernetTypeStrGet (const UINT16 etherType);
    00658
    00659 /*
    00660  * Function prototype for debuging purpose for dumping Ethernet Header
    00661  */
    00662 void ixUSBRNDISEthernetHdrDump(const char * const mData, BOOL *nonIpHdrDetected);
    00663
    00668 #endif /* IxUSBRNDIS_H */
Automatically generated from sources. © Intel Corp. 2003