On 11/10/23 06:22, Ranbir Singh wrote: > 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; > }
Reviewed-by: Laszlo Ersek <ler...@redhat.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111167): https://edk2.groups.io/g/devel/message/111167 Mute This Topic: https://groups.io/mt/102502056/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-