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 |
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>
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 --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); } }
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(-)