Re: [PATCH] xHCI: Remove duplicate functions

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

 



On Fri, Oct 28, 2011 at 05:05:58PM +0800, Andiry Xu wrote:
> There're two static xhci_urb_to_transfer_ring() implementations in xhci.c
> and xhci-ring.c, and they do exactly the same things.
> 
> Remove one of them to get rid of duplicate codes.

NAK.  There are the same functions in two separate files for performance
reasons.  This function is used very often, and allowing it to be static
lets the compiler optimize it.

Sarah Sharp


> Signed-off-by: Andiry Xu <andiry.xu@xxxxxxx>
> ---
>  drivers/usb/host/xhci-ring.c |    2 +-
>  drivers/usb/host/xhci.c      |   41 -----------------------------------------
>  drivers/usb/host/xhci.h      |    2 ++
>  3 files changed, 3 insertions(+), 42 deletions(-)
> 
> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
> index e4b7f00..c36b4e6 100644
> --- a/drivers/usb/host/xhci-ring.c
> +++ b/drivers/usb/host/xhci-ring.c
> @@ -419,7 +419,7 @@ static struct xhci_ring *xhci_triad_to_transfer_ring(struct xhci_hcd *xhci,
>   * If the endpoint supports streams, boundary check the URB's stream ID.
>   * If the endpoint doesn't support streams, return the singular endpoint ring.
>   */
> -static struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci,
> +struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci,
>  		struct urb *urb)
>  {
>  	return xhci_triad_to_transfer_ring(xhci, urb->dev->slot_id,
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 1ff95a0..8f73b28 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -1210,47 +1210,6 @@ free_priv:
>  	return ret;
>  }
>  
> -/* Get the right ring for the given URB.
> - * If the endpoint supports streams, boundary check the URB's stream ID.
> - * If the endpoint doesn't support streams, return the singular endpoint ring.
> - */
> -static struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci,
> -		struct urb *urb)
> -{
> -	unsigned int slot_id;
> -	unsigned int ep_index;
> -	unsigned int stream_id;
> -	struct xhci_virt_ep *ep;
> -
> -	slot_id = urb->dev->slot_id;
> -	ep_index = xhci_get_endpoint_index(&urb->ep->desc);
> -	stream_id = urb->stream_id;
> -	ep = &xhci->devs[slot_id]->eps[ep_index];
> -	/* Common case: no streams */
> -	if (!(ep->ep_state & EP_HAS_STREAMS))
> -		return ep->ring;
> -
> -	if (stream_id == 0) {
> -		xhci_warn(xhci,
> -				"WARN: Slot ID %u, ep index %u has streams, "
> -				"but URB has no stream ID.\n",
> -				slot_id, ep_index);
> -		return NULL;
> -	}
> -
> -	if (stream_id < ep->stream_info->num_streams)
> -		return ep->stream_info->stream_rings[stream_id];
> -
> -	xhci_warn(xhci,
> -			"WARN: Slot ID %u, ep index %u has "
> -			"stream IDs 1 to %u allocated, "
> -			"but stream ID %u is requested.\n",
> -			slot_id, ep_index,
> -			ep->stream_info->num_streams - 1,
> -			stream_id);
> -	return NULL;
> -}
> -
>  /*
>   * Remove the URB's TD from the endpoint ring.  This may cause the HC to stop
>   * USB transfers, potentially stopping in the middle of a TRB buffer.  The HC
> diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
> index 3c8fbd2..86c1ad6 100644
> --- a/drivers/usb/host/xhci.h
> +++ b/drivers/usb/host/xhci.h
> @@ -1743,6 +1743,8 @@ void xhci_queue_config_ep_quirk(struct xhci_hcd *xhci,
>  void xhci_stop_endpoint_command_watchdog(unsigned long arg);
>  void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id,
>  		unsigned int ep_index, unsigned int stream_id);
> +struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci,
> +		struct urb *urb);
>  
>  /* xHCI roothub code */
>  void xhci_set_link_state(struct xhci_hcd *xhci, __le32 __iomem **port_array,
> -- 
> 1.7.4.1
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

  Powered by Linux