usb: dwc3: gadget: improve ep_queue's error reporting
authorFelipe Balbi <balbi@ti.com>
Wed, 16 Sep 2015 15:40:07 +0000 (10:40 -0500)
committerFelipe Balbi <balbi@ti.com>
Sun, 27 Sep 2015 15:54:31 +0000 (10:54 -0500)
We shouldn't return -EBUSY, that's used only internally
when the core still has transfers in flight on a given
endpoint.

Also, combine the error reporting so that we don't have
to duplicate it.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/gadget.c

index 13ed16a96e37b7588943955ecf5ce34cfddb6624..201e1234244715d1c6f2e453a32773290be49956 100644 (file)
@@ -1080,10 +1080,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
        if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) &&
                        !(dep->flags & DWC3_EP_BUSY)) {
                ret = __dwc3_gadget_kick_transfer(dep, 0, true);
-               if (ret && ret != -EBUSY)
-                       dev_dbg(dwc->dev, "%s: failed to kick transfers\n",
-                                       dep->name);
-               return ret;
+               goto out;
        }
 
        /*
@@ -1113,14 +1110,10 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
                }
 
                ret = __dwc3_gadget_kick_transfer(dep, 0, true);
-               if (ret && ret != -EBUSY)
-                       dev_dbg(dwc->dev, "%s: failed to kick transfers\n",
-                                       dep->name);
-
                if (!ret)
                        dep->flags &= ~DWC3_EP_PENDING_REQUEST;
 
-               return ret;
+               goto out;
        }
 
        /*
@@ -1134,10 +1127,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
                WARN_ON_ONCE(!dep->resource_index);
                ret = __dwc3_gadget_kick_transfer(dep, dep->resource_index,
                                false);
-               if (ret && ret != -EBUSY)
-                       dev_dbg(dwc->dev, "%s: failed to kick transfers\n",
-                                       dep->name);
-               return ret;
+               goto out;
        }
 
        /*
@@ -1145,14 +1135,17 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
         * right away, otherwise host will not know we have streams to be
         * handled.
         */
-       if (dep->stream_capable) {
+       if (dep->stream_capable)
                ret = __dwc3_gadget_kick_transfer(dep, 0, true);
-               if (ret && ret != -EBUSY)
-                       dev_dbg(dwc->dev, "%s: failed to kick transfers\n",
-                                       dep->name);
-       }
 
-       return 0;
+out:
+       if (ret && ret != -EBUSY)
+               dev_dbg(dwc->dev, "%s: failed to kick transfers\n",
+                               dep->name);
+       if (ret == -EBUSY)
+               ret = 0;
+
+       return ret;
 }
 
 static int dwc3_gadget_ep_queue(struct usb_ep *ep, struct usb_request *request,