Message ID | 20230713090550.132858-2-arkadiusz.kubalewski@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | tools: ynl-gen: fix parse multi-attr enum attribute | expand |
On Thu, 13 Jul 2023 11:05:49 +0200 Arkadiusz Kubalewski wrote: > - i = attr_spec.get('value-start', 0) > if 'enum-as-flags' in attr_spec and attr_spec['enum-as-flags']: > value = set() > while raw: > if raw & 1: > - value.add(enum.entries_by_val[i].name) > + value.add(enum.entries_by_val[raw & 1].name) > raw >>= 1 > - i += 1 This doesn't make sense, as I suggested you need to keep i for this loop. Move it to the inside of the if 'enum-as-fla... and init to 0. i is tracking which bit number we are at as we consume / shift out bits from raw. Have you ever used ChatGPT? No shame, just curious.
>From: Jakub Kicinski <kuba@kernel.org> >Sent: Thursday, July 13, 2023 6:03 PM > >On Thu, 13 Jul 2023 11:05:49 +0200 Arkadiusz Kubalewski wrote: >> - i = attr_spec.get('value-start', 0) >> if 'enum-as-flags' in attr_spec and attr_spec['enum-as-flags']: >> value = set() >> while raw: >> if raw & 1: >> - value.add(enum.entries_by_val[i].name) >> + value.add(enum.entries_by_val[raw & 1].name) >> raw >>= 1 >> - i += 1 > >This doesn't make sense, as I suggested you need to keep i for this >loop. Move it to the inside of the if 'enum-as-fla... and init to 0. > >i is tracking which bit number we are at as we consume / shift out >bits from raw. > Yeah, you are right, I don't think I had clear mind when created those.. >Have you ever used ChatGPT? No shame, just curious. I have used it, but I am not using it to prepare code, this was my fault, chat would probably do better.. Anyway just sent v3 with this part fixed. Thank you! Arkadiusz >-- >pw-bot: cr
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py index 1b3a36fbb1c3..3908438d3716 100644 --- a/tools/net/ynl/lib/ynl.py +++ b/tools/net/ynl/lib/ynl.py @@ -420,16 +420,14 @@ class YnlFamily(SpecFamily): def _decode_enum(self, rsp, attr_spec): raw = rsp[attr_spec['name']] enum = self.consts[attr_spec['enum']] - i = attr_spec.get('value-start', 0) if 'enum-as-flags' in attr_spec and attr_spec['enum-as-flags']: value = set() while raw: if raw & 1: - value.add(enum.entries_by_val[i].name) + value.add(enum.entries_by_val[raw & 1].name) raw >>= 1 - i += 1 else: - value = enum.entries_by_val[raw - i].name + value = enum.entries_by_val[raw].name rsp[attr_spec['name']] = value def _decode_binary(self, attr, attr_spec):
Remove wrong index adjustment, which is a leftover from adding support for sparse enums. enum.entries_by_val() function shall not subtract the start-value, as it is indexed with real enum value. Fixes: c311aaa74ca1 ("tools: ynl: fix enum-as-flags in the generic CLI") Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com> --- tools/net/ynl/lib/ynl.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)