Mon, Mar 02, 2020 at 02:20:16PM CET, pablo@xxxxxxxxxxxxx wrote: >On Sun, Mar 01, 2020 at 09:44:43AM +0100, Jiri Pirko wrote: >> Sat, Feb 29, 2020 at 08:29:47PM CET, pablo@xxxxxxxxxxxxx wrote: >> >On Fri, Feb 28, 2020 at 06:24:54PM +0100, Jiri Pirko wrote: >[...] >> >> diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h >> >> index 4e864c34a1b0..eee1cbc5db3c 100644 >> >> --- a/include/net/flow_offload.h >> >> +++ b/include/net/flow_offload.h >> >> @@ -154,6 +154,10 @@ enum flow_action_mangle_base { >> >> FLOW_ACT_MANGLE_HDR_TYPE_UDP, >> >> }; >> >> >> >> +enum flow_action_hw_stats_type { >> >> + FLOW_ACTION_HW_STATS_TYPE_ANY, >> >> +}; >> >> + >> >> typedef void (*action_destr)(void *priv); >> >> >> >> struct flow_action_cookie { >> >> @@ -168,6 +172,7 @@ void flow_action_cookie_destroy(struct flow_action_cookie *cookie); >> >> >> >> struct flow_action_entry { >> >> enum flow_action_id id; >> >> + enum flow_action_hw_stats_type hw_stats_type; >> >> action_destr destructor; >> >> void *destructor_priv; >> >> union { >> >> @@ -228,6 +233,7 @@ struct flow_action_entry { >> >> }; >> >> >> >> struct flow_action { >> >> + bool mixed_hw_stats_types; >> > >> >Why do you want to place this built-in into the struct flow_action as >> >a boolean? >> >> Because it is convenient for the driver to know if multiple hw_stats_type >> values are used for multiple actions. >> >> >You can express the same thing through a new FLOW_ACTION_COUNTER. >[...] >> >Please, explain me why it would be a problem from the driver side to >> >provide a separated counter action. >> >> I don't see any point in doing that. The action itself implies that has >> stats, you don't need a separate action for that for the flow_offload >> abstraction layer. What you would end up with is: >> counter_action1, actual_action1, counter_action2, actual_action2,... >> >> What is the point of that? > >Yes, it's a bit more work for tc to generate counter action + actual >action. > >However, netfilter has two ways to use counters: > >1) per-rule counter, in this case the counter is updated after rule > matching, right before calling the action. This is the legacy mode. > >2) explicit counter action, in this case the user specifies explicitly > that it needs a counter in a given position of the rule. This > counter might come before or after the actual action. > >ethtool does not have counters yet. Now there is a netlink interface >for it, there might be counters there at some point. > >I'm suggesting a model that would work for the existing front-ends >using the flow_action API. I see. I'm interested in 1) now. If you ever want to implement 2), I see no problem in doing it.