diff options
author | Zhengchao Shao <shaozhengchao@huawei.com> | 2022-09-16 05:02:44 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-09-21 01:54:13 +0300 |
commit | 5508ff7cf3750f4a2ab1354754859bb949c0d692 (patch) | |
tree | 5edce42504ef9d82cf652e383447c4cba2d3abde /net/sched/cls_u32.c | |
parent | fe0df81df51eb932a83e0c3844106ac6c0f914db (diff) | |
download | linux-5508ff7cf3750f4a2ab1354754859bb949c0d692.tar.xz |
net/sched: use tc_cls_stats_dump() in filter
use tc_cls_stats_dump() in filter.
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Victor Nogueira <victor@mojatatu.com>
Tested-by: Victor Nogueira <victor@mojatatu.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/sched/cls_u32.c')
-rw-r--r-- | net/sched/cls_u32.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 4d27300c287c..58c7680faabd 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -1125,26 +1125,16 @@ static void u32_walk(struct tcf_proto *tp, struct tcf_walker *arg, ht = rtnl_dereference(ht->next)) { if (ht->prio != tp->prio) continue; - if (arg->count >= arg->skip) { - if (arg->fn(tp, ht, arg) < 0) { - arg->stop = 1; - return; - } - } - arg->count++; + + if (!tc_cls_stats_dump(tp, arg, ht)) + return; + for (h = 0; h <= ht->divisor; h++) { for (n = rtnl_dereference(ht->ht[h]); n; n = rtnl_dereference(n->next)) { - if (arg->count < arg->skip) { - arg->count++; - continue; - } - if (arg->fn(tp, n, arg) < 0) { - arg->stop = 1; + if (!tc_cls_stats_dump(tp, arg, n)) return; - } - arg->count++; } } } |