RE: About TRB_TO_EP_INDEX() macro using

Du, ChangbinX
2013-08-06T08:59:37Z

> On Mon, Aug 05, 2013 at 08:07:25AM +0000, Du, ChangbinX wrote:
> > Recently when I check xHCI code, find that some functions try to get EP index
> > from a Command Completion Event TRB via TRB_TO_EP_INDEX() macro.
> >
> > This is totally wrong. The macro definition is:
> >
> > #define TRB_TO_EP_INDEX(p) ((((p) & (0x1f << 16)) >> 16) - 1)
> >
> > TRB_TO_EP_INDEX only applies to Transfer Event TRB. But for Command
> > Completion Event TRB, there is no Endpoint ID field. So, we cannot directly
> > get EP index from these TRBs, but we can find it by the TRB Pointer.
> >
> > Here list two functions for you to check:
> > handle_stopped_endpoint()
> > handle_reset_ep_completion()
>
> Care to send a patch showing how you would change this if it is
> incorrect?
>
> thanks,
>
> greg k-h
> --

Hello, Greg k-h. I am not very sure about this issue. If this is true, kernel will panic when
invoking above functions. I want someone help to confirm if I miss something. If it's really
a bug, I will work out a patch to fix it.