This has been discussed on these lists since some time already, but as we
don't seem to come to a proper fix, I decided to summarize our problem
A short summary from the ppp PoV:
This happens with IrNET. So, the question is, is it legitimate to call
ppp_channel_push() from the .start_xmit() method? How do other ppp drivers
do it? Looks like, for examplke, ppp_async checks explicitly for
recursion, synctty does a try_spinlock_bh()... Is it just a bug in IrNET
and one just cannot do this, or is there a simple fix for this?
Samuel's suggestion is to offload the call to ppp_output_wakeup() to the
keventd workqueue, but we haven't been able to make this work properly so
I have a dirty workaround, whereby I explicitly verify recursion in
ppp_channel_push(). This works, but it doesn't seem to be a good solution.
Guennadi Liakhovetski, Ph.D.
DSA Daten- und Systemtechnik GmbH