diff mbox series

[net-next,v3,1/9] net/sched: cls_api: add helper for tc cls walker stats updating

Message ID 20220915063038.20010-2-shaozhengchao@huawei.com (mailing list archive)
State New
Headers show
Series refactor duplicate codes in the tc cls walk function | expand

Commit Message

shaozhengchao Sept. 15, 2022, 6:30 a.m. UTC
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(+)

Comments

Cong Wang Sept. 15, 2022, 11:23 p.m. UTC | #1
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.
shaozhengchao Sept. 16, 2022, 1:58 a.m. UTC | #2
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 mbox series

Patch

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)
 {