[edk2-devel] [PATCH 2/2] MdeModulePkg: UsbRndis: get rid of magic values
Mike Maslenkin
mike.maslenkin at gmail.com
Sat Aug 26 01:58:00 UTC 2023
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 at ami.com>
Cc: Rebecca Cran <rebecca at bsdio.com>
Signed-off-by: Mike Maslenkin <mike.maslenkin at gmail.com>
---
.../Bus/Usb/UsbNetwork/UsbRndis/UsbRndis.c | 42 +++++++++----------
.../Include/Protocol/UsbEthernetProtocol.h | 4 ++
2 files changed, 25 insertions(+), 21 deletions(-)
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 4cc2cee1167d..f65674c91ba9 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
--
2.32.0 (Apple Git-132)
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108041): https://edk2.groups.io/g/devel/message/108041
Mute This Topic: https://groups.io/mt/100968488/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list