musb: process control messages after roothub accepted it
authorCliff Cai <cliff.cai@analog.com>
Thu, 21 Apr 2011 16:42:10 +0000 (12:42 -0400)
committerRemy Bohmer <linux@bohmer.net>
Sat, 25 Jun 2011 07:53:10 +0000 (09:53 +0200)
When dealing with non-multipoint devices, if the software root hub code
accepted the message, then we still need to process it normally.  So only
return quickly when the root hub skipped the message or is otherwise in
an error state.

Signed-off-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
drivers/usb/musb/musb_hcd.c

index 8b0c61d642662609057c1a87dbf98850e0ee0888..974bb311cca473b0b19e58b140f962df669d2d05 100644 (file)
@@ -853,8 +853,11 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
 
 #ifdef MUSB_NO_MULTIPOINT
        /* Control message is for the HUB? */
-       if (devnum == rh_devnum)
-               return musb_submit_rh_msg(dev, pipe, buffer, len, setup);
+       if (devnum == rh_devnum) {
+               int stat = musb_submit_rh_msg(dev, pipe, buffer, len, setup);
+               if (stat)
+                       return stat;
+       }
 #endif
 
        /* select control endpoint */