Don't try to reassemble IP_DF marked packets
authorAndrew Gallatin <gallatin@google.com>
Fri, 20 Jun 2014 18:44:40 +0000 (11:44 -0700)
committerAndrew Gallatin <gallatin@google.com>
Fri, 20 Jun 2014 18:46:35 +0000 (11:46 -0700)
Most modern TCP stacks mark TCP/IPv4 packets with IP_DF.
So, in addition to checking if the frags field is clear,
also check if the packet is marked as IP_DF, and bypass
reassembly if that is the case.

This improves perf by about ~150Mb/s for an rx heavy workload on a
10GbE NIC.

Signed-off-by: Andrew Gallatin <gallatin@google.com>
kern/src/net/ip.c

index ab4077b..c8f644a 100644 (file)
@@ -526,7 +526,7 @@ void ipiput4(struct Fs *f, struct Ipifc *ifc, struct block *bp)
        }
 
        frag = nhgets(h->frag);
-       if (frag) {
+       if (frag && frag != IP_DF) {
                h->tos = 0;
                if (frag & IP_MF)
                        h->tos = 1;