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