diff options
author | Paul Blakey <paulb@nvidia.com> | 2021-10-17 14:58:51 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-10-18 13:31:58 +0100 |
commit | 2dc4e9e88cfcc38454d52b01ed3422238c134003 (patch) | |
tree | 4f06d9227897803e594dd7e5851243e82b0f17a4 /net | |
parent | 342afce10d6f61c443c95e244f812d4766f73f53 (diff) | |
download | linux-2dc4e9e88cfcc38454d52b01ed3422238c134003.tar.gz linux-2dc4e9e88cfcc38454d52b01ed3422238c134003.tar.bz2 linux-2dc4e9e88cfcc38454d52b01ed3422238c134003.zip |
net/sched: act_ct: Fix byte count on fragmented packets
First fragmented packets (frag offset = 0) byte len is zeroed
when stolen by ip_defrag(). And since act_ct update the stats
only afterwards (at end of execute), bytes aren't correctly
accounted for such packets.
To fix this, move stats update to start of action execute.
Fixes: b57dc7c13ea9 ("net/sched: Introduce action ct")
Signed-off-by: Paul Blakey <paulb@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/sched/act_ct.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/act_ct.c b/net/sched/act_ct.c index ad9df0cb4b98..90866ae45573 100644 --- a/net/sched/act_ct.c +++ b/net/sched/act_ct.c @@ -960,6 +960,7 @@ static int tcf_ct_act(struct sk_buff *skb, const struct tc_action *a, tmpl = p->tmpl; tcf_lastuse_update(&c->tcf_tm); + tcf_action_update_bstats(&c->common, skb); if (clear) { qdisc_skb_cb(skb)->post_ct = false; @@ -1049,7 +1050,6 @@ out_push: qdisc_skb_cb(skb)->post_ct = true; out_clear: - tcf_action_update_bstats(&c->common, skb); if (defrag) qdisc_skb_cb(skb)->pkt_len = skb->len; return retval; |