Virtual device hdlc0 asks to que packet!
rmcguire at videopresence.com
Wed Mar 5 10:33:37 EST 2008
Background MPC8360, using a T1 PHY as an HDLC device.
Developing my hdlc driver, and was writing a simple send utility. To test it
out. Things seem well when I had massive delays in between the write() or
sendot(), and I was able to attain 100+Kbytes/sec. However, when I replaced
the simple usleeps(xxx) with select statements, suddenly I started getting a
ton of these messages.
"Virtual device hdlc0 asks to que packet!"
Along with dropped or non-sent data.
In my driver I am tracking the available TX buffers, and issue a
netif_stop_que() statement inside the start_xmit() call, with a
corresponding netif_wake_que() in the tx_handler.
Is there something else that needs to be done in order to make a select
statement wait for the socket to not be busy? It seems that it always
returns immediately with no timeout.
I guess the other pieces of the scenario are as follows:
* Using 'sethdlc hdlc0 hdlc' for the mode, so no IP stack is used.
* Opening the socket to the hdlc device directly to the device itself, i.e.
no port number socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
I have used both sendto() and write() to pass data down, and they both
return as if all the data has been sent, i.e. I never get an error.
More information about the Linuxppc-embedded