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 <[email protected]>
---
tools/net/ynl/lib/ynl.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
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):
--
2.37.3
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.
--
pw-bot: cr
>From: Jakub Kicinski <[email protected]>
>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