aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/host/uhci-hcd.h1
-rw-r--r--drivers/usb/host/uhci-q.c11
2 files changed, 3 insertions, 9 deletions
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h
index 1b3d23406ac4..e46d2b0203cb 100644
--- a/drivers/usb/host/uhci-hcd.h
+++ b/drivers/usb/host/uhci-hcd.h
@@ -146,7 +146,6 @@ struct uhci_qh {
146 short phase; /* Between 0 and period-1 */ 146 short phase; /* Between 0 and period-1 */
147 short load; /* Periodic time requirement, in us */ 147 short load; /* Periodic time requirement, in us */
148 unsigned int iso_frame; /* Frame # for iso_packet_desc */ 148 unsigned int iso_frame; /* Frame # for iso_packet_desc */
149 int iso_status; /* Status for Isochronous URBs */
150 149
151 int state; /* QH_STATE_xxx; see above */ 150 int state; /* QH_STATE_xxx; see above */
152 int type; /* Queue type (control, bulk, etc) */ 151 int type; /* Queue type (control, bulk, etc) */
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index bff200cb3d2e..793a04685ef4 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -1324,7 +1324,6 @@ static int uhci_submit_isochronous(struct uhci_hcd *uhci, struct urb *urb,
1324 if (list_empty(&qh->queue)) { 1324 if (list_empty(&qh->queue)) {
1325 qh->iso_packet_desc = &urb->iso_frame_desc[0]; 1325 qh->iso_packet_desc = &urb->iso_frame_desc[0];
1326 qh->iso_frame = urb->start_frame; 1326 qh->iso_frame = urb->start_frame;
1327 qh->iso_status = 0;
1328 } 1327 }
1329 1328
1330 qh->skel = SKEL_ISO; 1329 qh->skel = SKEL_ISO;
@@ -1361,18 +1360,15 @@ static int uhci_result_isochronous(struct uhci_hcd *uhci, struct urb *urb)
1361 qh->iso_packet_desc->actual_length = actlength; 1360 qh->iso_packet_desc->actual_length = actlength;
1362 qh->iso_packet_desc->status = status; 1361 qh->iso_packet_desc->status = status;
1363 } 1362 }
1364 1363 if (status)
1365 if (status) {
1366 urb->error_count++; 1364 urb->error_count++;
1367 qh->iso_status = status;
1368 }
1369 1365
1370 uhci_remove_td_from_urbp(td); 1366 uhci_remove_td_from_urbp(td);
1371 uhci_free_td(uhci, td); 1367 uhci_free_td(uhci, td);
1372 qh->iso_frame += qh->period; 1368 qh->iso_frame += qh->period;
1373 ++qh->iso_packet_desc; 1369 ++qh->iso_packet_desc;
1374 } 1370 }
1375 return qh->iso_status; 1371 return 0;
1376} 1372}
1377 1373
1378static int uhci_urb_enqueue(struct usb_hcd *hcd, 1374static int uhci_urb_enqueue(struct usb_hcd *hcd,
@@ -1517,7 +1513,6 @@ __acquires(uhci->lock)
1517 1513
1518 qh->iso_packet_desc = &nurb->iso_frame_desc[0]; 1514 qh->iso_packet_desc = &nurb->iso_frame_desc[0];
1519 qh->iso_frame = nurb->start_frame; 1515 qh->iso_frame = nurb->start_frame;
1520 qh->iso_status = 0;
1521 } 1516 }
1522 1517
1523 /* Take the URB off the QH's queue. If the queue is now empty, 1518 /* Take the URB off the QH's queue. If the queue is now empty,
@@ -1586,7 +1581,7 @@ static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh)
1586 } 1581 }
1587 1582
1588 uhci_giveback_urb(uhci, qh, urb); 1583 uhci_giveback_urb(uhci, qh, urb);
1589 if (status < 0 && qh->type != USB_ENDPOINT_XFER_ISOC) 1584 if (status < 0)
1590 break; 1585 break;
1591 } 1586 }
1592 1587