diff options
Diffstat (limited to 'include/linux/virtio_net.h')
-rw-r--r-- | include/linux/virtio_net.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 9397628a1967..cb462f9ab7dd 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h | |||
@@ -5,6 +5,24 @@ | |||
5 | #include <linux/if_vlan.h> | 5 | #include <linux/if_vlan.h> |
6 | #include <uapi/linux/virtio_net.h> | 6 | #include <uapi/linux/virtio_net.h> |
7 | 7 | ||
8 | static inline int virtio_net_hdr_set_proto(struct sk_buff *skb, | ||
9 | const struct virtio_net_hdr *hdr) | ||
10 | { | ||
11 | switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { | ||
12 | case VIRTIO_NET_HDR_GSO_TCPV4: | ||
13 | case VIRTIO_NET_HDR_GSO_UDP: | ||
14 | skb->protocol = cpu_to_be16(ETH_P_IP); | ||
15 | break; | ||
16 | case VIRTIO_NET_HDR_GSO_TCPV6: | ||
17 | skb->protocol = cpu_to_be16(ETH_P_IPV6); | ||
18 | break; | ||
19 | default: | ||
20 | return -EINVAL; | ||
21 | } | ||
22 | |||
23 | return 0; | ||
24 | } | ||
25 | |||
8 | static inline int virtio_net_hdr_to_skb(struct sk_buff *skb, | 26 | static inline int virtio_net_hdr_to_skb(struct sk_buff *skb, |
9 | const struct virtio_net_hdr *hdr, | 27 | const struct virtio_net_hdr *hdr, |
10 | bool little_endian) | 28 | bool little_endian) |