Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Nov 2005 11:44:47 -0500
From:      ming fu <fming@borderware.com>
To:        freebsd-net@freebsd.org
Subject:   Lost fragment when send to ip that need arp resolve
Message-ID:  <437378FF.2010901@borderware.com>

next in thread | raw e-mail | index | archive | help
Hi,

When sending large udp packet (larger then mtu) to an ip that need arp 
resolve, the first frag will be lost.

The ip_output() sends out the fragments in a loop. The first frag cause 
an arp request and the mbuf will be hold in "struct llinfo_arp" for send 
after arp can be resolved. However, the ip_output continue to send all 
the fragment, and the "struct llinfo_arp" can only hold one mbuf. The 
later frag will overwrite the point to ealier mbuf. Once arp is 
resolved, only the last mbuf will be sent, and all the rest will be lost.

Anyone know if there is attemp to make the "struct llinfo_arp" to hold 
more than one mbuf, or there is a way to return an error to the 
application so it will do a re-send.


Regards,
Ming



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?437378FF.2010901>