LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, balbi@ti.com
Subject: Re: [PATCH] usb: gadget: fsl_udc_core: remove mapped flag
Date: Wed, 5 Sep 2012 15:36:40 +0300	[thread overview]
Message-ID: <20120905123639.GD19591@arwen.pp.htv.fi> (raw)
In-Reply-To: <1346779499-6085-1-git-send-email-enrico.scholz@sigma-chemnitz.de>

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

Hi,

On Tue, Sep 04, 2012 at 07:24:59PM +0200, Enrico Scholz wrote:
> The 'mapped' flag in 'struct fsl_req' flag is redundant with checking
> for 'req.dma != DMA_ADDR_INVALID' and it was also set to a wrong value

you should not be using DMA_ADDR_INVALID anymore. Use the generic
map/unmap routines from udc-core.c

> (see 2nd hunk of patch).
> 
> Replacing it in the way described above saves 60 bytes:
> 
>   function                                     old     new   delta
>   fsl_udc_irq                                 2952    2940     -12
>   ep0_prime_status                             380     368     -12
>   done                                         448     432     -16
>   fsl_ep_queue                                 668     648     -20
> 
> and has same (or less) runtime costs like evaluating 'req->mapped'.
> 
> Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
> ---
>  drivers/usb/gadget/fsl_udc_core.c | 10 ++--------
>  drivers/usb/gadget/fsl_usb2_udc.h |  1 -
>  2 files changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
> index 55c4a61..1282a11 100644
> --- a/drivers/usb/gadget/fsl_udc_core.c
> +++ b/drivers/usb/gadget/fsl_udc_core.c
> @@ -195,14 +195,13 @@ static void done(struct fsl_ep *ep, struct fsl_req *req, int status)
>  		dma_pool_free(udc->td_pool, curr_td, curr_td->td_dma);
>  	}
>  
> -	if (req->mapped) {
> +	if (req->req.dma != DMA_ADDR_INVALID) {
>  		dma_unmap_single(ep->udc->gadget.dev.parent,
>  			req->req.dma, req->req.length,
>  			ep_is_in(ep)
>  				? DMA_TO_DEVICE
>  				: DMA_FROM_DEVICE);
>  		req->req.dma = DMA_ADDR_INVALID;
> -		req->mapped = 0;
>  	} else
>  		dma_sync_single_for_cpu(ep->udc->gadget.dev.parent,
>  			req->req.dma, req->req.length,
> @@ -915,15 +914,12 @@ fsl_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  					req->req.length, ep_is_in(ep)
>  						? DMA_TO_DEVICE
>  						: DMA_FROM_DEVICE);
> -		req->mapped = 1;
> -	} else {
> +	} else
>  		dma_sync_single_for_device(ep->udc->gadget.dev.parent,
>  					req->req.dma, req->req.length,
>  					ep_is_in(ep)
>  						? DMA_TO_DEVICE
>  						: DMA_FROM_DEVICE);
> -		req->mapped = 0;
> -	}
>  
>  	req->req.status = -EINPROGRESS;
>  	req->req.actual = 0;
> @@ -1306,7 +1302,6 @@ static int ep0_prime_status(struct fsl_udc *udc, int direction)
>  	req->req.dma = dma_map_single(ep->udc->gadget.dev.parent,
>  			req->req.buf, req->req.length,
>  			ep_is_in(ep) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
> -	req->mapped = 1;
>  
>  	if (fsl_req_to_dtd(req, GFP_ATOMIC) == 0)
>  		fsl_queue_td(ep, req);
> @@ -1389,7 +1384,6 @@ static void ch9getstatus(struct fsl_udc *udc, u8 request_type, u16 value,
>  	req->req.dma = dma_map_single(ep->udc->gadget.dev.parent,
>  				req->req.buf, req->req.length,
>  				ep_is_in(ep) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
> -	req->mapped = 1;
>  
>  	/* prime the data phase */
>  	if ((fsl_req_to_dtd(req, GFP_ATOMIC) == 0))
> diff --git a/drivers/usb/gadget/fsl_usb2_udc.h b/drivers/usb/gadget/fsl_usb2_udc.h
> index fbd77ba..9aab166 100644
> --- a/drivers/usb/gadget/fsl_usb2_udc.h
> +++ b/drivers/usb/gadget/fsl_usb2_udc.h
> @@ -436,7 +436,6 @@ struct fsl_req {
>  	/* ep_queue() func will add
>  	   a request->queue into a udc_ep->queue 'd tail */
>  	struct fsl_ep *ep;
> -	unsigned mapped:1;
>  
>  	struct ep_td_struct *head, *tail;	/* For dTD List
>  						   cpu endian Virtual addr */
> -- 
> 1.7.11.4
> 

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

      parent reply	other threads:[~2012-09-05 12:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-04 17:24 [PATCH] usb: gadget: fsl_udc_core: remove mapped flag Enrico Scholz
2012-09-05  2:17 ` Chen Peter-B29397
2012-09-06 14:32   ` Enrico Scholz
2012-09-06 14:32     ` Felipe Balbi
2012-09-05 12:31 ` Sergei Shtylyov
2012-09-05 12:36 ` Felipe Balbi [this message]

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=20120905123639.GD19591@arwen.pp.htv.fi \
    --to=balbi@ti.com \
    --cc=enrico.scholz@sigma-chemnitz.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox