Commit 523d3cc4 authored by Stanislav Fomichev's avatar Stanislav Fomichev Committed by Jakub Kicinski
Browse files

ynl: support enum-cnt-name attribute in legacy definitions



This is similar to existing attr-cnt-name in the attributes
to allow changing the name of the 'count' enum entry.

Signed-off-by: default avatarStanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20241204155549.641348-2-sdf@fomichev.me


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 302cc446
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -106,6 +106,9 @@ properties:
        name-prefix:
          description: For enum the prefix of the values, optional.
          type: string
        enum-cnt-name:
          description: Name of the render-max counter enum entry.
          type: string
        # End genetlink-c

  attribute-sets:
+3 −0
Original line number Diff line number Diff line
@@ -117,6 +117,9 @@ properties:
        name-prefix:
          description: For enum the prefix of the values, optional.
          type: string
        enum-cnt-name:
          description: Name of the render-max counter enum entry.
          type: string
        # End genetlink-c
        # Start genetlink-legacy
        members:
+3 −1
Original line number Diff line number Diff line
@@ -56,7 +56,9 @@ If ``name-prefix`` is specified it replaces the ``$family-$enum``
portion of the entry name.

Boolean ``render-max`` controls creation of the max values
(which are enabled by default for attribute enums).
(which are enabled by default for attribute enums). These max
values are named ``__$pfx-MAX`` and ``$pfx-MAX``. The name
of the first value can be overridden via ``enum-cnt-name`` property.

Attributes
==========
+6 −2
Original line number Diff line number Diff line
@@ -801,6 +801,7 @@ class EnumSet(SpecEnumSet):
            self.user_type = 'int'

        self.value_pfx = yaml.get('name-prefix', f"{family.ident_name}-{yaml['name']}-")
        self.enum_cnt_name = yaml.get('enum-cnt-name', None)

        super().__init__(family, yaml)

@@ -2472,9 +2473,12 @@ def render_uapi(family, cw):
                    max_val = f' = {enum.get_mask()},'
                    cw.p(max_name + max_val)
                else:
                    cnt_name = enum.enum_cnt_name
                    max_name = c_upper(name_pfx + 'max')
                    cw.p('__' + max_name + ',')
                    cw.p(max_name + ' = (__' + max_name + ' - 1)')
                    if not cnt_name:
                        cnt_name = '__' + name_pfx + 'max'
                    cw.p(c_upper(cnt_name) + ',')
                    cw.p(max_name + ' = (' + c_upper(cnt_name) + ' - 1)')
            cw.block_end(line=';')
            cw.nl()
        elif const['type'] == 'const':