uaa

[wip:20190119] TT scheduling improvement for OpenBSD ehci(4)

uaa
Jan 18th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. --- ehci.c.bak Sun Jan 6 15:09:18 2019
  2. +++ ehci.c Sat Jan 19 00:06:55 2019
  3. @@ -1429,15 +1429,30 @@
  4. EHCI_QH_CTL : 0) |
  5. EHCI_QH_SET_NRL(naks)
  6. );
  7. + /*
  8. + * To reduce conflict with split isochronous transfer,
  9. + * schedule (split) interrupt trasnfer at latter half of
  10. + * 1ms frame:
  11. + *
  12. + * |<-------------- H-Frame -------------->|
  13. + * .H0 :H1 H2 H3 H4 H5 H6 H7 .H0" :H1"
  14. + * . : . :
  15. + * [HS] . : SS CS CS' CS" . :
  16. + * [FS/LS] . : |<== >>>> >>>| . :
  17. + * . : . :
  18. + * .B7' :B0 B1 B2 B3 B4 B5 B6 .B7 :B0"
  19. + * |<-------------- B-Frame -------------->|
  20. + *
  21. + */
  22. sqh->qh.qh_endphub = htole32(
  23. EHCI_QH_SET_MULT(1) |
  24. - EHCI_QH_SET_SMASK(xfertype == UE_INTERRUPT ? 0x01 : 0)
  25. + EHCI_QH_SET_SMASK(xfertype == UE_INTERRUPT ? 0x08 : 0)
  26. );
  27. if (speed != EHCI_QH_SPEED_HIGH) {
  28. sqh->qh.qh_endphub |= htole32(
  29. EHCI_QH_SET_HUBA(hshubaddr) |
  30. EHCI_QH_SET_PORT(hshubport) |
  31. - EHCI_QH_SET_CMASK(0x1c) /* XXX */
  32. + EHCI_QH_SET_CMASK(0xe0)
  33. );
  34. }
  35. sqh->qh.qh_curqtd = htole32(EHCI_LINK_TERMINATE);
Add Comment
Please, Sign In to add comment