diff options
author | David S. Miller <davem@davemloft.net> | 2024-01-22 10:58:05 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-01-22 10:58:05 +0000 |
commit | ef48521672452aa7a5da1cb91160822eda6e4403 (patch) | |
tree | 93fff71a9c972aa9dd4ef5a49fdeb7ab7bf788a1 | |
parent | d09486a04f5da0a812c26217213b89a3b1acf836 (diff) | |
parent | f1084c427f55d573fcd5688d9ba7b31b78019716 (diff) |
Merge branch 'tun-fixes'
Yunjian Wang says:
====================
fixes for tun
There are few places on the receive path where packet receives and
packet drops were not accounted for. This patchset fixes that issue.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/tun.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index afa5497f7c35..4a4f8c8e79fa 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1630,13 +1630,19 @@ static int tun_xdp_act(struct tun_struct *tun, struct bpf_prog *xdp_prog, switch (act) { case XDP_REDIRECT: err = xdp_do_redirect(tun->dev, xdp, xdp_prog); - if (err) + if (err) { + dev_core_stats_rx_dropped_inc(tun->dev); return err; + } + dev_sw_netstats_rx_add(tun->dev, xdp->data_end - xdp->data); break; case XDP_TX: err = tun_xdp_tx(tun->dev, xdp); - if (err < 0) + if (err < 0) { + dev_core_stats_rx_dropped_inc(tun->dev); return err; + } + dev_sw_netstats_rx_add(tun->dev, xdp->data_end - xdp->data); break; case XDP_PASS: break; |