I am trying to get a network driver working. It sends - I can capture the output with Etherreal and it looks good. It receives - I can dump the received packets when the come in and they look ok to me.
BUT, If I try to ping another host, first Linux sends and ARP broadcast, the appropriate client sends an ARP response. Etherreal is happy with both. My driver gets the response - The driver says the packet lenght is 64 bytes, which includes something like 14 bytes of padding at the end. But the actual packet looks perfect exactly like what etherreal says it should (and what I get when I capture a received ARP packet in another driver). At the end of the recive interrupt the skb is passed to Linux with the netif_rc(ndev) function. This returns SUCCESS. However, the paket never gets handed of to the ARP protocol - I put some debugging in there and I never see it, while if I switch to a different NIC driver nearly the identical ARP packet gets processed by arp inside Linux. I have tried to chase this down, but I can't follow what is going on inside of all the /net/core/dev.c etc. Has anyone seen something similar to this ? Does anyone have a clue where I can find some info on trying to follow something through netif_rx to see where things are going off the rails ? -- Dave Lynch DLA Systems Software Development: Embedded Linux 717.627.3770 dhlii at dlasys.net http://www.dlasys.net fax: 1.253.369.9244 Cell: 1.717.587.7774 Over 25 years' experience in platforms, languages, and technologies too numerous to list. "Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction." Albert Einstein