On Thu, 01 Oct 2020 09:59:47 +0200 Johannes Berg wrote:
> On Wed, 2020-09-30 at 17:05 -0700, Jakub Kicinski wrote:
> > Right now CTRL_CMD_GETPOLICY can only dump the family-wide
> > policy. Support dumping policy of a specific op.
>
> So, hmm.
>
> Yeah, I guess this is fine, but you could end up having to do a lot of
> dumps, and with e.g. ethtool you'd end up with a lot of duplicate data
> too, since it's structured as
>
>
> common_policy = { ... }
>
> cmd1_policy = {
> [CMD1_COMMON] = NLA_NESTED_POLICY(common_policy),
> ...
> };
>
> cmd2_policy = {
> [CMD2_COMMON] = NLA_NESTED_POLICY(common_policy),
> ...
> };
>
> etc.
>
>
> So you end up dumping per command (and in practice, since they can be
> different, you now *have to* unless you know out-of-band that there are
> no per-command policies).
>
>
> Even if I don't have a good idea now on how to avoid the duplication, it
> might be nicer to have a (flag) attribute here for "CTRL_ATTR_ALL_OPS"?
Hm. How would you see the dump structured? We need to annotate the root
policies with the command. Right now I have:
[ATTR_FAMILY_ID]
[ATTR_OP]
[ATTR_POLICY]
[policy idx]
[attr idx]
[bla]
[bla]
[bla]
But if we're dumping _all_ the policy to op mapping is actually 1:n,
so we'd need to restructure the dump a lil' bit and have OP only
reported on root of the policy and make it a nested array.
Alternatively we could report OP -> policy mapping in a separate
message?
WDYT?