[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.1311051039250.1360-100000@iolanthe.rowland.org>
Date: Tue, 5 Nov 2013 10:41:46 -0500 (EST)
From: Alan Stern <stern@...land.harvard.edu>
To: David Cohen <david.a.cohen@...ux.intel.com>
cc: balbi@...com, <gregkh@...uxfoundation.org>,
<linux-usb@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v4 2/4] usb: gadget: add quirk_ep_out_aligned_size field
to struct usb_gadget
On Tue, 5 Nov 2013, David Cohen wrote:
> >> +static inline size_t usb_ep_align_maxpacketsize(struct usb_ep *ep, size_t len)
> >> +{
> >> + int aligned;
> >> +
> >> + if (ep->desc->bmAttributes & USB_ENDPOINT_XFER_INT)
> >> + /*
> >> + * Interrupt eps don't need max packet size to be power of 2,
> >> + * so can't use cheap IS_ALIGNED() macro.
> >> + */
> >> + aligned = !(len % ep->desc->wMaxPacketSize);
> >> + else
> >> + aligned = IS_ALIGNED(len, ep->desc->wMaxPacketSize);
> >
> > This isn't on a hot path, and I suspect that the extra "if" will
> > require nearly as much time as you save by not doing the division. You
> > might as well always use the % operation.
>
> Perhaps if I use unlikely() on 'if' condition instead?
> Anyway I'll double check the costs of if + IS_ALIGNED vs modulo.
You're missing the point. You and I (not to mention anybody who ever
reads this code in the future) have already wasted more time talking
about it and trying to understand it than you will ever save by using
IS_ALIGNED.
The difference to the computer is minimal at best. Make things easier
for the programmers.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists