CVSROOT:        /cvs
Module name:    src
Changes by:     d...@cvs.openbsd.org    2009/07/24 06:30:05

Modified files:
        sys/netinet    : ip_input.c 

Log message:
for every packet we forwarded, we copied the first 68 bytes of it in case
ip_output failed and we had to generate an icmp packet. since ip_output
frees the mbuf we give it, we copied the original into a new mbuf. if
ip_output succeeded, we threw the copy away.

the problem with this is that copying the mbuf is about a third of the cost
of ip_forward.

this diff copies the data we might need onto the stack, and only builds the
mbuf for the icmp error if it actually needs it, ie, if ip_output fails.

this gives a noticable improvement in pps for forwarded traffic.

ok claudio@ markus@ henning@
tested by markus@ and by me in production for several days at work

Reply via email to