Messages in this thread | | | Date | Wed, 9 Feb 2022 12:42:26 +0800 | Subject | Re: [RFC PATCH 4/5] linux/virtio_net.h: Added Support for GSO_UDP_L4 offload. | From | Jason Wang <> |
| |
在 2022/1/25 下午4:47, Andrew Melnychenko 写道: > Now, it's possible to convert vnet packets from/to skb.
I suggest to change the title to "net: support XXX offload in vnet header"
Thanks
> > Signed-off-by: Andrew Melnychenko <andrew@daynix.com> > --- > include/linux/virtio_net.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h > index a960de68ac69..9311d41d0a81 100644 > --- a/include/linux/virtio_net.h > +++ b/include/linux/virtio_net.h > @@ -17,6 +17,9 @@ static inline bool virtio_net_hdr_match_proto(__be16 protocol, __u8 gso_type) > case VIRTIO_NET_HDR_GSO_UDP: > return protocol == cpu_to_be16(ETH_P_IP) || > protocol == cpu_to_be16(ETH_P_IPV6); > + case VIRTIO_NET_HDR_GSO_UDP_L4: > + return protocol == cpu_to_be16(ETH_P_IP) || > + protocol == cpu_to_be16(ETH_P_IPV6); > default: > return false; > } > @@ -31,6 +34,7 @@ static inline int virtio_net_hdr_set_proto(struct sk_buff *skb, > switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { > case VIRTIO_NET_HDR_GSO_TCPV4: > case VIRTIO_NET_HDR_GSO_UDP: > + case VIRTIO_NET_HDR_GSO_UDP_L4: > skb->protocol = cpu_to_be16(ETH_P_IP); > break; > case VIRTIO_NET_HDR_GSO_TCPV6: > @@ -69,6 +73,11 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb, > ip_proto = IPPROTO_UDP; > thlen = sizeof(struct udphdr); > break; > + case VIRTIO_NET_HDR_GSO_UDP_L4: > + gso_type = SKB_GSO_UDP_L4; > + ip_proto = IPPROTO_UDP; > + thlen = sizeof(struct udphdr); > + break; > default: > return -EINVAL; > } > @@ -182,6 +191,8 @@ static inline int virtio_net_hdr_from_skb(const struct sk_buff *skb, > hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4; > else if (sinfo->gso_type & SKB_GSO_TCPV6) > hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV6; > + else if (sinfo->gso_type & SKB_GSO_UDP_L4) > + hdr->gso_type = VIRTIO_NET_HDR_GSO_UDP_L4; > else > return -EINVAL; > if (sinfo->gso_type & SKB_GSO_TCP_ECN)
| |