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>