MdeModulePkg: UsbRndis: get rid of magic values

Replace magic values used for checking Base Class, SubClass and Protocol
fields of USB Interface Descriptor.
Add definitions for Base Class EFh (Miscellaneous) and RNDIS subclass.
These definitions were taken from https://www.usb.org/defined-class-codes

Cc: Richard Ho <richardho@ami.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com>
This commit is contained in:
Mike Maslenkin
2023-08-26 04:58:00 +03:00
committed by mergify[bot]
parent e07948255c
commit 03d6569f70
2 changed files with 25 additions and 21 deletions

View File

@@ -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;
}