* Re: xdp on virtio_net
[not found] ` <20170410161833.GK4714@microsoft.com>
@ 2017-04-10 20:43 ` Jesper Dangaard Brouer
2017-04-10 20:45 ` David Ahern
0 siblings, 1 reply; 3+ messages in thread
From: Jesper Dangaard Brouer @ 2017-04-10 20:43 UTC (permalink / raw)
To: Julien Desfossez
Cc: John Fastabend, Michael S. Tsirkin, brouer,
xdp-newbies@vger.kernel.org
On Mon, 10 Apr 2017 12:18:33 -0400
Julien Desfossez <ju@klipix.org> wrote:
> > > Hi,
> > >
> > > Following the presentation of Jesper on XDP, I have been trying to
> > > make the example work on KVM with virtio_net (and yes you are right,
> > > people try stuff when it is on github :-) ).
> >
> > Great to hear you pulled my github repo :-)
> >
> > > I am testing on an Ubuntu 17.04 VM, I recompiled the 4.10 kernel,
> > > the code from the example compiles fine, but I get into trouble when
> > > trying to load the bpf/xdp code.
> > >
> > > The first error I get is: virtio_net virtio0 enp0s3: can't set XDP
> > > while host is implementing LRO, disable LRO first
> > >
> > > I have tried to disable the various features checked in this code
> > > with ethtool, but it seems to check if the feature is available, not
> > > necessarily enabled and I have no idea how to make those features
> > > not available.
> > >
> > > I tried to comment the check to see if it would go somewhere, but
> > > then I got into a problem with the number of queues available (4
> > > vCPUs): virtio_net virtio0 enp0s3: request 5 queues but max is 1 And
> > > I don't know how to add more queues (I am launching the VM with
> > > libvirt/virt-manager).
> > >
> > > So my question is: do you have a recipe that works well to test this
> > > virtio_net + XDP feature ? Does the physical host need a special
> > > configuration ? Right now it is just a standard Ubuntu 16.04 (4.4
> > > kernel and libvirt 1.3.1).
> >
> > I have not tried to get XDP working on virtio_net ... but I'm hoping
> > John or Michael can provide some more info on this?
>
> Ok, I managed to solve the problem with the number of queues. Now with
> the checks for TSO, ECN and UFO commented in virtio_net.c, the
> xdp_ddos01_blacklist program works :-)
>
> So now, all I need is to make this check pass:
> 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_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;
> }
>
> I know running ethtool commands to disable those features does not change the
> result.
>
> If you have an idea on how to solve this problem that would be great.
Maybe someone on the xdp-newbies@vger.kernel.org list can help?
(p.s. I will be flying out of Montreal heading home in approx 30 min)
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: xdp on virtio_net
2017-04-10 20:43 ` xdp on virtio_net Jesper Dangaard Brouer
@ 2017-04-10 20:45 ` David Ahern
2017-04-10 23:39 ` Julien Desfossez
0 siblings, 1 reply; 3+ messages in thread
From: David Ahern @ 2017-04-10 20:45 UTC (permalink / raw)
To: Jesper Dangaard Brouer, Julien Desfossez
Cc: John Fastabend, Michael S. Tsirkin, xdp-newbies@vger.kernel.org
On 4/10/17 2:43 PM, Jesper Dangaard Brouer wrote:
>> So now, all I need is to make this check pass:
>> 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_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;
>> }
>>
>> I know running ethtool commands to disable those features does not change the
>> result.
>>
>> If you have an idea on how to solve this problem that would be great.
>
> Maybe someone on the xdp-newbies@vger.kernel.org list can help?
>
Pass this on the qemu command line for the device you want to run xdp:
"gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off,guest_ufo=off"
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: xdp on virtio_net
2017-04-10 20:45 ` David Ahern
@ 2017-04-10 23:39 ` Julien Desfossez
0 siblings, 0 replies; 3+ messages in thread
From: Julien Desfossez @ 2017-04-10 23:39 UTC (permalink / raw)
To: David Ahern
Cc: Jesper Dangaard Brouer, John Fastabend, Michael S. Tsirkin,
xdp-newbies@vger.kernel.org
On 10-Apr-2017 02:45:10 PM, David Ahern wrote:
> On 4/10/17 2:43 PM, Jesper Dangaard Brouer wrote:
> >> So now, all I need is to make this check pass:
> >> 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_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;
> >> }
> >>
> >> I know running ethtool commands to disable those features does not change the
> >> result.
> >>
> >> If you have an idea on how to solve this problem that would be great.
> >
> > Maybe someone on the xdp-newbies@vger.kernel.org list can help?
> >
>
> Pass this on the qemu command line for the device you want to run xdp:
>
> "gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off,guest_ufo=off"
Awesome, it works !
If others want to do it with libvirt/virsh instead of the qemu command line,
here is the right incantation to add to the "interface" section (with 4 vCPUs):
<driver name='vhost' queues='8'>
<host tso4='off' tso6='off' ecn='off' ufo='off'/>
<guest tso4='off' tso6='off' ecn='off' ufo='off'/>
</driver>
Thanks !
Julien
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-04-10 23:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <8ec1432f-b032-0e2c-5e07-cee4550f97b7@klipix.org>
[not found] ` <20170408140110.27d0fe80@redhat.com>
[not found] ` <20170410161833.GK4714@microsoft.com>
2017-04-10 20:43 ` xdp on virtio_net Jesper Dangaard Brouer
2017-04-10 20:45 ` David Ahern
2017-04-10 23:39 ` Julien Desfossez
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.