On 2019/12/2 上午12:35, David Ahern wrote:
On 11/26/19 4:07 AM, Prashant Bhole wrote:
From: Jason Wang <jasowang@xxxxxxxxxx>
This patch introduces an ioctl way to set an offloaded XDP program
to tun driver. This ioctl will be used by qemu to offload XDP program
from virtio_net in the guest.
Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx>
Signed-off-by: Prashant Bhole <prashantbhole.linux@xxxxxxxxx>
---
drivers/net/tun.c | 19 ++++++++++++++-----
include/uapi/linux/if_tun.h | 1 +
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index d078b4659897..ecb49101b0b5 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -241,6 +241,7 @@ struct tun_struct {
struct bpf_prog __rcu *xdp_prog;
struct tun_prog __rcu *steering_prog;
struct tun_prog __rcu *filter_prog;
+ struct tun_prog __rcu *offloaded_xdp_prog;
I have been looking into running XDP pograms in the TX path of a tap
device [1] where the program is installed and managed by a process in
the host. The code paths are the same as what you are doing with XDP
offload, so how about calling this xdp_prog_tx?
[1]
https://github.com/dsahern/linux/commit/f2303d05187c8a604cdb70b288338e9b1d1b0db6
I think it's fine, btw, except for the netlink part there should be no
much difference.
Thanks