Re: [PATCH] usb: musb_gadget: rm unnecessary ep check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Mon, Jul 11, 2011 at 05:44:23PM +0800, Bob Liu wrote:
> On Mon, Jul 11, 2011 at 5:31 PM, Felipe Balbi <balbi@xxxxxx> wrote:
> > Hi,
> >
> > On Mon, Jul 11, 2011 at 05:18:18PM +0800, Bob Liu wrote:
> >> g_zero test during loopback mode will fail like this:
> >> zero gadget: can't loop ep6out to ep5in: -22
> >>
> >> The reason is this check "if (request->ep != musb_ep)" in musb_gadget,
> >> this patch rm it.
> >>
> >> Signed-off-by: Bob Liu <lliubbo@xxxxxxxxx>
> >> ---
> >>  drivers/usb/musb/musb_gadget.c |    3 ---
> >>  1 files changed, 0 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
> >> index b67a062..7318a20 100644
> >> --- a/drivers/usb/musb/musb_gadget.c
> >> +++ b/drivers/usb/musb/musb_gadget.c
> >> @@ -1289,9 +1289,6 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req,
> >>       request = to_musb_request(req);
> >>       request->musb = musb;
> >>
> >> -     if (request->ep != musb_ep)
> >> -             return -EINVAL;
> >
> > I believe the problem is somewhere else. If request->ep != musb_ep we
> > would be queueing a request to the wrong endpoint. Is g_zero simply
> 
> Oh, I found after this patch
> ./testusb -t5  -c 2 -s 256 -D /proc/bus/usb/002/019
> will hang although
> ./testusb -t5  -c 1 -s 256 -D /proc/bus/usb/002/019
> can pass.

yeah, there must be something else going on.

> > re-using a request it just received from ep6out and queueing it straight
> > away to ep5in ?? I mean.. I'm not sure we should allow:
> 
> I think so, see loopback_complete in f_loopback.c
> 200                 if (ep == loop->out_ep) {
> 201                         /* loop this OUT packet back IN to the host */
> 202                         req->zero = (req->actual < req->length);
> 203                         req->length = req->actual;
> 204                         status = usb_ep_queue(loop->in_ep, req, GFP_ATOMIC);
> 205                         if (status == 0)
> 206                                 return;
> 207
> 208                         /* "should never get here" */
> 209                         ERROR(cdev, "can't loop %s to %s: %d\n",
> 210                                 ep->name, loop->in_ep->name,
> 211                                 status);
> 212                 }
> 
> BTW: Would you please do g_zero testing on your platform to check
> whether this error
> "zero gadget: can't loop xxx to xxx: -22" also happen.

I can only get to that next week. I'm on business trip actually
debugging some other stuff ;-)

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux