[En-Nut-Discussion] changes in tcpip stack from 3.9.5 to 3.9.6

Harald Kipp harald.kipp at egnite.de
Sun Jun 5 16:50:54 CEST 2005


I'd not insist on blaming GCC. No idea what drove me in
this direction. This change causes the different behavior:

* net/udpin.c: ICMP unreachable will be sent on incoming
udp packets with no local peer port.

Looks like Ethernut wants to reject UDP packets even
if the datagram is broadcasted.

All this exposes a general problem with the stack.
Like ICMP echo replies, this UDP reject is sent by
the Ethernet receiver thread. As long as this thread
gets blocked in ARP, no new incoming Ethernet packet is
processed.

This is typically no problem, because Ethernut will
receive an ARP request before another hosts contacts
it. As Ethernut uses incoming ARP request to update
the ARP table, there is no need for another ARP request
on the response. Thus, limiting the ICMP unreachable
response to non-broadcasts will fix this for now.

I'm thinking about setting MAX_ARPREQUESTS to 1
by default, which is the correct way, as Michael Jones
already pointed out earlier.

Harald




More information about the En-Nut-Discussion mailing list