xhci: Refactor endpoint limit checking.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 2 Sep 2011 18:05:43 +0000 (11:05 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Sep 2011 22:52:53 +0000 (15:52 -0700)
Move the code to check whether we've reached the host controller's limit
on the number of endpoints out of the two conditional statements, to
remove duplicate code.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci.c

index fcc5821a27f33b98a374fff6e279b97e78adaccf..7da3b139c8dd0f921db009594a70f4c5ed246abd 100644 (file)
@@ -1765,17 +1765,22 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci,
 
        spin_lock_irqsave(&xhci->lock, flags);
        virt_dev = xhci->devs[udev->slot_id];
-       if (command) {
+
+       if (command)
                in_ctx = command->in_ctx;
-               if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
-                               xhci_reserve_host_resources(xhci, in_ctx)) {
-                       spin_unlock_irqrestore(&xhci->lock, flags);
-                       xhci_warn(xhci, "Not enough host resources, "
-                                       "active endpoint contexts = %u\n",
-                                       xhci->num_active_eps);
-                       return -ENOMEM;
-               }
+       else
+               in_ctx = virt_dev->in_ctx;
 
+       if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
+                       xhci_reserve_host_resources(xhci, in_ctx)) {
+               spin_unlock_irqrestore(&xhci->lock, flags);
+               xhci_warn(xhci, "Not enough host resources, "
+                               "active endpoint contexts = %u\n",
+                               xhci->num_active_eps);
+               return -ENOMEM;
+       }
+
+       if (command) {
                cmd_completion = command->completion;
                cmd_status = &command->status;
                command->command_trb = xhci->cmd_ring->enqueue;
@@ -1789,15 +1794,6 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci,
 
                list_add_tail(&command->cmd_list, &virt_dev->cmd_list);
        } else {
-               in_ctx = virt_dev->in_ctx;
-               if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
-                               xhci_reserve_host_resources(xhci, in_ctx)) {
-                       spin_unlock_irqrestore(&xhci->lock, flags);
-                       xhci_warn(xhci, "Not enough host resources, "
-                                       "active endpoint contexts = %u\n",
-                                       xhci->num_active_eps);
-                       return -ENOMEM;
-               }
                cmd_completion = &virt_dev->cmd_completion;
                cmd_status = &virt_dev->cmd_status;
        }