Index: ohci.c =================================================================== RCS file: /home/ncvs/src/sys/dev/usb/ohci.c,v retrieving revision 1.132 diff -u -r1.132 ohci.c --- ohci.c 2003/08/24 17:55:54 1.132 +++ ohci.c 2003/09/07 20:28:13 @@ -513,6 +513,14 @@ DPRINTFN(alen < 4096,("ohci_alloc_std_chain: start len=%d\n", alen)); + if (ohcidebug && alen > 4096) { + printf("len: %d, pages: ", alen); + for (len = 0; len < alen; len += OHCI_PAGE_SIZE) { + printf("%s0x%x", len == 0 ? "" : ", ", DMAADDR(dma, + len)); + } + } + len = alen; cur = sp; @@ -546,9 +554,14 @@ * We can describe the above using maxsegsz = 4k and nsegs = 2 * in the future. */ +#if BROKEN_OHCI + if (len < OHCI_PAGE_SIZE - OHCI_PAGE_OFFSET(dataphys)) +#else if (OHCI_PAGE(dataphys) == OHCI_PAGE(DMAADDR(dma, offset + len - 1)) || len - (OHCI_PAGE_SIZE - - OHCI_PAGE_OFFSET(dataphys)) <= OHCI_PAGE_SIZE) { + OHCI_PAGE_OFFSET(dataphys)) <= OHCI_PAGE_SIZE) +#endif + { /* we can handle it in this TD */ curlen = len; } else {