Subject: MAC driver issues

From: "David H. Lynch Jr." <[email-masked]>
Date: Mon, 04 Sep 2006 18:31:26 -0400

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 	       [email-masked] 	  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