diff mbox series

[net,6/7] virtio_net: Use xdp_return_frame to free xdp_frames on destroying vqs

Message ID 1547724045-2726-7-git-send-email-makita.toshiaki@lab.ntt.co.jp
State Changes Requested
Delegated to: David Miller
Headers show
Series virtio_net: Fix problems around XDP tx and napi_tx | expand

Commit Message

Toshiaki Makita Jan. 17, 2019, 11:20 a.m. UTC
put_page() can work as a fallback for freeing xdp_frames, but the
appropriate way is to use xdp_return_frame().

Fixes: cac320c850ef ("virtio_net: convert to use generic xdp_frame and xdp_return_frame API")
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
---
 drivers/net/virtio_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jason Wang Jan. 17, 2019, 12:56 p.m. UTC | #1
On 2019/1/17 下午7:20, Toshiaki Makita wrote:
> put_page() can work as a fallback for freeing xdp_frames, but the
> appropriate way is to use xdp_return_frame().
>
> Fixes: cac320c850ef ("virtio_net: convert to use generic xdp_frame and xdp_return_frame API")
> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
> ---
>   drivers/net/virtio_net.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index ae93f0e..996de69 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -2668,7 +2668,7 @@ static void free_unused_bufs(struct virtnet_info *vi)
>   			if (!is_xdp_raw_buffer_queue(vi, i))
>   				dev_kfree_skb(buf);
>   			else
> -				put_page(virt_to_head_page(buf));
> +				xdp_return_frame(buf);
>   		}
>   	}
>   


Acked-by: Jason Wang <jasowang@redhat.com>
Jesper Dangaard Brouer Jan. 17, 2019, 1:39 p.m. UTC | #2
On Thu, 17 Jan 2019 20:56:39 +0800
Jason Wang <jasowang@redhat.com> wrote:

> On 2019/1/17 下午7:20, Toshiaki Makita wrote:
> > put_page() can work as a fallback for freeing xdp_frames, but the
> > appropriate way is to use xdp_return_frame().
> >
> > Fixes: cac320c850ef ("virtio_net: convert to use generic xdp_frame and xdp_return_frame API")
> > Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
> > ---
> >   drivers/net/virtio_net.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index ae93f0e..996de69 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -2668,7 +2668,7 @@ static void free_unused_bufs(struct virtnet_info *vi)
> >   			if (!is_xdp_raw_buffer_queue(vi, i))
> >   				dev_kfree_skb(buf);
> >   			else
> > -				put_page(virt_to_head_page(buf));
> > +				xdp_return_frame(buf);

I assume the is_xdp_raw_buffer_queue() test assures that this void *buf
is a struct xdp_frame.

> >   		}
> >   	}
> >     
> 
> 
> Acked-by: Jason Wang <jasowang@redhat.com>

Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
diff mbox series

Patch

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index ae93f0e..996de69 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -2668,7 +2668,7 @@  static void free_unused_bufs(struct virtnet_info *vi)
 			if (!is_xdp_raw_buffer_queue(vi, i))
 				dev_kfree_skb(buf);
 			else
-				put_page(virt_to_head_page(buf));
+				xdp_return_frame(buf);
 		}
 	}