All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Peter Senna Tschudin <peter.senna@gmail.com>
Cc: <balbi@ti.com>, <stern@rowland.harvard.edu>,
	<sergei.shtylyov@cogentembedded.com>, <standby24x7@gmail.com>,
	<pmladek@suse.cz>, <linux-usb@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 10/14] RFC: usb/host/fotg210: Add function scan_frame_queue()
Date: Fri, 2 Oct 2015 12:35:00 -0500	[thread overview]
Message-ID: <20151002173500.GU5552@saruman.tx.rr.com> (raw)
In-Reply-To: <1442847678-7970-11-git-send-email-peter.senna@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3292 bytes --]

On Mon, Sep 21, 2015 at 05:01:14PM +0200, Peter Senna Tschudin wrote:
> checkpatch complains about too many leading tabs because the if
> statement starts after 6 tabs:
> 
> scan_iosoc() -> for() -> while() -> switch() -> if() -> for() -> if()
> 
> There is also a goto statement going backwards in case of failure. This
> patch creates a new inline function named scan_frame_queue() containing
> the last 4 nesting levels, and removes the need of backwards goto,
> making the code easier to read. After the patch it becomes:
> 
> scan_iosoc() -> for() -> while() -> scan_frame_queue()
> 
> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
> ---
>  drivers/usb/host/fotg210-hcd.c | 142 ++++++++++++++++++++++-------------------
>  1 file changed, 76 insertions(+), 66 deletions(-)
> 
> diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c
> index 13cca41..e60a239 100644
> --- a/drivers/usb/host/fotg210-hcd.c
> +++ b/drivers/usb/host/fotg210-hcd.c
> @@ -4645,13 +4645,81 @@ done:
>  	return status;
>  }
>  
> -/*-------------------------------------------------------------------------*/
> +static inline int scan_frame_queue(struct fotg210_hcd *fotg210, unsigned frame,
> +				   unsigned now_frame, bool live)
> +{
> +	unsigned uf;
> +	bool modified;
> +	union fotg210_shadow q, *q_p;
> +	__hc32 type, *hw_p;
> +
> +	/* scan each element in frame's queue for completions */
> +	q_p = &fotg210->pshadow[frame];
> +	hw_p = &fotg210->periodic[frame];
> +	q.ptr = q_p->ptr;
> +	type = Q_NEXT_TYPE(fotg210, *hw_p);
> +	modified = false;
> +
> +	while (q.ptr != NULL) {

while (q.ptr) is enough

> +		switch (hc32_to_cpu(fotg210, type)) {
> +		case Q_TYPE_ITD:
> +			/* If this ITD is still active, leave it for

comment style

> +			 * later processing ... check the next entry.
> +			 * No need to check for activity unless the
> +			 * frame is current.
> +			 */
> +			if (frame == now_frame && live) {
> +				rmb();
> +				for (uf = 0; uf < 8; uf++) {
> +					if (q.itd->hw_transaction[uf] &
> +						    ITD_ACTIVE(fotg210))
> +						break;
> +				}
> +				if (uf < 8) {
> +					q_p = &q.itd->itd_next;
> +					hw_p = &q.itd->hw_next;
> +					type = Q_NEXT_TYPE(fotg210,
> +						q.itd->hw_next);
> +					q = *q_p;
> +					break;
> +				}
> +			}
> +
> +			/* Take finished ITDs out of the schedule

comment style

> +			 * and process them:  recycle, maybe report
> +			 * URB completion.  HC won't cache the
> +			 * pointer for much longer, if at all.
> +			 */
> +			*q_p = q.itd->itd_next;
> +			*hw_p = q.itd->hw_next;
> +			type = Q_NEXT_TYPE(fotg210, q.itd->hw_next);
> +			wmb();
> +			modified = itd_complete(fotg210, q.itd);
> +			q = *q_p;
> +			break;
> +		default:
> +			fotg210_dbg(fotg210, "corrupt type %d frame %d shadow %p\n",
> +				type, frame, q.ptr);
> +			/* FALL THROUGH */
> +		case Q_TYPE_QH:
> +		case Q_TYPE_FSTN:
> +			/* End of the iTDs and siTDs */
> +			q.ptr = NULL;
> +			break;
> +		}
> +
> +		/* assume completion callbacks modify the queue */
> +		if (unlikely(modified && fotg210->isoc_count > 0))
> +			return -1;

can't you add a proper error code here ?

other than these, patch looks good.

-- 
balbi

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2015-10-02 17:35 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-07 14:47 similar files: fusbh200-hcd.c and fotg210-hcd.c Peter Senna Tschudin
2015-09-08 15:52 ` Felipe Balbi
2015-09-12 13:14   ` Peter Senna Tschudin
2015-09-14 15:01     ` Felipe Balbi
2015-09-14 17:50       ` Peter Senna Tschudin
2015-09-15 14:33         ` Felipe Balbi
2015-09-15 16:41           ` Peter Senna Tschudin
2015-09-15 16:50             ` Felipe Balbi
2015-09-21 15:01               ` [PATCH 00/14] RFC: Consolidation: FUSB200 and FOTG210 Peter Senna Tschudin
2015-09-21 15:01                 ` [PATCH 01/14] RFC: usb/host/fotg210: Fix coding style issues Peter Senna Tschudin
2015-10-02 17:29                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 02/14] RFC: usb/host/fotg210: remove KERN_WARNING from pr_info Peter Senna Tschudin
2015-09-21 18:54                   ` Sergei Shtylyov
2015-10-02 17:30                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 03/14] RFC: usb/host/fotg210: Remove useless else statement Peter Senna Tschudin
2015-10-02 17:30                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 04/14] RFC: usb/host/fotg210: Remove NULL checks dma_pool_destroy Peter Senna Tschudin
2015-10-02 17:30                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 05/14] RFC: usb/host/fotg210: change kmalloc by kmalloc_array Peter Senna Tschudin
2015-09-21 18:56                   ` Sergei Shtylyov
2015-10-02 17:30                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 06/14] RFC: usb/host/fotg210: replace msleep by usleep_range Peter Senna Tschudin
2015-10-02 17:31                   ` Felipe Balbi
2015-10-02 17:52                     ` Alan Stern
2015-10-04  9:58                       ` Peter Senna Tschudin
2015-10-04 15:20                         ` Alan Stern
2015-09-21 15:01                 ` [PATCH 07/14] RFC: usb/host/fotg210: Remove a macro from snprintf Peter Senna Tschudin
2015-10-02 17:31                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 08/14] RFC: usb/host/fotg210: convert macro to inline function Peter Senna Tschudin
2015-10-02 17:32                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 09/14] RFC: usb/host/fotg210: Add function: output_buf_tds_dir() Peter Senna Tschudin
2015-09-21 19:15                   ` Sergei Shtylyov
2015-10-02 17:32                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 10/14] RFC: usb/host/fotg210: Add function scan_frame_queue() Peter Senna Tschudin
2015-10-02 17:35                   ` Felipe Balbi [this message]
2015-09-21 15:01                 ` [PATCH 11/14] RFC: usb/host: Rename fotg210-hcd to faraday-hcd Peter Senna Tschudin
2015-10-02 17:35                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 12/14] RFC: usb/host/faraday-hcd: Replace fotg210 by fhcd2xx Peter Senna Tschudin
2015-10-02 17:36                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 13/14] RFC: usb/host/faraday-hcd: Move #defines outside struct Peter Senna Tschudin
2015-10-02 17:37                   ` Felipe Balbi
2015-09-21 15:01                 ` [PATCH 14/14] RFC: usb/host/faraday-hcd: Import FUSBH200 parameters Peter Senna Tschudin
2015-10-02 17:38                   ` Felipe Balbi
2015-10-02 11:18                 ` [PATCH] usb-host: Remove fusbh200 driver Peter Senna Tschudin
2015-10-02 17:39                   ` Felipe Balbi
2015-10-03  9:56                     ` Peter Senna Tschudin
2015-10-03 21:21                       ` Felipe Balbi
2015-10-05  0:25                         ` John Feng-Hsin Chiang(江峰興)
2015-10-12 21:22                 ` [PATCH 0/9] usb/host/fotg210: code style and warning fixes Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 1/9] usb/host/fotg210: Fix coding style issues Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 2/9] usb/host/fotg210: remove KERN_WARNING from pr_warn Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 3/9] usb/host/fotg210: Remove useless else statement Peter Senna Tschudin
2015-10-12 22:06                     ` Joe Perches
2015-10-17 19:28                       ` [PATCH 3/9 V2] usb/host/fotg210: Remove return statement inside if Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 4/9] usb/host/fotg210: Remove NULL checks dma_pool_destroy Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 5/9] usb/host/fotg210: change kmalloc by kmalloc_array Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 6/9] usb/host/fotg210: replace msleep by usleep_range Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 7/9] usb/host/fotg210: convert macro to inline function Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 8/9] usb/host/fotg210: Add function: output_buf_tds_dir() Peter Senna Tschudin
2015-10-12 21:22                   ` [PATCH 9/9] usb/host/fotg210: Add function scan_frame_queue() Peter Senna Tschudin
2015-09-25 13:04               ` similar files: fusbh200-hcd.c and fotg210-hcd.c Peter Senna Tschudin

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=20151002173500.GU5552@saruman.tx.rr.com \
    --to=balbi@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=peter.senna@gmail.com \
    --cc=pmladek@suse.cz \
    --cc=sergei.shtylyov@cogentembedded.com \
    --cc=standby24x7@gmail.com \
    --cc=stern@rowland.harvard.edu \
    /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.