* [patch net-next v2 0/3] tools: ynl-gen: fix subset attributes handling
@ 2023-09-29 13:47 Jiri Pirko
2023-09-29 13:47 ` [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets Jiri Pirko
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Jiri Pirko @ 2023-09-29 13:47 UTC (permalink / raw)
To: netdev; +Cc: kuba, pabeni, davem, edumazet, donald.hunter
From: Jiri Pirko <jiri@nvidia.com>
Attributes defined in an attribute subset should just specify a list
of attributes of the original attribute set. The original attribute
definitions should be used. This patchset ensures that.
Jiri Pirko (3):
tools: ynl-gen: lift type requirement for attribute subsets
netlink: specs: remove redundant type keys from attributes in subsets
tools: ynl-gen: raise exception when subset attribute contains more
than "name" key
Documentation/netlink/genetlink-c.yaml | 2 +-
Documentation/netlink/genetlink-legacy.yaml | 2 +-
Documentation/netlink/genetlink.yaml | 2 +-
Documentation/netlink/netlink-raw.yaml | 2 +-
Documentation/netlink/specs/devlink.yaml | 10 ----------
Documentation/netlink/specs/dpll.yaml | 8 --------
Documentation/netlink/specs/ethtool.yaml | 3 ---
tools/net/ynl/lib/nlspec.py | 2 ++
tools/net/ynl/ynl-gen-c.py | 2 ++
9 files changed, 8 insertions(+), 25 deletions(-)
--
2.41.0
^ permalink raw reply [flat|nested] 11+ messages in thread* [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets 2023-09-29 13:47 [patch net-next v2 0/3] tools: ynl-gen: fix subset attributes handling Jiri Pirko @ 2023-09-29 13:47 ` Jiri Pirko 2023-10-05 0:12 ` Jakub Kicinski 2023-09-29 13:47 ` [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key Jiri Pirko 2 siblings, 1 reply; 11+ messages in thread From: Jiri Pirko @ 2023-09-29 13:47 UTC (permalink / raw) To: netdev; +Cc: kuba, pabeni, davem, edumazet, donald.hunter From: Jiri Pirko <jiri@nvidia.com> In case an attribute is used in a subset, the type has to be currently specified. As the attribute is already defined in the original set, this is a redundant information in yaml file, moreover, may lead to inconsistencies. Example: attribute-sets: ... name: pin enum-name: dpll_a_pin attributes: ... - name: parent-id type: u32 ... - name: pin-parent-device subset-of: pin attributes: - name: parent-id type: u32 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Remove the requirement from schema files to specify the "type" and add check and bail out if "type" is not set. Signed-off-by: Jiri Pirko <jiri@nvidia.com> --- Documentation/netlink/genetlink-c.yaml | 2 +- Documentation/netlink/genetlink-legacy.yaml | 2 +- Documentation/netlink/genetlink.yaml | 2 +- Documentation/netlink/netlink-raw.yaml | 2 +- tools/net/ynl/ynl-gen-c.py | 2 ++ 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Documentation/netlink/genetlink-c.yaml b/Documentation/netlink/genetlink-c.yaml index 9806c44f604c..80d8aa2708c5 100644 --- a/Documentation/netlink/genetlink-c.yaml +++ b/Documentation/netlink/genetlink-c.yaml @@ -142,7 +142,7 @@ properties: type: array items: type: object - required: [ name, type ] + required: [ name ] additionalProperties: False properties: name: diff --git a/Documentation/netlink/genetlink-legacy.yaml b/Documentation/netlink/genetlink-legacy.yaml index 12a0a045605d..2a21aae525a4 100644 --- a/Documentation/netlink/genetlink-legacy.yaml +++ b/Documentation/netlink/genetlink-legacy.yaml @@ -180,7 +180,7 @@ properties: type: array items: type: object - required: [ name, type ] + required: [ name ] additionalProperties: False properties: name: diff --git a/Documentation/netlink/genetlink.yaml b/Documentation/netlink/genetlink.yaml index 3d338c48bf21..9e8354f80466 100644 --- a/Documentation/netlink/genetlink.yaml +++ b/Documentation/netlink/genetlink.yaml @@ -115,7 +115,7 @@ properties: type: array items: type: object - required: [ name, type ] + required: [ name ] additionalProperties: False properties: name: diff --git a/Documentation/netlink/netlink-raw.yaml b/Documentation/netlink/netlink-raw.yaml index 896797876414..9aeb64b27ada 100644 --- a/Documentation/netlink/netlink-raw.yaml +++ b/Documentation/netlink/netlink-raw.yaml @@ -187,7 +187,7 @@ properties: type: array items: type: object - required: [ name, type ] + required: [ name ] additionalProperties: False properties: name: diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py index 897af958cee8..b378412a9d7a 100755 --- a/tools/net/ynl/ynl-gen-c.py +++ b/tools/net/ynl/ynl-gen-c.py @@ -723,6 +723,8 @@ class AttrSet(SpecAttrSet): self.c_name = '' def new_attr(self, elem, value): + if 'type' not in elem: + raise Exception(f"Type has to be set for attribute {elem['name']}") if elem['type'] in scalars: t = TypeScalar(self.family, self, elem, value) elif elem['type'] == 'unused': -- 2.41.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets 2023-09-29 13:47 ` [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets Jiri Pirko @ 2023-10-05 0:12 ` Jakub Kicinski 2023-10-05 7:23 ` Jiri Pirko 0 siblings, 1 reply; 11+ messages in thread From: Jakub Kicinski @ 2023-10-05 0:12 UTC (permalink / raw) To: Jiri Pirko; +Cc: netdev, pabeni, davem, edumazet, donald.hunter On Fri, 29 Sep 2023 15:47:40 +0200 Jiri Pirko wrote: > --- a/tools/net/ynl/ynl-gen-c.py > +++ b/tools/net/ynl/ynl-gen-c.py > @@ -723,6 +723,8 @@ class AttrSet(SpecAttrSet): > self.c_name = '' > > def new_attr(self, elem, value): > + if 'type' not in elem: > + raise Exception(f"Type has to be set for attribute {elem['name']}") > if elem['type'] in scalars: > t = TypeScalar(self.family, self, elem, value) > elif elem['type'] == 'unused': Can this still be enforced using JSON schema? Using dependencies to make sure that if subset-of is not present type is? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets 2023-10-05 0:12 ` Jakub Kicinski @ 2023-10-05 7:23 ` Jiri Pirko 0 siblings, 0 replies; 11+ messages in thread From: Jiri Pirko @ 2023-10-05 7:23 UTC (permalink / raw) To: Jakub Kicinski; +Cc: netdev, pabeni, davem, edumazet, donald.hunter Thu, Oct 05, 2023 at 02:12:02AM CEST, kuba@kernel.org wrote: >On Fri, 29 Sep 2023 15:47:40 +0200 Jiri Pirko wrote: >> --- a/tools/net/ynl/ynl-gen-c.py >> +++ b/tools/net/ynl/ynl-gen-c.py >> @@ -723,6 +723,8 @@ class AttrSet(SpecAttrSet): >> self.c_name = '' >> >> def new_attr(self, elem, value): >> + if 'type' not in elem: >> + raise Exception(f"Type has to be set for attribute {elem['name']}") >> if elem['type'] in scalars: >> t = TypeScalar(self.family, self, elem, value) >> elif elem['type'] == 'unused': > >Can this still be enforced using JSON schema? Using dependencies >to make sure that if subset-of is not present type is? I have no clue. I know very little about json schema. I can take a look. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets 2023-09-29 13:47 [patch net-next v2 0/3] tools: ynl-gen: fix subset attributes handling Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets Jiri Pirko @ 2023-09-29 13:47 ` Jiri Pirko 2023-10-05 0:12 ` Jakub Kicinski 2023-09-29 13:47 ` [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key Jiri Pirko 2 siblings, 1 reply; 11+ messages in thread From: Jiri Pirko @ 2023-09-29 13:47 UTC (permalink / raw) To: netdev; +Cc: kuba, pabeni, davem, edumazet, donald.hunter From: Jiri Pirko <jiri@nvidia.com> No longer needed to define type for subset attributes. Remove those. Signed-off-by: Jiri Pirko <jiri@nvidia.com> --- v1->v2: - new patch --- Documentation/netlink/specs/devlink.yaml | 10 ---------- Documentation/netlink/specs/dpll.yaml | 8 -------- Documentation/netlink/specs/ethtool.yaml | 3 --- 3 files changed, 21 deletions(-) diff --git a/Documentation/netlink/specs/devlink.yaml b/Documentation/netlink/specs/devlink.yaml index d1ebcd927149..86a12c5bcff1 100644 --- a/Documentation/netlink/specs/devlink.yaml +++ b/Documentation/netlink/specs/devlink.yaml @@ -199,54 +199,44 @@ attribute-sets: attributes: - name: reload-stats - type: nest - name: remote-reload-stats - type: nest - name: dl-reload-stats subset-of: devlink attributes: - name: reload-action-info - type: nest - name: dl-reload-act-info subset-of: devlink attributes: - name: reload-action - type: u8 - name: reload-action-stats - type: nest - name: dl-reload-act-stats subset-of: devlink attributes: - name: reload-stats-entry - type: nest - name: dl-reload-stats-entry subset-of: devlink attributes: - name: reload-stats-limit - type: u8 - name: reload-stats-value - type: u32 - name: dl-info-version subset-of: devlink attributes: - name: info-version-name - type: string - name: info-version-value - type: string operations: enum-model: directional diff --git a/Documentation/netlink/specs/dpll.yaml b/Documentation/netlink/specs/dpll.yaml index 8b86b28b47a6..1c1b53136c7b 100644 --- a/Documentation/netlink/specs/dpll.yaml +++ b/Documentation/netlink/specs/dpll.yaml @@ -278,36 +278,28 @@ attribute-sets: attributes: - name: parent-id - type: u32 - name: direction - type: u32 - name: prio - type: u32 - name: state - type: u32 - name: pin-parent-pin subset-of: pin attributes: - name: parent-id - type: u32 - name: state - type: u32 - name: frequency-range subset-of: pin attributes: - name: frequency-min - type: u64 - name: frequency-max - type: u64 operations: enum-name: dpll_cmd diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml index 837b565577ca..5c7a65b009b4 100644 --- a/Documentation/netlink/specs/ethtool.yaml +++ b/Documentation/netlink/specs/ethtool.yaml @@ -818,13 +818,10 @@ attribute-sets: attributes: - name: hist-bkt-low - type: u32 - name: hist-bkt-hi - type: u32 - name: hist-val - type: u64 - name: stats attributes: -- 2.41.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets 2023-09-29 13:47 ` [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets Jiri Pirko @ 2023-10-05 0:12 ` Jakub Kicinski 0 siblings, 0 replies; 11+ messages in thread From: Jakub Kicinski @ 2023-10-05 0:12 UTC (permalink / raw) To: Jiri Pirko; +Cc: netdev, pabeni, davem, edumazet, donald.hunter On Fri, 29 Sep 2023 15:47:41 +0200 Jiri Pirko wrote: > From: Jiri Pirko <jiri@nvidia.com> > > No longer needed to define type for subset attributes. Remove those. > > Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key 2023-09-29 13:47 [patch net-next v2 0/3] tools: ynl-gen: fix subset attributes handling Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets Jiri Pirko @ 2023-09-29 13:47 ` Jiri Pirko 2023-10-05 0:13 ` Jakub Kicinski 2 siblings, 1 reply; 11+ messages in thread From: Jiri Pirko @ 2023-09-29 13:47 UTC (permalink / raw) To: netdev; +Cc: kuba, pabeni, davem, edumazet, donald.hunter From: Jiri Pirko <jiri@nvidia.com> The only key used in the elem dictionary is "name" to lookup the real attribute of a set. Raise exception in case there are other keys present. Signed-off-by: Jiri Pirko <jiri@nvidia.com> --- v1->v2: - new patch --- tools/net/ynl/lib/nlspec.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/net/ynl/lib/nlspec.py b/tools/net/ynl/lib/nlspec.py index 37bcb4d8b37b..12e15ac70309 100644 --- a/tools/net/ynl/lib/nlspec.py +++ b/tools/net/ynl/lib/nlspec.py @@ -208,6 +208,8 @@ class SpecAttrSet(SpecElement): attr = real_set[elem['name']] self.attrs[attr.name] = attr self.attrs_by_val[attr.value] = attr + if (len(elem.keys()) > 1): + raise Exception(f"Subset attribute '{elem['name']}' contains other keys") def new_attr(self, elem, value): return SpecAttr(self.family, self, elem, value) -- 2.41.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key 2023-09-29 13:47 ` [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key Jiri Pirko @ 2023-10-05 0:13 ` Jakub Kicinski 2023-10-05 7:25 ` Jiri Pirko 0 siblings, 1 reply; 11+ messages in thread From: Jakub Kicinski @ 2023-10-05 0:13 UTC (permalink / raw) To: Jiri Pirko; +Cc: netdev, pabeni, davem, edumazet, donald.hunter On Fri, 29 Sep 2023 15:47:42 +0200 Jiri Pirko wrote: > From: Jiri Pirko <jiri@nvidia.com> > > The only key used in the elem dictionary is "name" to lookup the real > attribute of a set. Raise exception in case there are other keys > present. Mm, there are definitely other things that can be set. I'm not fully sold that type can't change but even if - checks can easily be adjusted or nested-attributes, based on the parsing path. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key 2023-10-05 0:13 ` Jakub Kicinski @ 2023-10-05 7:25 ` Jiri Pirko 2023-10-05 14:21 ` Jakub Kicinski 0 siblings, 1 reply; 11+ messages in thread From: Jiri Pirko @ 2023-10-05 7:25 UTC (permalink / raw) To: Jakub Kicinski; +Cc: netdev, pabeni, davem, edumazet, donald.hunter Thu, Oct 05, 2023 at 02:13:50AM CEST, kuba@kernel.org wrote: >On Fri, 29 Sep 2023 15:47:42 +0200 Jiri Pirko wrote: >> From: Jiri Pirko <jiri@nvidia.com> >> >> The only key used in the elem dictionary is "name" to lookup the real >> attribute of a set. Raise exception in case there are other keys >> present. > >Mm, there are definitely other things that can be set. I'm not fully Which ones? The name is used, the rest is ignored in the existing code. I just make this obvious to the user. If future show other keys are needed here, the patch adding that would just adjust the exception condition. Do you see any problem in that? >sold that type can't change but even if - checks can easily be adjusted >or nested-attributes, based on the parsing path. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key 2023-10-05 7:25 ` Jiri Pirko @ 2023-10-05 14:21 ` Jakub Kicinski 2023-10-05 14:50 ` Jiri Pirko 0 siblings, 1 reply; 11+ messages in thread From: Jakub Kicinski @ 2023-10-05 14:21 UTC (permalink / raw) To: Jiri Pirko; +Cc: netdev, pabeni, davem, edumazet, donald.hunter On Thu, 5 Oct 2023 09:25:55 +0200 Jiri Pirko wrote: > >> The only key used in the elem dictionary is "name" to lookup the real > >> attribute of a set. Raise exception in case there are other keys > >> present. > > > >Mm, there are definitely other things that can be set. I'm not fully > > Which ones? The name is used, the rest is ignored in the existing code. > I just make this obvious to the user. If future show other keys are > needed here, the patch adding that would just adjust the exception > condition. Do you see any problem in that? Just don't want to give people the impression that this is what's intended, rather than it was simply not implemented yet. If you want to keep the exception please update the message (and the if, no outer brackets necessary in Python ;)). ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key 2023-10-05 14:21 ` Jakub Kicinski @ 2023-10-05 14:50 ` Jiri Pirko 0 siblings, 0 replies; 11+ messages in thread From: Jiri Pirko @ 2023-10-05 14:50 UTC (permalink / raw) To: Jakub Kicinski; +Cc: netdev, pabeni, davem, edumazet, donald.hunter Thu, Oct 05, 2023 at 04:21:51PM CEST, kuba@kernel.org wrote: >On Thu, 5 Oct 2023 09:25:55 +0200 Jiri Pirko wrote: >> >> The only key used in the elem dictionary is "name" to lookup the real >> >> attribute of a set. Raise exception in case there are other keys >> >> present. >> > >> >Mm, there are definitely other things that can be set. I'm not fully >> >> Which ones? The name is used, the rest is ignored in the existing code. >> I just make this obvious to the user. If future show other keys are >> needed here, the patch adding that would just adjust the exception >> condition. Do you see any problem in that? > >Just don't want to give people the impression that this is what's >intended, rather than it was simply not implemented yet. >If you want to keep the exception please update the message >(and the if, no outer brackets necessary in Python ;)). I don't mind dropping the patch entirely. I just thought it would be nice to do some sanitization so the user is not surprised that other possible keys are ignored. I tried and I was :) ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-10-05 15:01 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-09-29 13:47 [patch net-next v2 0/3] tools: ynl-gen: fix subset attributes handling Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 1/3] tools: ynl-gen: lift type requirement for attribute subsets Jiri Pirko 2023-10-05 0:12 ` Jakub Kicinski 2023-10-05 7:23 ` Jiri Pirko 2023-09-29 13:47 ` [patch net-next v2 2/3] netlink: specs: remove redundant type keys from attributes in subsets Jiri Pirko 2023-10-05 0:12 ` Jakub Kicinski 2023-09-29 13:47 ` [patch net-next v2 3/3] tools: ynl-gen: raise exception when subset attribute contains more than "name" key Jiri Pirko 2023-10-05 0:13 ` Jakub Kicinski 2023-10-05 7:25 ` Jiri Pirko 2023-10-05 14:21 ` Jakub Kicinski 2023-10-05 14:50 ` Jiri Pirko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).