Jason Wang
2021-May-11 06:47 UTC
[PATCH 2/4] virtio-net: add support of UDP segmentation (USO) on the host
? 2021/5/11 ??12:42, Yuri Benditovich ??:> Large UDP packet provided by the guest with GSO type set to > VIRTIO_NET_HDR_GSO_UDP_L4 will be divided to several UDP > packets according to the gso_size field. > > Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com> > --- > include/linux/virtio_net.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h > index b465f8f3e554..4ecf9a1ca912 100644 > --- a/include/linux/virtio_net.h > +++ b/include/linux/virtio_net.h > @@ -51,6 +51,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;This is only for rx, how about tx? Thanks> default: > return -EINVAL; > }
Yuri Benditovich
2021-May-11 08:23 UTC
[PATCH 2/4] virtio-net: add support of UDP segmentation (USO) on the host
On Tue, May 11, 2021 at 9:47 AM Jason Wang <jasowang at redhat.com> wrote:> > > ? 2021/5/11 ??12:42, Yuri Benditovich ??: > > Large UDP packet provided by the guest with GSO type set to > > VIRTIO_NET_HDR_GSO_UDP_L4 will be divided to several UDP > > packets according to the gso_size field. > > > > Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com> > > --- > > include/linux/virtio_net.h | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h > > index b465f8f3e554..4ecf9a1ca912 100644 > > --- a/include/linux/virtio_net.h > > +++ b/include/linux/virtio_net.h > > @@ -51,6 +51,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; > > > This is only for rx, how about tx?In terms of the guest this is only for TX. Guest RX is a different thing, this is actually coalescing of segmented UDP packets into a large one. This feature is not defined in the virtio spec yet and the support of it first of all depends on the OS. For example: TCP LSO (guest TX) is supported almost by all the versions of Windows. TCP RSC (coalescing of TCP segments) is supported by Win 8 / Server 2012 and up. UDP segmentation is supported by Windows kernels 1903+ UDP coalescing is defined by Windows kernels 2004+ and not supported by the driver yet.> > Thanks > > > > > default: > > return -EINVAL; > > } >