diff mbox series

[v3,9/9] usb: rework usb_maxpacket() using usb_pipe_endpoint()

Message ID 20220316161935.2049-10-mailhol.vincent@wanadoo.fr (mailing list archive)
State New, archived
Headers show
Series usb: rework usb_maxpacket() and remove its third argument | expand

Commit Message

Vincent Mailhol March 16, 2022, 4:19 p.m. UTC
Rework the body of usb_maxpacket() in order not to reinvent the wheel
and just rely on the usb_pipe_endpoint() helper function instead.

Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
---
 include/linux/usb.h | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

Comments

Alan Stern March 16, 2022, 5:17 p.m. UTC | #1
On Thu, Mar 17, 2022 at 01:19:35AM +0900, Vincent Mailhol wrote:
> Rework the body of usb_maxpacket() in order not to reinvent the wheel
> and just rely on the usb_pipe_endpoint() helper function instead.
> 
> Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> ---
>  include/linux/usb.h | 14 +-------------
>  1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/include/linux/usb.h b/include/linux/usb.h
> index 8127782aa7a1..653d34ff0999 100644
> --- a/include/linux/usb.h
> +++ b/include/linux/usb.h
> @@ -1971,19 +1971,7 @@ usb_pipe_endpoint(struct usb_device *dev, unsigned int pipe)
>  
>  static inline u16 usb_maxpacket(struct usb_device *udev, int pipe)
>  {
> -	struct usb_host_endpoint	*ep;
> -	unsigned			epnum = usb_pipeendpoint(pipe);
> -
> -	if (usb_pipeout(pipe))
> -		ep = udev->ep_out[epnum];
> -	else
> -		ep = udev->ep_in[epnum];
> -
> -	if (!ep)
> -		return 0;
> -
> -	/* NOTE:  only 0x07ff bits are for packet size... */
> -	return usb_endpoint_maxp(&ep->desc);
> +	return usb_endpoint_maxp(&usb_pipe_endpoint(udev, pipe)->desc);

The original code was careful to handle the case where ep was a NULL 
pointer.  What will your routine do if usb_pipe_endpoint(udev, pipe) 
returns NULL?

Alan Stern

>  }
>  
>  /* translate USB error codes to codes user space understands */
> -- 
> 2.34.1
>
Vincent Mailhol March 16, 2022, 11:26 p.m. UTC | #2
On Thu. 17 Mar 2022 at 02:17, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Thu, Mar 17, 2022 at 01:19:35AM +0900, Vincent Mailhol wrote:
> > Rework the body of usb_maxpacket() in order not to reinvent the wheel
> > and just rely on the usb_pipe_endpoint() helper function instead.
> >
> > Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> > ---
> >  include/linux/usb.h | 14 +-------------
> >  1 file changed, 1 insertion(+), 13 deletions(-)
> >
> > diff --git a/include/linux/usb.h b/include/linux/usb.h
> > index 8127782aa7a1..653d34ff0999 100644
> > --- a/include/linux/usb.h
> > +++ b/include/linux/usb.h
> > @@ -1971,19 +1971,7 @@ usb_pipe_endpoint(struct usb_device *dev, unsigned int pipe)
> >
> >  static inline u16 usb_maxpacket(struct usb_device *udev, int pipe)
> >  {
> > -     struct usb_host_endpoint        *ep;
> > -     unsigned                        epnum = usb_pipeendpoint(pipe);
> > -
> > -     if (usb_pipeout(pipe))
> > -             ep = udev->ep_out[epnum];
> > -     else
> > -             ep = udev->ep_in[epnum];
> > -
> > -     if (!ep)
> > -             return 0;
> > -
> > -     /* NOTE:  only 0x07ff bits are for packet size... */
> > -     return usb_endpoint_maxp(&ep->desc);
> > +     return usb_endpoint_maxp(&usb_pipe_endpoint(udev, pipe)->desc);
>
> The original code was careful to handle the case where ep was a NULL
> pointer.  What will your routine do if usb_pipe_endpoint(udev, pipe)
> returns NULL?

Sorry, you are absolutely right. Will send a v4.

Thank you!


Yours sincerely,
Vincent Maihol
diff mbox series

Patch

diff --git a/include/linux/usb.h b/include/linux/usb.h
index 8127782aa7a1..653d34ff0999 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -1971,19 +1971,7 @@  usb_pipe_endpoint(struct usb_device *dev, unsigned int pipe)
 
 static inline u16 usb_maxpacket(struct usb_device *udev, int pipe)
 {
-	struct usb_host_endpoint	*ep;
-	unsigned			epnum = usb_pipeendpoint(pipe);
-
-	if (usb_pipeout(pipe))
-		ep = udev->ep_out[epnum];
-	else
-		ep = udev->ep_in[epnum];
-
-	if (!ep)
-		return 0;
-
-	/* NOTE:  only 0x07ff bits are for packet size... */
-	return usb_endpoint_maxp(&ep->desc);
+	return usb_endpoint_maxp(&usb_pipe_endpoint(udev, pipe)->desc);
 }
 
 /* translate USB error codes to codes user space understands */