On Fri, 24 May 2019 18:27:39 +0100, Edward Cree wrote:
> On 24/05/2019 18:03, Jakub Kicinski wrote:
> > On Fri, 24 May 2019 14:57:24 +0100, Edward Cree wrote:  
> >> Argh, there's a problem: an action doesn't have a (directly) associated
> >>  block, and all the TC offload machinery nowadays is built around blocks.
> >> Since this action might have been used in _any_ block (and afaik there's
> >>  no way, from the action, to find which) we'd have to make callbacks on
> >>  _every_ block in the system, which sounds like it'd perform even worse
> >>  than the rule-dumping approach.
> >> Any ideas?  
> > Simplest would be to keep a list of offloaders per action, but maybe
> > something more clever would appear as one rummages through the code.  
> Problem with that is where to put the list heads; you'd need something that
>  was allocated per action x block, for those blocks on which at least one
>  offloader handled the rule (in_hw_count > 0).

I was thinking of having the list per action, but I haven't looked at
the code TBH.  Driver would then request to be added to each action's
list..

> Then you'd also have to update that when a driver bound/unbound from a
>  block (fl_reoffload() time).
> Best I can think of is keeping the cls_flower.rule allocated in
>  fl_hw_replace_filter() around instead of immediately freeing it, and
>  having a list_head in each flow_action_entry.  But that really looks like
>  an overcomplicated mess.
> TBH I'm starting to wonder if just calling all tc blocks in existence is
>  really all that bad.  Is there a plausible use case with huge numbers of
>  bound blocks?

Once per RTM_GETACTION?  The simplicity of that has it's allure..
It doesn't give you an upstream user for a cookie, though :S

Reply via email to