tun: remove ndo_xdp_flush call tun_xdp_flush
authorJesper Dangaard Brouer <brouer@redhat.com>
Tue, 5 Jun 2018 11:55:45 +0000 (13:55 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 5 Jun 2018 12:03:16 +0000 (14:03 +0200)
Remove the ndo_xdp_flush call implementation tun_xdp_flush
as no callers of ndo_xdp_flush are left.

The tun drivers XDP_TX implementation also used tun_xdp_flush (and
tun_xdp_xmit).  This is easily solved by passing the XDP_XMIT_FLUSH
flag to tun_xdp_xmit in tun_xdp_tx.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
drivers/net/tun.c

index d82a05fb0594206b3b78b30f84156886a4e64327..ef09224496e8a1bbd6aec0651fa4cf44883badb9 100644 (file)
@@ -1347,26 +1347,7 @@ static int tun_xdp_tx(struct net_device *dev, struct xdp_buff *xdp)
        if (unlikely(!frame))
                return -EOVERFLOW;
 
-       return tun_xdp_xmit(dev, 1, &frame, 0);
-}
-
-static void tun_xdp_flush(struct net_device *dev)
-{
-       struct tun_struct *tun = netdev_priv(dev);
-       struct tun_file *tfile;
-       u32 numqueues;
-
-       rcu_read_lock();
-
-       numqueues = READ_ONCE(tun->numqueues);
-       if (!numqueues)
-               goto out;
-
-       tfile = rcu_dereference(tun->tfiles[smp_processor_id() %
-                                           numqueues]);
-       __tun_xdp_flush_tfile(tfile);
-out:
-       rcu_read_unlock();
+       return tun_xdp_xmit(dev, 1, &frame, XDP_XMIT_FLUSH);
 }
 
 static const struct net_device_ops tap_netdev_ops = {
@@ -1387,7 +1368,6 @@ static const struct net_device_ops tap_netdev_ops = {
        .ndo_get_stats64        = tun_net_get_stats64,
        .ndo_bpf                = tun_xdp,
        .ndo_xdp_xmit           = tun_xdp_xmit,
-       .ndo_xdp_flush          = tun_xdp_flush,
 };
 
 static void tun_flow_init(struct tun_struct *tun)
@@ -1706,7 +1686,6 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun,
                        alloc_frag->offset += buflen;
                        if (tun_xdp_tx(tun->dev, &xdp))
                                goto err_redirect;
-                       tun_xdp_flush(tun->dev);
                        rcu_read_unlock();
                        preempt_enable();
                        return NULL;