Skip to content

Commit 4c6170d

Browse files
kuba-moodavem330
authored andcommitted
tools: ynl: default to treating enums as flags for mask generation
I was a bit too optimistic in commit bf51d27 ("tools: ynl: fix get_mask utility routine"), not every mask we use is necessarily coming from an enum of type "flags". We also allow flipping an enum into flags on per-attribute basis. That's done by the 'enum-as-flags' property of an attribute. Restore this functionality, it's not currently used by any in-tree family. Signed-off-by: Jakub Kicinski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent a504d24 commit 4c6170d

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

tools/net/ynl/lib/nlspec.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ def has_doc(self):
9090
def raw_value(self):
9191
return self.value
9292

93-
def user_value(self):
94-
if self.enum_set['type'] == 'flags':
93+
def user_value(self, as_flags=None):
94+
if self.enum_set['type'] == 'flags' or as_flags:
9595
return 1 << self.value
9696
else:
9797
return self.value
@@ -136,10 +136,10 @@ def has_doc(self):
136136
return True
137137
return False
138138

139-
def get_mask(self):
139+
def get_mask(self, as_flags=None):
140140
mask = 0
141141
for e in self.entries.values():
142-
mask += e.user_value()
142+
mask += e.user_value(as_flags)
143143
return mask
144144

145145

tools/net/ynl/ynl-gen-c.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,8 @@ def _mnl_type(self):
254254
def _attr_policy(self, policy):
255255
if 'flags-mask' in self.checks or self.is_bitfield:
256256
if self.is_bitfield:
257-
mask = self.family.consts[self.attr['enum']].get_mask()
257+
enum = self.family.consts[self.attr['enum']]
258+
mask = enum.get_mask(as_flags=True)
258259
else:
259260
flags = self.family.consts[self.checks['flags-mask']]
260261
flag_cnt = len(flags['entries'])

0 commit comments

Comments
 (0)