Message ID | 20220915063038.20010-2-shaozhengchao@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | refactor duplicate codes in the tc cls walk function | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/subject_prefix | success | Link |
netdev/cover_letter | success | Series has a cover letter |
netdev/patch_count | success | Link |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 67 this patch: 67 |
netdev/cc_maintainers | success | CCed 9 of 9 maintainers |
netdev/build_clang | success | Errors and warnings before: 8 this patch: 8 |
netdev/module_param | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 81 this patch: 81 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 19 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On Thu, Sep 15, 2022 at 02:30:30PM +0800, Zhengchao Shao wrote: > The walk implementation of most tc cls modules is basically the same. > That is, the values of count and skip are checked first. If count is > greater than or equal to skip, the registered fn function is executed. > Otherwise, increase the value of count. So we can reconstruct them. > > Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> > Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> > --- > include/net/pkt_cls.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h > index d9d90e6925e1..d3cbbabf7592 100644 > --- a/include/net/pkt_cls.h > +++ b/include/net/pkt_cls.h > @@ -81,6 +81,19 @@ int tcf_classify(struct sk_buff *skb, > const struct tcf_proto *tp, struct tcf_result *res, > bool compat_mode); > > +static inline bool tc_cls_stats_update(struct tcf_proto *tp, This function name is confusing, I don't think it updates anything, probably we only dump stats when calling ->walk(). Please use a better name here, like tc_cls_stats_dump(). Thanks.
On 2022/9/16 7:23, Cong Wang wrote: > On Thu, Sep 15, 2022 at 02:30:30PM +0800, Zhengchao Shao wrote: >> The walk implementation of most tc cls modules is basically the same. >> That is, the values of count and skip are checked first. If count is >> greater than or equal to skip, the registered fn function is executed. >> Otherwise, increase the value of count. So we can reconstruct them. >> >> Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> >> Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> >> --- >> include/net/pkt_cls.h | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h >> index d9d90e6925e1..d3cbbabf7592 100644 >> --- a/include/net/pkt_cls.h >> +++ b/include/net/pkt_cls.h >> @@ -81,6 +81,19 @@ int tcf_classify(struct sk_buff *skb, >> const struct tcf_proto *tp, struct tcf_result *res, >> bool compat_mode); >> >> +static inline bool tc_cls_stats_update(struct tcf_proto *tp, > > This function name is confusing, I don't think it updates anything, > probably we only dump stats when calling ->walk(). Please use a better > name here, like tc_cls_stats_dump(). > > Thanks. Hi Wang: Thank you for your review. I will send V4. Zhengchao Shao
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index d9d90e6925e1..d3cbbabf7592 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -81,6 +81,19 @@ int tcf_classify(struct sk_buff *skb, const struct tcf_proto *tp, struct tcf_result *res, bool compat_mode); +static inline bool tc_cls_stats_update(struct tcf_proto *tp, + struct tcf_walker *arg, + void *filter) +{ + if (arg->count >= arg->skip && arg->fn(tp, filter, arg) < 0) { + arg->stop = 1; + return false; + } + + arg->count++; + return true; +} + #else static inline bool tcf_block_shared(struct tcf_block *block) {