From: Ranbir Singh <ranbir.sin...@dell.com> The functions XhcInitializeEndpointContext and XhcInitializeEndpointContext64 has a switch-case code in which the case USB_ENDPOINT_CONTROL: falls through to default:
While this may be intentional, it may not be evident to any general code reader/developer or static analyis tool why there is no break in between. Merge the USB_ENDPOINT_CONTROL and default using conditional debug print. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4221 Cc: Ray Ni <ray...@intel.com> Signed-off-by: Ranbir Singh <rsi...@ventanamicro.com> --- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 33 +++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c index 05528a478baf..00b3a13a95bb 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -2825,6 +2825,7 @@ XhcInitializeEndpointContext ( UINTN NumEp; UINTN EpIndex; UINT8 EpAddr; + UINT8 EpType; UINT8 Direction; UINT8 Dci; UINT8 MaxDci; @@ -2871,7 +2872,8 @@ XhcInitializeEndpointContext ( InputContext->EP[Dci-1].MaxBurstSize = 0x0; } - switch (EpDesc->Attributes & USB_ENDPOINT_TYPE_MASK) { + EpType = EpDesc->Attributes & USB_ENDPOINT_TYPE_MASK; + switch (EpType) { case USB_ENDPOINT_BULK: if (Direction == EfiUsbDataIn) { InputContext->EP[Dci-1].CErr = 3; @@ -2974,13 +2976,13 @@ XhcInitializeEndpointContext ( break; - case USB_ENDPOINT_CONTROL: - // - // Do not support control transfer now. - // - DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext: Unsupport Control EP found, Transfer ring is not allocated.\n")); default: - DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext: Unknown EP found, Transfer ring is not allocated.\n")); + DEBUG (( + DEBUG_INFO, + "%a: %a found, Transfer ring is not allocated.\n", + __func__, + (EpType == USB_ENDPOINT_CONTROL ? "Unsupported Control EP" : "Unknown EP") + )); EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); continue; } @@ -3028,6 +3030,7 @@ XhcInitializeEndpointContext64 ( UINTN NumEp; UINTN EpIndex; UINT8 EpAddr; + UINT8 EpType; UINT8 Direction; UINT8 Dci; UINT8 MaxDci; @@ -3074,7 +3077,8 @@ XhcInitializeEndpointContext64 ( InputContext->EP[Dci-1].MaxBurstSize = 0x0; } - switch (EpDesc->Attributes & USB_ENDPOINT_TYPE_MASK) { + EpType = EpDesc->Attributes & USB_ENDPOINT_TYPE_MASK; + switch (EpType) { case USB_ENDPOINT_BULK: if (Direction == EfiUsbDataIn) { InputContext->EP[Dci-1].CErr = 3; @@ -3177,13 +3181,14 @@ XhcInitializeEndpointContext64 ( break; - case USB_ENDPOINT_CONTROL: - // - // Do not support control transfer now. - // - DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext64: Unsupport Control EP found, Transfer ring is not allocated.\n")); default: - DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext64: Unknown EP found, Transfer ring is not allocated.\n")); + DEBUG (( + DEBUG_INFO, + "%a: %a found, Transfer ring is not allocated.\n", + __func__, + ((EpType == USB_ENDPOINT_CONTROL) ? "Unsupported Control EP" : "Unknown EP") + )); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); continue; } -- 2.34.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111013): https://edk2.groups.io/g/devel/message/111013 Mute This Topic: https://groups.io/mt/102502056/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-