tools: ynl-gen: enable code gen for directional specs
I think that user space code gen for directional specs works after recent changes. Let them through. Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6f115d4575
commit
ff6db4b58c
|
@ -324,6 +324,7 @@ class SpecFamily(SpecElement):
|
|||
|
||||
Attributes:
|
||||
proto protocol type (e.g. genetlink)
|
||||
msg_id_model enum-model for operations (unified, directional etc.)
|
||||
license spec license (loaded from an SPDX tag on the spec)
|
||||
|
||||
attr_sets dict of attribute sets
|
||||
|
@ -349,6 +350,7 @@ class SpecFamily(SpecElement):
|
|||
super().__init__(self, spec)
|
||||
|
||||
self.proto = self.yaml.get('protocol', 'genetlink')
|
||||
self.msg_id_model = self.yaml['operations'].get('enum-model', 'unified')
|
||||
|
||||
if schema_path is None:
|
||||
schema_path = os.path.dirname(os.path.dirname(spec_path)) + f'/{self.proto}.yaml'
|
||||
|
@ -477,10 +479,9 @@ class SpecFamily(SpecElement):
|
|||
attr_set = self.new_attr_set(elem)
|
||||
self.attr_sets[elem['name']] = attr_set
|
||||
|
||||
msg_id_model = self.yaml['operations'].get('enum-model', 'unified')
|
||||
if msg_id_model == 'unified':
|
||||
if self.msg_id_model == 'unified':
|
||||
self._dictify_ops_unified()
|
||||
elif msg_id_model == 'directional':
|
||||
elif self.msg_id_model == 'directional':
|
||||
self._dictify_ops_directional()
|
||||
|
||||
for op in self.msgs.values():
|
||||
|
|
|
@ -709,9 +709,6 @@ class Operation(SpecOperation):
|
|||
def __init__(self, family, yaml, req_value, rsp_value):
|
||||
super().__init__(family, yaml, req_value, rsp_value)
|
||||
|
||||
if req_value != rsp_value:
|
||||
raise Exception("Directional messages not supported by codegen")
|
||||
|
||||
self.render_name = family.name + '_' + c_lower(self.name)
|
||||
|
||||
self.dual_policy = ('do' in yaml and 'request' in yaml['do']) and \
|
||||
|
@ -2243,6 +2240,13 @@ def main():
|
|||
os.sys.exit(1)
|
||||
return
|
||||
|
||||
supported_models = ['unified']
|
||||
if args.mode == 'user':
|
||||
supported_models += ['directional']
|
||||
if parsed.msg_id_model not in supported_models:
|
||||
print(f'Message enum-model {parsed.msg_id_model} not supported for {args.mode} generation')
|
||||
os.sys.exit(1)
|
||||
|
||||
cw = CodeWriter(BaseNlLib(), out_file)
|
||||
|
||||
_, spec_kernel = find_kernel_root(args.spec)
|
||||
|
|
Loading…
Reference in New Issue