> -----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

Reply via email to