virtnet_sq_free_unused_buf() check xsk buffer.

Signed-off-by: Xuan Zhuo <xuanz...@linux.alibaba.com>
Acked-by: Jason Wang <jasow...@redhat.com>
---
 drivers/net/virtio/main.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/virtio/main.c b/drivers/net/virtio/main.c
index cb0a1ea712de..e64d52e7d95b 100644
--- a/drivers/net/virtio/main.c
+++ b/drivers/net/virtio/main.c
@@ -4081,10 +4081,12 @@ void virtnet_sq_free_unused_bufs(struct virtqueue *vq)
        while ((buf = virtqueue_detach_unused_buf_dma(vq, dma)) != NULL) {
                virtnet_sq_unmap_buf(sq, dma);
 
-               if (!virtnet_is_xdp_frame(buf))
+               if (virtnet_is_skb_ptr(buf))
                        dev_kfree_skb(buf);
-               else
+               else if (virtnet_is_xdp_frame(buf))
                        xdp_return_frame(virtnet_ptr_to_xdp(buf));
+               else
+                       xsk_tx_completed(sq->xsk.pool, 1);
        }
 }
 
-- 
2.32.0.3.g01195cf9f


Reply via email to