On Thu, Sep 06, 2018 at 12:05:22PM +0800, Jason Wang wrote: > This will allow adding batch flushing on top. > > Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx> > --- > drivers/net/tun.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index 21b125020b3b..ff1cbf3ebd50 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c > @@ -1646,7 +1646,6 @@ static u32 tun_do_xdp(struct tun_struct *tun, > switch (act) { > case XDP_REDIRECT: > *err = xdp_do_redirect(tun->dev, xdp, xdp_prog); > - xdp_do_flush_map(); > if (*err) > break; > goto out; > @@ -1735,6 +1734,9 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, > act = tun_do_xdp(tun, tfile, xdp_prog, &xdp, &err); > if (err) > goto err_xdp; > + > + if (act == XDP_REDIRECT) > + xdp_do_flush_map(); > if (act != XDP_PASS) > goto out; At this point the switch statement which used to contain all XDP things seems to be gone completely. Just rewrite with a bunch of if statements and all xdp handling spread out to where it makes sense? > -- > 2.17.1