> -----Original Message----- > From: Anbazhagan, Baraneedharan [mailto:anbazha...@hp.com] > Sent: Wednesday, June 24, 2015 2:11 PM > To: Eric Wittmayer; edk2-devel@lists.sourceforge.net > Subject: RE: [edk2] XHCI question > > > -----Original Message----- > > From: Eric Wittmayer [mailto:e...@frescologic.com] > > Sent: Wednesday, June 24, 2015 12:13 AM > > To: edk2-devel@lists.sourceforge.net; Anbazhagan, Baraneedharan > > Subject: RE: [edk2] XHCI question > > > > > Date: Tue, 23 Jun 2015 23:16:05 +0000 > > > From: "Anbazhagan, Baraneedharan" <anbazha...@hp.com> > > > Subject: [edk2] XHCI question > > > To: "edk2-devel@lists.sourceforge.net" > > > <edk2-devel@lists.sourceforge.net>, "Tian, Feng" > > > <feng.t...@intel.com> > > > Message-ID: > > > <8530272280D33D4095B8F02BA1B57BAC409FB260@G9W0345.americ > > > as.hpqcorp.net> > > > > > > Content-Type: text/plain; charset="us-ascii" > > > > > > Whether XhcCheckUrbResult returns correct error status in case of > failure? > > > XhcCheckUrbResult function header indicates it should report URB > > > transfer state - Urb->Finished (seems to align with EhciDxe) but the > > > implementation is trying to return EFI_STATUS and it doesn't get > > > updated based on EvtTrb- > > > >Completecode. With a failing drive, XhcExecTransfer returns > > > >EFI_SUCCESS > > in > > > case of transaction error. > > > > > Looking at the source code for XhcCheckUrbResult, if you pass in a URB > > Pointer, the > > Urb->Result is updated with the completion code from the event. > > Look for the switch on EvtTrb->Completecode. In the case where Urb is > > passed in, CheckedUrb == Urb. > > EFI_STATUS that is returned indicates if the function actually checked > > any new events. > > > > Regards, > > Eric > > > If return value of XhcCheckUrbResult is a status of whether it checked any > new events or not, then XhcBulkTransfer needs to be updated to return > correct failure status to the caller instead of checking for EFI_USB_ERR_STALL > and EFI_USB_NOERROR alone . >
Error status is returned to the caller in TransferResult ( the last parameter to XhcBulkTransfer ). The check you are talking about is used to recover the endpoint to a running state if it stalled. Currently if there is a transaction error, the caller will find EFI_USB_ERR_TIMEOUT in TransferResult when XhcBulkTransfer completes. What do you think should be done differently? Regards, Eric ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel