diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2023-05-01 01:36:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2023-05-01 01:36:13 +0000 |
commit | 88181e1c5c8d19e61c76b93620abcbc7c2e57481 (patch) | |
tree | d56e253879f2941b7111caa1bfc211dd849f92e7 /sys/src/libString/s_parse.c | |
parent | a04fd342727c329584a9f443092caf21e3884bdf (diff) |
usbxhci: fix command ring wrap crash
When a ring wraps around, we need to program a wrap around
td with the base address. To get the base, we need to call
Ctlr.dmaaddr() and we used the slot->ctlr pointer to get to
it.
But the command ring has no slot associated to it so we would
crash as soon as we tried to submit more than 256 controller
commands.
The solution is to put a ctlr pointer into the Ring structure,
which also allows us to simplify resetring() and waittd()
as they now can get the controller implicitely thru the ring
pointer.
Diffstat (limited to 'sys/src/libString/s_parse.c')
0 files changed, 0 insertions, 0 deletions