We have now found a workaround for our problems with PPP dropping packets:

1. Our tty driver now returns "0" to ppp_async_push() instead og "-EAGAIN".
This prevents packet drops.

2. We had to modify the line

"if (test_bit(XMIT_WAKEUP, &ap->xmit_flags) && ppp_async_push(ap)) { "

in [Linux]/drivers/net/ppp_async.c: ppp_async_process() line 513 to become:

"if (ppp_async_push(ap)) { "

since apparently no process/function in our system sets the XMIT_WAKEUP. Can
anybody tell us who is / should be responsible for setting this flag?

Our workaround seems working stable though. :-)

Best regards

Arne Lie

SINTEF ICT, Dept. of Communication Systems

e-mail: arne.lie@sintef.no