diff --git a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndis.c b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndis.c index 056b0ff0fd8e..cc8e076c0a12 100644 --- a/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndis.c +++ b/MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis/UsbRndis.c @@ -40,15 +40,15 @@ IsSupportedDevice ( } // Check specific device/RNDIS and CDC-DATA - if (((InterfaceDescriptor.InterfaceClass == 0x2) && - (InterfaceDescriptor.InterfaceSubClass == 0x2) && - (InterfaceDescriptor.InterfaceProtocol == 0xFF)) || \ - ((InterfaceDescriptor.InterfaceClass == 0xEF) && - (InterfaceDescriptor.InterfaceSubClass == 0x4) && - (InterfaceDescriptor.InterfaceProtocol == 0x1)) || \ - ((InterfaceDescriptor.InterfaceClass == 0xA) && - (InterfaceDescriptor.InterfaceSubClass == 0x0) && - (InterfaceDescriptor.InterfaceProtocol == 0x00)) + if (((InterfaceDescriptor.InterfaceClass == USB_CDC_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_CDC_ACM_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_VENDOR_PROTOCOL)) || \ + ((InterfaceDescriptor.InterfaceClass == USB_MISC_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_RNDIS_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_RNDIS_ETHERNET_PROTOCOL)) || \ + ((InterfaceDescriptor.InterfaceClass == USB_CDC_DATA_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_CDC_DATA_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_NO_CLASS_PROTOCOL)) ) { return TRUE; @@ -79,12 +79,12 @@ IsRndisInterface ( } // Check for specific device/RNDIS and CDC-DATA - if (((InterfaceDescriptor.InterfaceClass == 0x2) && - (InterfaceDescriptor.InterfaceSubClass == 0x2) && - (InterfaceDescriptor.InterfaceProtocol == 0xFF)) || \ - ((InterfaceDescriptor.InterfaceClass == 0xEF) && - (InterfaceDescriptor.InterfaceSubClass == 0x4) && - (InterfaceDescriptor.InterfaceProtocol == 0x1)) + if (((InterfaceDescriptor.InterfaceClass == USB_CDC_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_CDC_ACM_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_VENDOR_PROTOCOL)) || \ + ((InterfaceDescriptor.InterfaceClass == USB_MISC_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_RNDIS_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_RNDIS_ETHERNET_PROTOCOL)) ) { return TRUE; @@ -155,9 +155,9 @@ IsUsbCdcData ( } // Check for CDC-DATA - if ((InterfaceDescriptor.InterfaceClass == 0xA) && - (InterfaceDescriptor.InterfaceSubClass == 0x0) && - (InterfaceDescriptor.InterfaceProtocol == 0x0)) + if ((InterfaceDescriptor.InterfaceClass == USB_CDC_DATA_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_CDC_DATA_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_NO_CLASS_PROTOCOL)) { return TRUE; } @@ -188,9 +188,9 @@ IsUsbRndis ( } // Check for Rndis - if ((InterfaceDescriptor.InterfaceClass == 0x2) && - (InterfaceDescriptor.InterfaceSubClass == 0x2) && - (InterfaceDescriptor.InterfaceProtocol == 0xFF)) + if ((InterfaceDescriptor.InterfaceClass == USB_CDC_CLASS) && + (InterfaceDescriptor.InterfaceSubClass == USB_CDC_ACM_SUBCLASS) && + (InterfaceDescriptor.InterfaceProtocol == USB_VENDOR_PROTOCOL)) { return TRUE; } diff --git a/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h b/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h index 7b9896ab3cc6..250de0b59110 100644 --- a/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h +++ b/MdeModulePkg/Include/Protocol/UsbEthernetProtocol.h @@ -24,6 +24,10 @@ typedef struct _EDKII_USB_ETHERNET_PROTOCOL EDKII_USB_ETHERNET_PROTOCOL; #define USB_NCM_NTB_PROTOCOL 0x01 #define USB_VENDOR_PROTOCOL 0xFF +#define USB_MISC_CLASS 0xEF +#define USB_RNDIS_SUBCLASS 0x04 +#define USB_RNDIS_ETHERNET_PROTOCOL 0x01 + // Type Values for the DescriptorType Field #define CS_INTERFACE 0x24 #define CS_ENDPOINT 0x25