diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2008-02-04 23:50:02 -0500 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-02-04 07:50:02 -0500 |
commit | 34a48579e4fb380604d06f0409db3851bd22d785 (patch) | |
tree | 0bf5091284b456719b527a288bc79111987fd0f2 /include/linux/virtio_net.h | |
parent | 50c8ea8080700014872f2bbd7466d31ce0476290 (diff) |
virtio: Tweak virtio_net defines
1) Turn GSO on virtio net into an all-or-nothing (keep checksumming
separate). Having multiple bits is a pain: if you can't support something
you should handle it in software, which is still a performance win.
2) Make VIRTIO_NET_HDR_GSO_ECN a flag in the header, so it can apply to
IPv6 or v4.
3) Rename VIRTIO_NET_F_NO_CSUM to VIRTIO_NET_F_CSUM (ie. means we do
checksumming).
4) Add csum and gso params to virtio_net to allow more testing.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include/linux/virtio_net.h')
-rw-r--r-- | include/linux/virtio_net.h | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 1456f7b936d0..1ea3351df609 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h | |||
@@ -6,12 +6,9 @@ | |||
6 | #define VIRTIO_ID_NET 1 | 6 | #define VIRTIO_ID_NET 1 |
7 | 7 | ||
8 | /* The feature bitmap for virtio net */ | 8 | /* The feature bitmap for virtio net */ |
9 | #define VIRTIO_NET_F_NO_CSUM 0 | 9 | #define VIRTIO_NET_F_CSUM 0 /* Can handle pkts w/ partial csum */ |
10 | #define VIRTIO_NET_F_TSO4 1 | 10 | #define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */ |
11 | #define VIRTIO_NET_F_UFO 2 | 11 | #define VIRTIO_NET_F_GSO 6 /* Can handle pkts w/ any GSO type */ |
12 | #define VIRTIO_NET_F_TSO4_ECN 3 | ||
13 | #define VIRTIO_NET_F_TSO6 4 | ||
14 | #define VIRTIO_NET_F_MAC 5 | ||
15 | 12 | ||
16 | struct virtio_net_config | 13 | struct virtio_net_config |
17 | { | 14 | { |
@@ -27,10 +24,9 @@ struct virtio_net_hdr | |||
27 | __u8 flags; | 24 | __u8 flags; |
28 | #define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame | 25 | #define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame |
29 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 // GSO frame, IPv4 TCP (TSO) | 26 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 // GSO frame, IPv4 TCP (TSO) |
30 | /* FIXME: Do we need this? If they said they can handle ECN, do they care? */ | ||
31 | #define VIRTIO_NET_HDR_GSO_TCPV4_ECN 2 // GSO frame, IPv4 TCP w/ ECN | ||
32 | #define VIRTIO_NET_HDR_GSO_UDP 3 // GSO frame, IPv4 UDP (UFO) | 27 | #define VIRTIO_NET_HDR_GSO_UDP 3 // GSO frame, IPv4 UDP (UFO) |
33 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP | 28 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP |
29 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set | ||
34 | __u8 gso_type; | 30 | __u8 gso_type; |
35 | __u16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ | 31 | __u16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ |
36 | __u16 gso_size; /* Bytes to append to gso_hdr_len per frame */ | 32 | __u16 gso_size; /* Bytes to append to gso_hdr_len per frame */ |