qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC net-next 11/18] tun: run xdp prog when tun is read from file interf


From: Prashant Bhole
Subject: [RFC net-next 11/18] tun: run xdp prog when tun is read from file interface
Date: Tue, 26 Nov 2019 19:07:37 +0900

It handles the case when qemu performs read on tun using file
operations.

Signed-off-by: Prashant Bhole <address@hidden>
---
 drivers/net/tun.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 084ca95358fe..639921c10e32 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -2318,8 +2318,10 @@ static ssize_t tun_do_read(struct tun_struct *tun, 
struct tun_file *tfile,
                           struct iov_iter *to,
                           int noblock, void *ptr)
 {
+       struct xdp_frame *frame;
        ssize_t ret;
        int err;
+       u32 act;
 
        tun_debug(KERN_INFO, tun, "tun_do_read\n");
 
@@ -2333,6 +2335,15 @@ static ssize_t tun_do_read(struct tun_struct *tun, 
struct tun_file *tfile,
                ptr = tun_ring_recv(tfile, noblock, &err);
                if (!ptr)
                        return err;
+
+               if (tun_is_xdp_frame(ptr)) {
+                       frame = tun_ptr_to_xdp(ptr);
+                       act = tun_do_xdp_offload(tun, tfile, frame);
+               } else {
+                       act = tun_do_xdp_offload_generic(tun, ptr);
+               }
+               if (act != XDP_PASS)
+                       return err;
        }
 
        if (tun_is_xdp_frame(ptr)) {
-- 
2.20.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]