All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sshtylyov@mvista.com>
To: balbi@ti.com
Cc: Sergei Shtylyov <sshtylyov@mvista.com>,
	Ming Lei <tom.leiming@gmail.com>,
	"greg@kroah.com" <greg@kroah.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	David Brownell <dbrownell@users.sourceforge.net>,
	"Gadiyar, Anand" <gadiyar@ti.com>,
	Mike Frysinger <vapier@gentoo.org>
Subject: Re: [RESEND/PATCH 5/6] USB: musb-gadget: complete request only if data is transfered over
Date: Tue, 14 Sep 2010 14:46:22 +0400	[thread overview]
Message-ID: <4C8F527E.40408@ru.mvista.com> (raw)
In-Reply-To: <20100914065604.GD2601@legolas.emea.dhcp.ti.com>

Hello.

On 14-09-2010 10:56, Felipe Balbi wrote:

>> Oops, I've been too fast and haven't realized that the check done here
>> _is_ actually wrong. It causes ZLP send to trigger too fast in the DMA
>> case. So please fix this patch. Felipe, please drop it for now.

> patch is not even touching that part of the code,

    Yeah, and that's the problem.

> not even
> reading/writing TXCSR_TXPKTRDY bit care to explain please.

    If a DMA interrupt comes when the whole transfer is not yet complete (and 
other Ming Lei's patches are making this possible), it will pass due to the 
'ís_dma' condition above the patched code:

                 if (is_dma || request->actual == request->length) {

and then it will hit the code sending the final ZLP (above this patched code too):

                         /*
                          * First, maybe a terminating short packet. Some DMA
                          * engines might handle this by themselves.
                          */
                         if ((request->zero && request->length
                                 && request->length % musb_ep->packet_sz == 0)
#ifdef CONFIG_USB_INVENTRA_DMA
                                 || (is_dma && (!dma->desired_mode ||
                                         (request->actual &
                                                 (musb_ep->packet_sz - 1))))
#endif
                         ) {

before the transfer is complete while it should only be hit when and only when 
the whole transfer is complete. The current code doesn't look correct as well 
though, all due to this 'ís_dma' condition. Surely this needs fixing.

WBR, Sergei

WARNING: multiple messages have this Message-ID (diff)
From: Sergei Shtylyov <sshtylyov-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
To: balbi-l0cyMroinI0@public.gmane.org
Cc: Sergei Shtylyov
	<sshtylyov-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>,
	Ming Lei <tom.leiming-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org"
	<greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>,
	"linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	David Brownell
	<dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	"Gadiyar, Anand" <gadiyar-l0cyMroinI0@public.gmane.org>,
	Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
Subject: Re: [RESEND/PATCH 5/6] USB: musb-gadget: complete request only if data is transfered over
Date: Tue, 14 Sep 2010 14:46:22 +0400	[thread overview]
Message-ID: <4C8F527E.40408@ru.mvista.com> (raw)
In-Reply-To: <20100914065604.GD2601-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org>

Hello.

On 14-09-2010 10:56, Felipe Balbi wrote:

>> Oops, I've been too fast and haven't realized that the check done here
>> _is_ actually wrong. It causes ZLP send to trigger too fast in the DMA
>> case. So please fix this patch. Felipe, please drop it for now.

> patch is not even touching that part of the code,

    Yeah, and that's the problem.

> not even
> reading/writing TXCSR_TXPKTRDY bit care to explain please.

    If a DMA interrupt comes when the whole transfer is not yet complete (and 
other Ming Lei's patches are making this possible), it will pass due to the 
'ís_dma' condition above the patched code:

                 if (is_dma || request->actual == request->length) {

and then it will hit the code sending the final ZLP (above this patched code too):

                         /*
                          * First, maybe a terminating short packet. Some DMA
                          * engines might handle this by themselves.
                          */
                         if ((request->zero && request->length
                                 && request->length % musb_ep->packet_sz == 0)
#ifdef CONFIG_USB_INVENTRA_DMA
                                 || (is_dma && (!dma->desired_mode ||
                                         (request->actual &
                                                 (musb_ep->packet_sz - 1))))
#endif
                         ) {

before the transfer is complete while it should only be hit when and only when 
the whole transfer is complete. The current code doesn't look correct as well 
though, all due to this 'ís_dma' condition. Surely this needs fixing.

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2010-09-14 10:48 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-07 15:23 [RESEND/PATCH 0/6] USB: musb-gadget: bug fix tom.leiming
2010-09-07 15:23 ` tom.leiming-Re5JQEeQqe8AvxtiuMwx3w
2010-09-07 15:23 ` [RESEND/PATCH 1/6] USB: musb-gadget: fix kernel panic if using out ep with FIFO_TXRX style(v1) tom.leiming
2010-09-07 15:23 ` [RESEND/PATCH 2/6] USB: musb-gadget: fix bulk IN infinite hangs in double buffer case tom.leiming
2010-09-07 15:23 ` [RESEND/PATCH 3/6] USB: musb-gadget: enable autoclear for OUT transfer in both DMA 0 and DMA 1 tom.leiming
2010-09-07 15:23 ` [RESEND/PATCH 4/6] USB: musb-gadget: fix DMA length for OUT transfer tom.leiming
2010-09-07 15:23   ` tom.leiming-Re5JQEeQqe8AvxtiuMwx3w
2010-09-07 15:23 ` [RESEND/PATCH 5/6] USB: musb-gadget: complete request only if data is transfered over tom.leiming
2010-09-07 15:23   ` tom.leiming-Re5JQEeQqe8AvxtiuMwx3w
2010-09-13 12:27   ` Sergei Shtylyov
2010-09-13 14:34     ` Ming Lei
2010-09-13 14:34       ` Ming Lei
2010-09-13 15:51       ` Sergei Shtylyov
2010-09-13 16:26         ` Sergei Shtylyov
2010-09-14  6:56           ` Felipe Balbi
2010-09-14 10:46             ` Sergei Shtylyov [this message]
2010-09-14 10:46               ` Sergei Shtylyov
2010-09-14 10:54               ` Felipe Balbi
2010-09-14 10:54                 ` Felipe Balbi
2010-09-14 17:51                 ` Sergei Shtylyov
2010-09-14 17:51                   ` Sergei Shtylyov
2010-09-15  6:53                   ` Felipe Balbi
2010-09-15  9:56                     ` Ming Lei
2010-09-15 10:01                     ` Sergei Shtylyov
2010-09-15 10:05                       ` Felipe Balbi
2010-09-15 10:08                         ` Sergei Shtylyov
2010-09-15 10:14                           ` Ming Lei
2010-09-15 10:18                             ` Sergei Shtylyov
2010-09-15 10:22                               ` Felipe Balbi
2010-09-15 10:22                                 ` Felipe Balbi
2010-09-15 10:27                                 ` Sergei Shtylyov
2010-09-15 10:27                                   ` Sergei Shtylyov
2010-09-15 10:31                                   ` Felipe Balbi
2010-09-15 10:41                                     ` Sergei Shtylyov
2010-09-15 10:52                                       ` Felipe Balbi
2010-09-15 13:02                                         ` Sergei Shtylyov
2010-09-15 10:37                                   ` Ming Lei
2010-09-07 15:23 ` [RESEND/PATCH 6/6] USB: musb-gadget: fix dma length in txstate tom.leiming
2010-09-07 15:23   ` tom.leiming-Re5JQEeQqe8AvxtiuMwx3w
2010-09-14 17:43   ` Sergei Shtylyov
2010-09-15  7:09     ` Felipe Balbi
2010-09-08  2:19 ` [RESEND/PATCH 0/6] USB: musb-gadget: bug fix Greg KH
2010-09-08  4:32   ` Ming Lei
2010-09-08  4:32     ` Ming Lei
2010-09-08  6:18     ` Greg KH
2010-09-08  6:18       ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C8F527E.40408@ru.mvista.com \
    --to=sshtylyov@mvista.com \
    --cc=balbi@ti.com \
    --cc=dbrownell@users.sourceforge.net \
    --cc=gadiyar@ti.com \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=tom.leiming@gmail.com \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.