net: add LRO feature
authorRon Minnich <rminnich@gmail.com>
Sat, 17 Jan 2015 08:42:58 +0000 (00:42 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sun, 1 Mar 2015 14:36:00 +0000 (09:36 -0500)
Needed for lots of things, so let's just add it in.

is TSO the same as LRO? I did not think so but ... Andrew?

Signed-off-by: Ron Minnich <rminnich@gmail.com>
kern/include/ip.h
kern/src/net/netif.c

index 1033e7f..178097c 100644 (file)
@@ -932,6 +932,7 @@ struct netaddr {
 #define NETF_BASE_SHIFT                (NS_SHIFT_MAX + 1)
 #define NETF_PADMIN_SHIFT      (NETF_BASE_SHIFT + 0)
 #define NETF_SG_SHIFT          (NETF_BASE_SHIFT + 1)
+#define NETF_LRO_SHIFT         (NETF_BASE_SHIFT + 2)
 enum {
        NETF_IPCK = (1 << NS_IPCK_SHIFT),       /* xmit ip checksum */
        NETF_UDPCK = (1 << NS_UDPCK_SHIFT),     /* xmit udp checksum */
@@ -939,6 +940,7 @@ enum {
        NETF_PADMIN = (1 << NETF_PADMIN_SHIFT), /* device pads to mintu */
        NETF_SG = (1 << NETF_SG_SHIFT),         /* device can do scatter/gather */
        NETF_TSO = (1 << NS_TSO_SHIFT),         /* device can do TSO */
+       NETF_LRO = (1 << NETF_LRO_SHIFT),       /* device can do LRO */
 };
 /*
  *  a network interface
index c445b5d..90f7ce0 100644 (file)
@@ -287,6 +287,8 @@ netifread(struct netif *nif, struct chan *c, void *a, long n, uint32_t offset)
                                j += snprintf(p + j, READSTR - j, "sg ");
                        if (nif->feat & NETF_TSO)
                                j += snprintf(p + j, READSTR - j, "tso ");
+                       if (nif->feat & NETF_LRO)
+                               j += snprintf(p + j, READSTR - j, "lro ");
                        snprintf(p + j, READSTR - j, "\n");
                        n = readstr(offset, a, n, p);
                        kfree(p);