aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/class/usbtmc.c8
-rw-r--r--drivers/usb/core/hub.c14
-rw-r--r--drivers/usb/core/port.c13
-rw-r--r--drivers/usb/core/quirks.c6
-rw-r--r--drivers/usb/host/ehci-sched.c13
-rw-r--r--drivers/usb/host/xhci-mem.c1
-rw-r--r--drivers/usb/host/xhci-plat.c2
-rw-r--r--drivers/usb/host/xhci.c8
-rw-r--r--drivers/usb/host/xhci.h1
-rw-r--r--drivers/usb/misc/adutux.c2
-rw-r--r--drivers/usb/serial/keyspan.c2
-rw-r--r--drivers/usb/serial/mos7720.c21
-rw-r--r--drivers/usb/serial/mos7840.c2
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c9
-rw-r--r--drivers/usb/serial/usb_wwan.c20
-rw-r--r--drivers/usb/wusbcore/wa-xfer.c9
16 files changed, 72 insertions, 59 deletions
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
index 60dd8918aeb9..66c4001306f0 100644
--- a/drivers/usb/class/usbtmc.c
+++ b/drivers/usb/class/usbtmc.c
@@ -1117,11 +1117,11 @@ static int usbtmc_probe(struct usb_interface *intf,
1117 /* Determine if it is a Rigol or not */ 1117 /* Determine if it is a Rigol or not */
1118 data->rigol_quirk = 0; 1118 data->rigol_quirk = 0;
1119 dev_dbg(&intf->dev, "Trying to find if device Vendor 0x%04X Product 0x%04X has the RIGOL quirk\n", 1119 dev_dbg(&intf->dev, "Trying to find if device Vendor 0x%04X Product 0x%04X has the RIGOL quirk\n",
1120 data->usb_dev->descriptor.idVendor, 1120 le16_to_cpu(data->usb_dev->descriptor.idVendor),
1121 data->usb_dev->descriptor.idProduct); 1121 le16_to_cpu(data->usb_dev->descriptor.idProduct));
1122 for(n = 0; usbtmc_id_quirk[n].idVendor > 0; n++) { 1122 for(n = 0; usbtmc_id_quirk[n].idVendor > 0; n++) {
1123 if ((usbtmc_id_quirk[n].idVendor == data->usb_dev->descriptor.idVendor) && 1123 if ((usbtmc_id_quirk[n].idVendor == le16_to_cpu(data->usb_dev->descriptor.idVendor)) &&
1124 (usbtmc_id_quirk[n].idProduct == data->usb_dev->descriptor.idProduct)) { 1124 (usbtmc_id_quirk[n].idProduct == le16_to_cpu(data->usb_dev->descriptor.idProduct))) {
1125 dev_dbg(&intf->dev, "Setting this device as having the RIGOL quirk\n"); 1125 dev_dbg(&intf->dev, "Setting this device as having the RIGOL quirk\n");
1126 data->rigol_quirk = 1; 1126 data->rigol_quirk = 1;
1127 break; 1127 break;
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 5d6d28a76e0a..175179eb17ee 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3054,19 +3054,9 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
3054 usb_set_device_state(udev, USB_STATE_SUSPENDED); 3054 usb_set_device_state(udev, USB_STATE_SUSPENDED);
3055 } 3055 }
3056 3056
3057 /*
3058 * Check whether current status meets the requirement of
3059 * usb port power off mechanism
3060 */
3061 if (status == 0 && !udev->do_remote_wakeup && udev->persist_enabled) { 3057 if (status == 0 && !udev->do_remote_wakeup && udev->persist_enabled) {
3062 enum pm_qos_flags_status pm_qos_stat; 3058 pm_runtime_put_sync(&port_dev->dev);
3063 3059 port_dev->did_runtime_put = true;
3064 pm_qos_stat = dev_pm_qos_flags(&port_dev->dev,
3065 PM_QOS_FLAG_NO_POWER_OFF);
3066 if (pm_qos_stat != PM_QOS_FLAGS_ALL) {
3067 pm_runtime_put_sync(&port_dev->dev);
3068 port_dev->did_runtime_put = true;
3069 }
3070 } 3060 }
3071 3061
3072 usb_mark_last_busy(hub->hdev); 3062 usb_mark_last_busy(hub->hdev);
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index d6b0fadf53e9..9909911665ce 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -89,22 +89,19 @@ static int usb_port_runtime_resume(struct device *dev)
89 retval = usb_hub_set_port_power(hdev, hub, port1, true); 89 retval = usb_hub_set_port_power(hdev, hub, port1, true);
90 if (port_dev->child && !retval) { 90 if (port_dev->child && !retval) {
91 /* 91 /*
92 * Wait for usb hub port to be reconnected in order to make 92 * Attempt to wait for usb hub port to be reconnected in order
93 * the resume procedure successful. 93 * to make the resume procedure successful. The device may have
94 * disconnected while the port was powered off, so ignore the
95 * return status.
94 */ 96 */
95 retval = hub_port_debounce_be_connected(hub, port1); 97 retval = hub_port_debounce_be_connected(hub, port1);
96 if (retval < 0) { 98 if (retval < 0)
97 dev_dbg(&port_dev->dev, "can't get reconnection after setting port power on, status %d\n", 99 dev_dbg(&port_dev->dev, "can't get reconnection after setting port power on, status %d\n",
98 retval); 100 retval);
99 goto out;
100 }
101 usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); 101 usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE);
102
103 /* Set return value to 0 if debounce successful */
104 retval = 0; 102 retval = 0;
105 } 103 }
106 104
107out:
108 clear_bit(port1, hub->busy_bits); 105 clear_bit(port1, hub->busy_bits);
109 usb_autopm_put_interface(intf); 106 usb_autopm_put_interface(intf);
110 return retval; 107 return retval;
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index a63598895077..5b44cd47da5b 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -78,6 +78,12 @@ static const struct usb_device_id usb_quirk_list[] = {
78 { USB_DEVICE(0x04d8, 0x000c), .driver_info = 78 { USB_DEVICE(0x04d8, 0x000c), .driver_info =
79 USB_QUIRK_CONFIG_INTF_STRINGS }, 79 USB_QUIRK_CONFIG_INTF_STRINGS },
80 80
81 /* CarrolTouch 4000U */
82 { USB_DEVICE(0x04e7, 0x0009), .driver_info = USB_QUIRK_RESET_RESUME },
83
84 /* CarrolTouch 4500U */
85 { USB_DEVICE(0x04e7, 0x0030), .driver_info = USB_QUIRK_RESET_RESUME },
86
81 /* Samsung Android phone modem - ID conflict with SPH-I500 */ 87 /* Samsung Android phone modem - ID conflict with SPH-I500 */
82 { USB_DEVICE(0x04e8, 0x6601), .driver_info = 88 { USB_DEVICE(0x04e8, 0x6601), .driver_info =
83 USB_QUIRK_CONFIG_INTF_STRINGS }, 89 USB_QUIRK_CONFIG_INTF_STRINGS },
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index 94388738a6f7..66310894ad97 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -1434,21 +1434,20 @@ iso_stream_schedule (
1434 1434
1435 /* Behind the scheduling threshold? */ 1435 /* Behind the scheduling threshold? */
1436 if (unlikely(start < next)) { 1436 if (unlikely(start < next)) {
1437 unsigned now2 = (now - base) & (mod - 1);
1437 1438
1438 /* USB_ISO_ASAP: Round up to the first available slot */ 1439 /* USB_ISO_ASAP: Round up to the first available slot */
1439 if (urb->transfer_flags & URB_ISO_ASAP) 1440 if (urb->transfer_flags & URB_ISO_ASAP)
1440 start += (next - start + period - 1) & -period; 1441 start += (next - start + period - 1) & -period;
1441 1442
1442 /* 1443 /*
1443 * Not ASAP: Use the next slot in the stream. If 1444 * Not ASAP: Use the next slot in the stream,
1444 * the entire URB falls before the threshold, fail. 1445 * no matter what.
1445 */ 1446 */
1446 else if (start + span - period < next) { 1447 else if (start + span - period < now2) {
1447 ehci_dbg(ehci, "iso urb late %p (%u+%u < %u)\n", 1448 ehci_dbg(ehci, "iso underrun %p (%u+%u < %u)\n",
1448 urb, start + base, 1449 urb, start + base,
1449 span - period, next + base); 1450 span - period, now2 + base);
1450 status = -EXDEV;
1451 goto fail;
1452 } 1451 }
1453 } 1452 }
1454 1453
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index b150360d1e78..53b972c2a09f 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -24,6 +24,7 @@
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/slab.h> 25#include <linux/slab.h>
26#include <linux/dmapool.h> 26#include <linux/dmapool.h>
27#include <linux/dma-mapping.h>
27 28
28#include "xhci.h" 29#include "xhci.h"
29#include "xhci-trace.h" 30#include "xhci-trace.h"
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index be5e70d2300c..d9c169f470d3 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -26,7 +26,7 @@ static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
26 * here that the generic code does not try to make a pci_dev from our 26 * here that the generic code does not try to make a pci_dev from our
27 * dev struct in order to setup MSI 27 * dev struct in order to setup MSI
28 */ 28 */
29 xhci->quirks |= XHCI_BROKEN_MSI; 29 xhci->quirks |= XHCI_PLAT;
30} 30}
31 31
32/* called during probe() after chip reset completes */ 32/* called during probe() after chip reset completes */
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 7299b591a341..ba0ec0a96481 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -27,6 +27,7 @@
27#include <linux/moduleparam.h> 27#include <linux/moduleparam.h>
28#include <linux/slab.h> 28#include <linux/slab.h>
29#include <linux/dmi.h> 29#include <linux/dmi.h>
30#include <linux/dma-mapping.h>
30 31
31#include "xhci.h" 32#include "xhci.h"
32#include "xhci-trace.h" 33#include "xhci-trace.h"
@@ -347,9 +348,14 @@ static void __maybe_unused xhci_msix_sync_irqs(struct xhci_hcd *xhci)
347static int xhci_try_enable_msi(struct usb_hcd *hcd) 348static int xhci_try_enable_msi(struct usb_hcd *hcd)
348{ 349{
349 struct xhci_hcd *xhci = hcd_to_xhci(hcd); 350 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
350 struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); 351 struct pci_dev *pdev;
351 int ret; 352 int ret;
352 353
354 /* The xhci platform device has set up IRQs through usb_add_hcd. */
355 if (xhci->quirks & XHCI_PLAT)
356 return 0;
357
358 pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller);
353 /* 359 /*
354 * Some Fresco Logic host controllers advertise MSI, but fail to 360 * Some Fresco Logic host controllers advertise MSI, but fail to
355 * generate interrupts. Don't even try to enable MSI. 361 * generate interrupts. Don't even try to enable MSI.
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index d2045916531b..46aa14894148 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1537,6 +1537,7 @@ struct xhci_hcd {
1537#define XHCI_SPURIOUS_REBOOT (1 << 13) 1537#define XHCI_SPURIOUS_REBOOT (1 << 13)
1538#define XHCI_COMP_MODE_QUIRK (1 << 14) 1538#define XHCI_COMP_MODE_QUIRK (1 << 14)
1539#define XHCI_AVOID_BEI (1 << 15) 1539#define XHCI_AVOID_BEI (1 << 15)
1540#define XHCI_PLAT (1 << 16)
1540 unsigned int num_active_eps; 1541 unsigned int num_active_eps;
1541 unsigned int limit_active_eps; 1542 unsigned int limit_active_eps;
1542 /* There are two roothubs to keep track of bus suspend info for */ 1543 /* There are two roothubs to keep track of bus suspend info for */
diff --git a/drivers/usb/misc/adutux.c b/drivers/usb/misc/adutux.c
index 7078e9bf0fc0..3eaa83f05086 100644
--- a/drivers/usb/misc/adutux.c
+++ b/drivers/usb/misc/adutux.c
@@ -783,7 +783,7 @@ static int adu_probe(struct usb_interface *interface,
783 783
784 /* let the user know what node this device is now attached to */ 784 /* let the user know what node this device is now attached to */
785 dev_info(&interface->dev, "ADU%d %s now attached to /dev/usb/adutux%d\n", 785 dev_info(&interface->dev, "ADU%d %s now attached to /dev/usb/adutux%d\n",
786 udev->descriptor.idProduct, dev->serial_number, 786 le16_to_cpu(udev->descriptor.idProduct), dev->serial_number,
787 (dev->minor - ADU_MINOR_BASE)); 787 (dev->minor - ADU_MINOR_BASE));
788exit: 788exit:
789 return retval; 789 return retval;
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
index e731bbc166a0..d6960aebe246 100644
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -2307,7 +2307,7 @@ static int keyspan_startup(struct usb_serial *serial)
2307 if (d_details == NULL) { 2307 if (d_details == NULL) {
2308 dev_err(&serial->dev->dev, "%s - unknown product id %x\n", 2308 dev_err(&serial->dev->dev, "%s - unknown product id %x\n",
2309 __func__, le16_to_cpu(serial->dev->descriptor.idProduct)); 2309 __func__, le16_to_cpu(serial->dev->descriptor.idProduct));
2310 return 1; 2310 return -ENODEV;
2311 } 2311 }
2312 2312
2313 /* Setup private data for serial driver */ 2313 /* Setup private data for serial driver */
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
index 51da424327b0..b01300164fc0 100644
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -90,6 +90,7 @@ struct urbtracker {
90 struct list_head urblist_entry; 90 struct list_head urblist_entry;
91 struct kref ref_count; 91 struct kref ref_count;
92 struct urb *urb; 92 struct urb *urb;
93 struct usb_ctrlrequest *setup;
93}; 94};
94 95
95enum mos7715_pp_modes { 96enum mos7715_pp_modes {
@@ -271,6 +272,7 @@ static void destroy_urbtracker(struct kref *kref)
271 struct mos7715_parport *mos_parport = urbtrack->mos_parport; 272 struct mos7715_parport *mos_parport = urbtrack->mos_parport;
272 273
273 usb_free_urb(urbtrack->urb); 274 usb_free_urb(urbtrack->urb);
275 kfree(urbtrack->setup);
274 kfree(urbtrack); 276 kfree(urbtrack);
275 kref_put(&mos_parport->ref_count, destroy_mos_parport); 277 kref_put(&mos_parport->ref_count, destroy_mos_parport);
276} 278}
@@ -355,7 +357,6 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport,
355 struct urbtracker *urbtrack; 357 struct urbtracker *urbtrack;
356 int ret_val; 358 int ret_val;
357 unsigned long flags; 359 unsigned long flags;
358 struct usb_ctrlrequest setup;
359 struct usb_serial *serial = mos_parport->serial; 360 struct usb_serial *serial = mos_parport->serial;
360 struct usb_device *usbdev = serial->dev; 361 struct usb_device *usbdev = serial->dev;
361 362
@@ -373,14 +374,20 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport,
373 kfree(urbtrack); 374 kfree(urbtrack);
374 return -ENOMEM; 375 return -ENOMEM;
375 } 376 }
376 setup.bRequestType = (__u8)0x40; 377 urbtrack->setup = kmalloc(sizeof(*urbtrack->setup), GFP_KERNEL);
377 setup.bRequest = (__u8)0x0e; 378 if (!urbtrack->setup) {
378 setup.wValue = get_reg_value(reg, dummy); 379 usb_free_urb(urbtrack->urb);
379 setup.wIndex = get_reg_index(reg); 380 kfree(urbtrack);
380 setup.wLength = 0; 381 return -ENOMEM;
382 }
383 urbtrack->setup->bRequestType = (__u8)0x40;
384 urbtrack->setup->bRequest = (__u8)0x0e;
385 urbtrack->setup->wValue = get_reg_value(reg, dummy);
386 urbtrack->setup->wIndex = get_reg_index(reg);
387 urbtrack->setup->wLength = 0;
381 usb_fill_control_urb(urbtrack->urb, usbdev, 388 usb_fill_control_urb(urbtrack->urb, usbdev,
382 usb_sndctrlpipe(usbdev, 0), 389 usb_sndctrlpipe(usbdev, 0),
383 (unsigned char *)&setup, 390 (unsigned char *)urbtrack->setup,
384 NULL, 0, async_complete, urbtrack); 391 NULL, 0, async_complete, urbtrack);
385 kref_init(&urbtrack->ref_count); 392 kref_init(&urbtrack->ref_count);
386 INIT_LIST_HEAD(&urbtrack->urblist_entry); 393 INIT_LIST_HEAD(&urbtrack->urblist_entry);
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index dfa678906632..fdf953539c62 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -2145,7 +2145,7 @@ static int mos7810_check(struct usb_serial *serial)
2145static int mos7840_probe(struct usb_serial *serial, 2145static int mos7840_probe(struct usb_serial *serial,
2146 const struct usb_device_id *id) 2146 const struct usb_device_id *id)
2147{ 2147{
2148 u16 product = serial->dev->descriptor.idProduct; 2148 u16 product = le16_to_cpu(serial->dev->descriptor.idProduct);
2149 u8 *buf; 2149 u8 *buf;
2150 int device_type; 2150 int device_type;
2151 2151
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index 5c07d55ece7a..760b78560f67 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -1463,14 +1463,15 @@ static int ti_download_firmware(struct ti_device *tdev)
1463 char buf[32]; 1463 char buf[32];
1464 1464
1465 /* try ID specific firmware first, then try generic firmware */ 1465 /* try ID specific firmware first, then try generic firmware */
1466 sprintf(buf, "ti_usb-v%04x-p%04x.fw", dev->descriptor.idVendor, 1466 sprintf(buf, "ti_usb-v%04x-p%04x.fw",
1467 dev->descriptor.idProduct); 1467 le16_to_cpu(dev->descriptor.idVendor),
1468 le16_to_cpu(dev->descriptor.idProduct));
1468 status = request_firmware(&fw_p, buf, &dev->dev); 1469 status = request_firmware(&fw_p, buf, &dev->dev);
1469 1470
1470 if (status != 0) { 1471 if (status != 0) {
1471 buf[0] = '\0'; 1472 buf[0] = '\0';
1472 if (dev->descriptor.idVendor == MTS_VENDOR_ID) { 1473 if (le16_to_cpu(dev->descriptor.idVendor) == MTS_VENDOR_ID) {
1473 switch (dev->descriptor.idProduct) { 1474 switch (le16_to_cpu(dev->descriptor.idProduct)) {
1474 case MTS_CDMA_PRODUCT_ID: 1475 case MTS_CDMA_PRODUCT_ID:
1475 strcpy(buf, "mts_cdma.fw"); 1476 strcpy(buf, "mts_cdma.fw");
1476 break; 1477 break;
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c
index 8257d30c4072..85365784040b 100644
--- a/drivers/usb/serial/usb_wwan.c
+++ b/drivers/usb/serial/usb_wwan.c
@@ -291,18 +291,18 @@ static void usb_wwan_indat_callback(struct urb *urb)
291 tty_flip_buffer_push(&port->port); 291 tty_flip_buffer_push(&port->port);
292 } else 292 } else
293 dev_dbg(dev, "%s: empty read urb received\n", __func__); 293 dev_dbg(dev, "%s: empty read urb received\n", __func__);
294 294 }
295 /* Resubmit urb so we continue receiving */ 295 /* Resubmit urb so we continue receiving */
296 err = usb_submit_urb(urb, GFP_ATOMIC); 296 err = usb_submit_urb(urb, GFP_ATOMIC);
297 if (err) { 297 if (err) {
298 if (err != -EPERM) { 298 if (err != -EPERM) {
299 dev_err(dev, "%s: resubmit read urb failed. (%d)\n", __func__, err); 299 dev_err(dev, "%s: resubmit read urb failed. (%d)\n",
300 /* busy also in error unless we are killed */ 300 __func__, err);
301 usb_mark_last_busy(port->serial->dev); 301 /* busy also in error unless we are killed */
302 }
303 } else {
304 usb_mark_last_busy(port->serial->dev); 302 usb_mark_last_busy(port->serial->dev);
305 } 303 }
304 } else {
305 usb_mark_last_busy(port->serial->dev);
306 } 306 }
307} 307}
308 308
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
index f5c81afc6e96..cef940f4de7c 100644
--- a/drivers/usb/wusbcore/wa-xfer.c
+++ b/drivers/usb/wusbcore/wa-xfer.c
@@ -1231,6 +1231,12 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb)
1231 } 1231 }
1232 spin_lock_irqsave(&xfer->lock, flags); 1232 spin_lock_irqsave(&xfer->lock, flags);
1233 rpipe = xfer->ep->hcpriv; 1233 rpipe = xfer->ep->hcpriv;
1234 if (rpipe == NULL) {
1235 pr_debug("%s: xfer id 0x%08X has no RPIPE. %s",
1236 __func__, wa_xfer_id(xfer),
1237 "Probably already aborted.\n" );
1238 goto out_unlock;
1239 }
1234 /* Check the delayed list -> if there, release and complete */ 1240 /* Check the delayed list -> if there, release and complete */
1235 spin_lock_irqsave(&wa->xfer_list_lock, flags2); 1241 spin_lock_irqsave(&wa->xfer_list_lock, flags2);
1236 if (!list_empty(&xfer->list_node) && xfer->seg == NULL) 1242 if (!list_empty(&xfer->list_node) && xfer->seg == NULL)
@@ -1649,8 +1655,7 @@ static void wa_xfer_result_cb(struct urb *urb)
1649 break; 1655 break;
1650 } 1656 }
1651 usb_status = xfer_result->bTransferStatus & 0x3f; 1657 usb_status = xfer_result->bTransferStatus & 0x3f;
1652 if (usb_status == WA_XFER_STATUS_ABORTED 1658 if (usb_status == WA_XFER_STATUS_NOT_FOUND)
1653 || usb_status == WA_XFER_STATUS_NOT_FOUND)
1654 /* taken care of already */ 1659 /* taken care of already */
1655 break; 1660 break;
1656 xfer_id = xfer_result->dwTransferID; 1661 xfer_id = xfer_result->dwTransferID;