On Thu, 14 Dec 2017 14:10:45 +0100, Jiri Pirko wrote:
> >Why? Just a namechange?
> >
> >
> >>IIUC the problem is we don't know whether the driver/callee of the new
> >>port is aware of previous callbacks/filters and we can't replay them.
>
> Well, the problem is a bit different.
> There are 2 scenarios when we need to fail here:
> 1) tc offload feature is turned off, there are some filters offloaded in
> the block. That is what I commented above.
> 2) tc offload feature is turned on, there are some filters offloaded in
> the block but the block is not accounted by the driver. This is
> because of the lack or replay. This is taken care of in the beginning
> of __tcf_block_cb_register function - see below, there is a comment
> there.
Restating in code terms, shouldn't this:
+ tcf_block_offload_cmd(block, dev, ei, TC_BLOCK_BIND);
+ return 0;
return the error like this:
return tcf_block_offload_cmd(block, dev, ei, TC_BLOCK_BIND);
We expect simple drivers to do this:
case TC_BLOCK_BIND:
return tcf_block_cb_register(f->block, mycb,
priv, priv);
Which will return an error for shared offloaded block, just need to
propagate it.