|
Lines 551-556
Link Here
|
| 551 |
if ((flags & USBD_FORCE_SHORT_XFER) && |
551 |
if ((flags & USBD_FORCE_SHORT_XFER) && |
| 552 |
len % UGETW(opipe->pipe.endpoint->edesc->wMaxPacketSize) == 0) { |
552 |
len % UGETW(opipe->pipe.endpoint->edesc->wMaxPacketSize) == 0) { |
| 553 |
/* Force a 0 length transfer at the end. */ |
553 |
/* Force a 0 length transfer at the end. */ |
|
|
554 |
|
| 555 |
cur->td.td_flags = LE(tdflags | OHCI_TD_NOINTR); |
| 556 |
cur = next; |
| 557 |
|
| 554 |
next = ohci_alloc_std(sc); |
558 |
next = ohci_alloc_std(sc); |
| 555 |
if (next == 0) |
559 |
if (next == 0) |
| 556 |
goto nomem; |
560 |
goto nomem; |
|
Lines 559-568
Link Here
|
| 559 |
cur->td.td_cbp = 0; /* indicate 0 length packet */ |
563 |
cur->td.td_cbp = 0; /* indicate 0 length packet */ |
| 560 |
cur->nexttd = next; |
564 |
cur->nexttd = next; |
| 561 |
cur->td.td_nexttd = LE(next->physaddr); |
565 |
cur->td.td_nexttd = LE(next->physaddr); |
| 562 |
cur->td.td_be = LE(dataphys - 1); |
566 |
cur->td.td_be = ~0; |
| 563 |
cur->len = 0; |
567 |
cur->len = 0; |
| 564 |
cur->flags = 0; |
568 |
cur->flags = 0; |
| 565 |
cur = next; |
|
|
| 566 |
DPRINTFN(2,("ohci_alloc_std_chain: add 0 xfer\n")); |
569 |
DPRINTFN(2,("ohci_alloc_std_chain: add 0 xfer\n")); |
| 567 |
} |
570 |
} |
| 568 |
cur->flags = OHCI_CALL_DONE | OHCI_ADD_LEN; |
571 |
cur->flags = OHCI_CALL_DONE | OHCI_ADD_LEN; |