John Fastabend
2016-Dec-23 16:02 UTC
[PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
On 16-12-23 06:37 AM, Jason Wang wrote:> When VIRTIO_NET_F_GUEST_UFO is negotiated, host could still send UFO > packet that exceeds a single page which could not be handled > correctly by XDP. So this patch forbids setting XDP when GUEST_UFO is > supported. While at it, forbid XDP for ECN (which comes only from GRO) > too to prevent user from misconfiguration. > > Cc: John Fastabend <john.r.fastabend at intel.com> > Signed-off-by: Jason Wang <jasowang at redhat.com> > --- > drivers/net/virtio_net.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 77ae358..c1f66d8 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -1684,7 +1684,9 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog) > int i, err; > > if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) || > - virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6)) { > + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) || > + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) || > + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO)) { > netdev_warn(dev, "can't set XDP while host is implementing LRO, disable LRO first\n"); > return -EOPNOTSUPP; > } >Acked-by: John Fastabend <john.r.fastabend at intel.com>
John Fastabend
2016-Dec-23 16:10 UTC
[PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
On 16-12-23 08:02 AM, John Fastabend wrote:> On 16-12-23 06:37 AM, Jason Wang wrote: >> When VIRTIO_NET_F_GUEST_UFO is negotiated, host could still send UFO >> packet that exceeds a single page which could not be handled >> correctly by XDP. So this patch forbids setting XDP when GUEST_UFO is >> supported. While at it, forbid XDP for ECN (which comes only from GRO) >> too to prevent user from misconfiguration. >>Is sending packets greater than single page though normal in this case? I don't have any need to support big packet mode other than MST asked for it. And I wasn't seeing this in my tests. MTU is capped at 4k - hdr when XDP is enabled. .John>> Cc: John Fastabend <john.r.fastabend at intel.com> >> Signed-off-by: Jason Wang <jasowang at redhat.com> >> --- >> drivers/net/virtio_net.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c >> index 77ae358..c1f66d8 100644 >> --- a/drivers/net/virtio_net.c >> +++ b/drivers/net/virtio_net.c >> @@ -1684,7 +1684,9 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog) >> int i, err; >> >> if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) || >> - virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6)) { >> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) || >> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) || >> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO)) { >> netdev_warn(dev, "can't set XDP while host is implementing LRO, disable LRO first\n"); >> return -EOPNOTSUPP; >> } >> > > Acked-by: John Fastabend <john.r.fastabend at intel.com> >
Jason Wang
2016-Dec-26 02:38 UTC
[PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
On 2016?12?24? 00:10, John Fastabend wrote:> On 16-12-23 08:02 AM, John Fastabend wrote: >> On 16-12-23 06:37 AM, Jason Wang wrote: >>> When VIRTIO_NET_F_GUEST_UFO is negotiated, host could still send UFO >>> packet that exceeds a single page which could not be handled >>> correctly by XDP. So this patch forbids setting XDP when GUEST_UFO is >>> supported. While at it, forbid XDP for ECN (which comes only from GRO) >>> too to prevent user from misconfiguration. >>> > Is sending packets greater than single page though normal in this case?Yes, when NETIF_F_UFO was enabled for tap, it won't segment UFO packet and will send it directly to guest. (This could be reproduced with UDP_STREAM between two guests or host to guest). Thanks> I don't have any need to support big packet mode other than MST asked > for it. And I wasn't seeing this in my tests. MTU is capped at 4k - hdr > when XDP is enabled. > > .John > >>> Cc: John Fastabend <john.r.fastabend at intel.com> >>> Signed-off-by: Jason Wang <jasowang at redhat.com> >>> --- >>> drivers/net/virtio_net.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c >>> index 77ae358..c1f66d8 100644 >>> --- a/drivers/net/virtio_net.c >>> +++ b/drivers/net/virtio_net.c >>> @@ -1684,7 +1684,9 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog) >>> int i, err; >>> >>> if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) || >>> - virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6)) { >>> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6) || >>> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_ECN) || >>> + virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_UFO)) { >>> netdev_warn(dev, "can't set XDP while host is implementing LRO, disable LRO first\n"); >>> return -EOPNOTSUPP; >>> } >>> >> Acked-by: John Fastabend <john.r.fastabend at intel.com> >>
Apparently Analagous Threads
- [PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
- [PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
- [PATCH net 7/9] virtio-net: forbid XDP when VIRTIO_NET_F_GUEST_UFO is support
- [PATCH net 0/9] several fixups for virtio-net XDP
- [PATCH net 0/9] several fixups for virtio-net XDP