Hi I’m currently developing a Network Driver based upon the reference
PCNet driver from QNX.
This driver work well most of the time, but I have a strange problem
with heavy network traffic and would appreciate some suggestions.
The symptom of the problem is that IO-net fails to send packets from the
IP stack to the transmit function of the driver. This eventually causes
the IP stack to report that there is no buffer space available.
The receive side of the driver is still working fine and nicinfo reports
packets being accepted. Checking the driver shows that all appears well,
it’s not blocked or waiting for anything and the last transmission
appeared to work correctly.
Is there anyway to debug what io-net is doing in this situation? I have
tried placing a filter module inbetween the driver and IP_EN, this shows
packets going across the filter but not being consumed by the driver.
An examination of the RX side of the driver shows that RX packets are
being held by the upper stack, typically I see a packet level of 3 or 4
in the stack when operating normally, when the driver starts to fail
this rises to around 100! When the tx finally dies these packets get
released and the rx level reduces to around 3/4. I’ve tried examining
the packet just as it starts to fail but these appear OK.
Additionally I have seen references to stack size issues with TCPIP. Is
there any way to check the size of the stack whilst running, or any
guidelines as to what will cause the IPstack to fail?
I running the driver with QNX 6.1A on both a PPC and X86. The problem
appears on both systems.
Thanks in Advance