Commit e497c322 authored by Donald Hunter's avatar Donald Hunter Committed by Jakub Kicinski
Browse files

netlink/specs: Add VF attributes to rt_link spec



Add support for retrieving VFs as part of link info. For example:

./tools/net/ynl/cli.py --spec Documentation/netlink/specs/rt_link.yaml \
  --do getlink --json '{"ifi-index": 38, "ext-mask": ["vf", "skip-stats"]}'
{'address': 'b6:75:91:f2:64:65',
 [snip]
 'vfinfo-list': {'info': [{'broadcast': b'\xff\xff\xff\xff\xff\xff\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00',
                           'link-state': {'link-state': 'auto', 'vf': 0},
                           'mac': {'mac': b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00',
                                   'vf': 0},
                           'rate': {'max-tx-rate': 0,
                                    'min-tx-rate': 0,
                                    'vf': 0},
                           'rss-query-en': {'setting': 0, 'vf': 0},
                           'spoofchk': {'setting': 0, 'vf': 0},
                           'trust': {'setting': 0, 'vf': 0},
                           'tx-rate': {'rate': 0, 'vf': 0},
                           'vlan': {'qos': 0, 'vf': 0, 'vlan': 0},
                           'vlan-list': {'info': [{'qos': 0,
                                                   'vf': 0,
                                                   'vlan': 0,
                                                   'vlan-proto': 0}]}},
                          {'broadcast': b'\xff\xff\xff\xff\xff\xff\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                        b'\x00\x00\x00\x00\x00\x00\x00\x00',
                           'link-state': {'link-state': 'auto', 'vf': 1},
                           'mac': {'mac': b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00'
                                          b'\x00\x00\x00\x00\x00\x00\x00\x00',
                                   'vf': 1},
                           'rate': {'max-tx-rate': 0,
                                    'min-tx-rate': 0,
                                    'vf': 1},
                           'rss-query-en': {'setting': 0, 'vf': 1},
                           'spoofchk': {'setting': 0, 'vf': 1},
                           'trust': {'setting': 0, 'vf': 1},
                           'tx-rate': {'rate': 0, 'vf': 1},
                           'vlan': {'qos': 0, 'vf': 1, 'vlan': 0},
                           'vlan-list': {'info': [{'qos': 0,
                                                   'vf': 1,
                                                   'vlan': 0,
                                                   'vlan-proto': 0}]}}]},
 'xdp': {'attached': 0}}

Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
Link: https://lore.kernel.org/r/20240507103603.23017-1-donald.hunter@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3a2a192b
Loading
Loading
Loading
Loading
+235 −2
Original line number Diff line number Diff line
@@ -770,6 +770,139 @@ definitions:
      -
        name: to
        type: u32
  -
    name: ifla-vf-mac
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: mac
        type: binary
        len: 32
  -
    name: ifla-vf-vlan
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: vlan
        type: u32
      -
        name: qos
        type: u32
  -
    name: ifla-vf-tx-rate
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: rate
        type: u32
  -
    name: ifla-vf-spoofchk
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: setting
        type: u32
  -
    name: ifla-vf-link-state
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: link-state
        type: u32
        enum: ifla-vf-link-state-enum
  -
    name: ifla-vf-link-state-enum
    type: enum
    entries:
      - auto
      - enable
      - disable
  -
    name: ifla-vf-rate
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: min-tx-rate
        type: u32
      -
        name: max-tx-rate
        type: u32
  -
    name: ifla-vf-rss-query-en
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: setting
        type: u32
  -
    name: ifla-vf-trust
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: setting
        type: u32
  -
    name: ifla-vf-guid
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: guid
        type: u64
  -
    name: ifla-vf-vlan-info
    type: struct
    members:
      -
        name: vf
        type: u32
      -
        name: vlan
        type: u32
      -
        name: qos
        type: u32
      -
        name: vlan-proto
        type: u32
  -
    name: rtext-filter
    type: flags
    entries:
      - vf
      - brvlan
      - brvlan-compressed
      - skip-stats
      - mrp
      - cfm-config
      - cfm-status
      - mst

attribute-sets:
  -
@@ -847,7 +980,7 @@ attribute-sets:
      -
        name: vfinfo-list
        type: nest
        nested-attributes: vfinfo-attrs
        nested-attributes: vfinfo-list-attrs
      -
        name: stats64
        type: binary
@@ -873,6 +1006,8 @@ attribute-sets:
      -
        name: ext-mask
        type: u32
        enum: rtext-filter
        enum-as-flags: true
      -
        name: promiscuity
        type: u32
@@ -1004,9 +1139,107 @@ attribute-sets:
        type: nest
        value: 45
        nested-attributes: mctp-attrs
  -
    name: vfinfo-list-attrs
    attributes:
      -
        name: info
        type: nest
        nested-attributes: vfinfo-attrs
        multi-attr: true
  -
    name: vfinfo-attrs
    attributes: []
    attributes:
      -
        name: mac
        type: binary
        struct: ifla-vf-mac
      -
        name: vlan
        type: binary
        struct: ifla-vf-vlan
      -
        name: tx-rate
        type: binary
        struct: ifla-vf-tx-rate
      -
        name: spoofchk
        type: binary
        struct: ifla-vf-spoofchk
      -
        name: link-state
        type: binary
        struct: ifla-vf-link-state
      -
        name: rate
        type: binary
        struct: ifla-vf-rate
      -
        name: rss-query-en
        type: binary
        struct: ifla-vf-rss-query-en
      -
        name: stats
        type: nest
        nested-attributes: vf-stats-attrs
      -
        name: trust
        type: binary
        struct: ifla-vf-trust
      -
        name: ib-node-guid
        type: binary
        struct: ifla-vf-guid
      -
        name: ib-port-guid
        type: binary
        struct: ifla-vf-guid
      -
        name: vlan-list
        type: nest
        nested-attributes: vf-vlan-attrs
      -
        name: broadcast
        type: binary
  -
    name: vf-stats-attrs
    attributes:
      -
        name: rx-packets
        type: u64
        value: 0
      -
        name: tx-packets
        type: u64
      -
        name: rx-bytes
        type: u64
      -
        name: tx-bytes
        type: u64
      -
        name: broadcast
        type: u64
      -
        name: multicast
        type: u64
      -
        name: pad
        type: pad
      -
        name: rx-dropped
        type: u64
      -
        name: tx-dropped
        type: u64
  -
    name: vf-vlan-attrs
    attributes:
      -
        name: info
        type: binary
        struct: ifla-vf-vlan-info
        multi-attr: true
  -
    name: vf-ports-attrs
    attributes: []