Re: [PATCH RFC 4/9] veth: Use NAPI for XDP

2018-05-01 Thread Toshiaki Makita
On 18/05/01 (火) 17:43, Jesper Dangaard Brouer wrote: On Tue, 1 May 2018 17:02:34 +0900 Toshiaki Makita wrote: On 2018/05/01 16:50, Jesper Dangaard Brouer wrote: On Tue, 24 Apr 2018 23:39:18 +0900 Toshiaki Makita wrote: +static int veth_xdp_enqueue(struct veth_priv *priv, void *ptr) +{ +

Re: [PATCH RFC 4/9] veth: Use NAPI for XDP

2018-05-01 Thread Jesper Dangaard Brouer
On Tue, 1 May 2018 17:02:34 +0900 Toshiaki Makita wrote: > On 2018/05/01 16:50, Jesper Dangaard Brouer wrote: > > On Tue, 24 Apr 2018 23:39:18 +0900 > > Toshiaki Makita wrote: > > > >> +static int veth_xdp_enqueue(struct veth_priv *priv, void *ptr) > >> +{ > >> + if (unlikely(ptr_ring_produc

Re: [PATCH RFC 4/9] veth: Use NAPI for XDP

2018-05-01 Thread Toshiaki Makita
On 2018/05/01 16:50, Jesper Dangaard Brouer wrote: > On Tue, 24 Apr 2018 23:39:18 +0900 > Toshiaki Makita wrote: > >> +static int veth_xdp_enqueue(struct veth_priv *priv, void *ptr) >> +{ >> +if (unlikely(ptr_ring_produce(&priv->xdp_ring, ptr))) >> +return -ENOSPC; >> + >> +re

Re: [PATCH RFC 4/9] veth: Use NAPI for XDP

2018-05-01 Thread Jesper Dangaard Brouer
On Tue, 24 Apr 2018 23:39:18 +0900 Toshiaki Makita wrote: > +static int veth_xdp_enqueue(struct veth_priv *priv, void *ptr) > +{ > + if (unlikely(ptr_ring_produce(&priv->xdp_ring, ptr))) > + return -ENOSPC; > + > + return 0; > +} Here we have a lock per (enqueued) packet. I'

[PATCH RFC 4/9] veth: Use NAPI for XDP

2018-04-24 Thread Toshiaki Makita
From: Toshiaki Makita In order to avoid stack inflation by recursive XDP program call from ndo_xdp_xmit, this change introduces NAPI in veth. Add veth's own NAPI handler when XDP is enabled. Use ptr_ring to emulate NIC ring. Tx function enqueues packets to the ring and peer NAPI handler drains t