panic: uhci_abort_xfer: not in process context
Sebastien B
sebastien.b at swissinfo.org
Sat Apr 2 12:22:03 PST 2005
> > > You can call usbd_transfer(), if the transfer is not
> > > synchronous.
> >
> > But it is. To send network packets, I must perform two USB transfers on
> > two different endpoints, and I must wait for the first one to complete
> > before initiating the second.
>
> What you need to do is to allocate two [non synchronous] transfers besides
> from the data transfer. The callback of the first transfer starts the
> second transfer. The callback of the second transfer starts the data
> transfer. Then you need to make a flag so that the first transfer is not
> started again, before the data transfer has been started.
This requires a quite complex locking mechanism by comparison to scheduling a
software interrupt handler.
Why is using a software interrupt handler and synchronous transfers wrong ?
I've disabled the timeout in usbd_bulk_transfer() and it does not panic
anymore. So this is indeed the timeout function which causes the panic when
it is called.
More information about the freebsd-usb
mailing list