Xuan Zhuo
2021-Jun-17 05:53 UTC
[PATCH net-next v5 13/15] virtio-net: support AF_XDP zc rx
On Thu, 17 Jun 2021 11:23:52 +0800, Jason Wang <jasowang at redhat.com> wrote:> > ? 2021/6/10 ??4:22, Xuan Zhuo ??: > > Compared to the case of xsk tx, the case of xsk zc rx is more > > complicated. > > > > When we process the buf received by vq, we may encounter ordinary > > buffers, or xsk buffers. What makes the situation more complicated is > > that in the case of mergeable, when num_buffer > 1, we may still > > encounter the case where xsk buffer is mixed with ordinary buffer. > > > > Another thing that makes the situation more complicated is that when we > > get an xsk buffer from vq, the xsk bound to this xsk buffer may have > > been unbound. > > > > Signed-off-by: Xuan Zhuo <xuanzhuo at linux.alibaba.com> > > > This is somehow similar to the case of tx where we don't have per vq reset. > > [...] > > > > > - if (vi->mergeable_rx_bufs) > > + if (is_xsk_ctx(ctx)) > > + skb = receive_xsk(dev, vi, rq, buf, len, xdp_xmit, stats); > > + else if (vi->mergeable_rx_bufs) > > skb = receive_mergeable(dev, vi, rq, buf, ctx, len, xdp_xmit, > > stats); > > else if (vi->big_packets) > > @@ -1175,6 +1296,14 @@ static bool try_fill_recv(struct virtnet_info *vi, struct receive_queue *rq, > > int err; > > bool oom; > > > > + /* Because virtio-net does not yet support flow direct, > > > Note that this is not the case any more. RSS has been supported by > virtio spec and qemu/vhost/tap now. We just need some work on the > virtio-net driver part (e.g the ethool interface).Oh, are there any plans? Who is doing this work, can I help? Thanks.> > Thanks > >
Jason Wang
2021-Jun-17 06:03 UTC
[PATCH net-next v5 13/15] virtio-net: support AF_XDP zc rx
? 2021/6/17 ??1:53, Xuan Zhuo ??:> On Thu, 17 Jun 2021 11:23:52 +0800, Jason Wang <jasowang at redhat.com> wrote: >> ? 2021/6/10 ??4:22, Xuan Zhuo ??: >>> Compared to the case of xsk tx, the case of xsk zc rx is more >>> complicated. >>> >>> When we process the buf received by vq, we may encounter ordinary >>> buffers, or xsk buffers. What makes the situation more complicated is >>> that in the case of mergeable, when num_buffer > 1, we may still >>> encounter the case where xsk buffer is mixed with ordinary buffer. >>> >>> Another thing that makes the situation more complicated is that when we >>> get an xsk buffer from vq, the xsk bound to this xsk buffer may have >>> been unbound. >>> >>> Signed-off-by: Xuan Zhuo <xuanzhuo at linux.alibaba.com> >> >> This is somehow similar to the case of tx where we don't have per vq reset. >> >> [...] >> >>> - if (vi->mergeable_rx_bufs) >>> + if (is_xsk_ctx(ctx)) >>> + skb = receive_xsk(dev, vi, rq, buf, len, xdp_xmit, stats); >>> + else if (vi->mergeable_rx_bufs) >>> skb = receive_mergeable(dev, vi, rq, buf, ctx, len, xdp_xmit, >>> stats); >>> else if (vi->big_packets) >>> @@ -1175,6 +1296,14 @@ static bool try_fill_recv(struct virtnet_info *vi, struct receive_queue *rq, >>> int err; >>> bool oom; >>> >>> + /* Because virtio-net does not yet support flow direct, >> >> Note that this is not the case any more. RSS has been supported by >> virtio spec and qemu/vhost/tap now. We just need some work on the >> virtio-net driver part (e.g the ethool interface). > Oh, are there any plans? Who is doing this work, can I help?Qemu and spec has support RSS. TAP support is ready via steering eBPF program, you can try to play it with current qemu master. The only thing missed is the Linux driver, I think Yuri or Andrew is working on this. Thanks> > Thanks. > >> Thanks >> >>