Header file changes for TSO
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Jul 2014 17:50:37 +0000 (10:50 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Jul 2014 17:50:37 +0000 (10:50 -0700)
Via Drew.

kern/include/ip.h
kern/include/ns.h

index 2cb2c35..bb21c13 100644 (file)
@@ -937,6 +937,7 @@ enum {
        NETF_TCPCK = (1 << NS_TCPCK_SHIFT),     /* xmit tcp checksum */
        NETF_PADMIN = (1 << NETF_SG_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 */
 };
 /*
  *  a network interface
index 88dd5e7..ca358a7 100644 (file)
@@ -318,7 +318,8 @@ enum {
 #define NS_UDPCK_SHIFT 3
 #define NS_TCPCK_SHIFT 4
 #define NS_PKTCK_SHIFT 5
-#define NS_SHIFT_MAX 5
+#define NS_TSO_SHIFT 6
+#define NS_SHIFT_MAX 6
 
 enum {
        BINTR = (1 << 0),
@@ -327,8 +328,9 @@ enum {
        Budpck = (1 << NS_UDPCK_SHIFT), /* udp checksum */
        Btcpck = (1 << NS_TCPCK_SHIFT), /* tcp checksum */
        Bpktck = (1 << NS_PKTCK_SHIFT), /* packet checksum */
+       Btso = (1 << NS_TSO_SHIFT),     /* TSO */
 };
-#define BCKSUM_FLAGS (Bipck|Budpck|Btcpck|Bpktck)
+#define BCKSUM_FLAGS (Bipck|Budpck|Btcpck|Bpktck|Btso)
 
 struct block {
        struct block *next;
@@ -342,6 +344,7 @@ struct block {
        uint16_t checksum;                      /* IP checksum of complete packet (minus media header) */
        uint16_t checksum_start;                /* off from start of block to start csum */
        uint16_t checksum_offset;               /* off from checksum_offset to store csum */
+       uint16_t mss;               /* TCP MSS for TSO */
 };
 #define BLEN(s)        ((s)->wp - (s)->rp)
 #define BALLOC(s) ((s)->lim - (s)->base)