mbox series

[iproute2-next,v5,0/7] expose devlink instances relationships

Message ID 20231107080607.190414-1-jiri@resnulli.us (mailing list archive)
Headers show
Series expose devlink instances relationships | expand

Message

Jiri Pirko Nov. 7, 2023, 8:06 a.m. UTC
From: Jiri Pirko <jiri@nvidia.com>

Print out recently added attributes that expose relationships between
devlink instances. This patchset extends the outputs by
"nested_devlink" attributes.

Examples:
$ devlink dev
pci/0000:08:00.0:
  nested_devlink:
    auxiliary/mlx5_core.eth.0
auxiliary/mlx5_core.eth.0
pci/0000:08:00.1:
  nested_devlink:
    auxiliary/mlx5_core.eth.1
auxiliary/mlx5_core.eth.1

$ devlink dev -j -p
{
    "dev": {
        "pci/0000:08:00.0": {
            "nested_devlink": {
                "auxiliary/mlx5_core.eth.0": {}
            }
        },
        "auxiliary/mlx5_core.eth.0": {},
        "pci/0000:08:00.1": {
            "nested_devlink": {
                "auxiliary/mlx5_core.eth.1": {}
            }
        },
        "auxiliary/mlx5_core.eth.1": {}
    }
}

$ devlink port add pci/0000:08:00.0 flavour pcisf pfnum 0 sfnum 106
pci/0000:08:00.0/32768: type eth netdev eth2 flavour pcisf controller 0 pfnum 0 sfnum 106 splittable false
  function:
    hw_addr 00:00:00:00:00:00 state inactive opstate detached roce enable
$ devlink port function set pci/0000:08:00.0/32768 state active
$ devlink port show pci/0000:08:00.0/32768
pci/0000:08:00.0/32768: type eth netdev eth2 flavour pcisf controller 0 pfnum 0 sfnum 106 splittable false
  function:
    hw_addr 00:00:00:00:00:00 state active opstate attached roce enable
      nested_devlink:
        auxiliary/mlx5_core.sf.2
$ devlink port show pci/0000:08:00.0/32768 -j -p
{
    "port": {
        "pci/0000:08:00.0/32768": {
            "type": "eth",
            "netdev": "eth2",
            "flavour": "pcisf",
            "controller": 0,
            "pfnum": 0,
            "sfnum": 106,
            "splittable": false,
            "function": {
                "hw_addr": "00:00:00:00:00:00",
                "state": "active",
                "opstate": "attached",
                "roce": "enable",
                "nested_devlink": {
                    "auxiliary/mlx5_core.sf.2": {}
                }
            }
        }
    }
}

$ devlink dev reload auxiliary/mlx5_core.sf.2 netns ns1
$ devlink port show pci/0000:08:00.0/32768
pci/0000:08:00.0/32768: type eth netdev eth2 flavour pcisf controller 0 pfnum 0 sfnum 106 splittable false
  function:
    hw_addr 00:00:00:00:00:00 state active opstate attached roce enable
      nested_devlink:
        auxiliary/mlx5_core.sf.2: netns ns1
$ devlink port show pci/0000:08:00.0/32768 -j -p
{
    "port": {
        "pci/0000:08:00.0/32768": {
            "type": "eth",
            "netdev": "eth2",
            "flavour": "pcisf",
            "controller": 0,
            "pfnum": 0,
            "sfnum": 106,
            "splittable": false,
            "function": {
                "hw_addr": "00:00:00:00:00:00",
                "state": "active",
                "opstate": "attached",
                "roce": "enable",
                "nested_devlink": {
                    "auxiliary/mlx5_core.sf.2": {
                        "netns": "ns1"
                    }
                }
            }
        }
    }
}

---
v4->v5:
- fixed dcb compile warn cause by missing header include
v3->v4
- removed namespace.h include from patch #1
- added patch #2
v2->v3:
- the output format is changed to treat the nested handle in a similar
  way as the dev_handle/port_handle allowing to contain attrs, like
  netns. See examples
- couple of details
- see individual patches for more details
v1->v2:
- patch #2 was added
- patch #3 uses new helper added by patch #2, typo is fixed

Jiri Pirko (7):
  ip/ipnetns: move internals of get_netnsid_from_name() into namespace.c
  devlink: use snprintf instead of sprintf
  devlink: do conditional new line print in pr_out_port_handle_end()
  devlink: extend pr_out_nested_handle() to print object
  devlink: introduce support for netns id for nested handle
  devlink: print nested handle for port function
  devlink: print nested devlink handle for devlink dev

 devlink/devlink.c   | 140 ++++++++++++++++++++++++++++++++++----------
 include/namespace.h |   4 ++
 ip/ipnetns.c        |  45 +-------------
 lib/namespace.c     |  83 ++++++++++++++++++++++++++
 4 files changed, 197 insertions(+), 75 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 11, 2023, 5:36 p.m. UTC | #1
Hello:

This series was applied to iproute2/iproute2-next.git (main)
by David Ahern <dsahern@kernel.org>:

On Tue,  7 Nov 2023 09:06:00 +0100 you wrote:
> From: Jiri Pirko <jiri@nvidia.com>
> 
> Print out recently added attributes that expose relationships between
> devlink instances. This patchset extends the outputs by
> "nested_devlink" attributes.
> 
> Examples:
> $ devlink dev
> pci/0000:08:00.0:
>   nested_devlink:
>     auxiliary/mlx5_core.eth.0
> auxiliary/mlx5_core.eth.0
> pci/0000:08:00.1:
>   nested_devlink:
>     auxiliary/mlx5_core.eth.1
> auxiliary/mlx5_core.eth.1
> 
> [...]

Here is the summary with links:
  - [iproute2-next,v5,1/7] ip/ipnetns: move internals of get_netnsid_from_name() into namespace.c
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=a59b83f73d45
  - [iproute2-next,v5,2/7] devlink: use snprintf instead of sprintf
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=8265b39f0c25
  - [iproute2-next,v5,3/7] devlink: do conditional new line print in pr_out_port_handle_end()
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=fb47796cd606
  - [iproute2-next,v5,4/7] devlink: extend pr_out_nested_handle() to print object
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=e98d5084f7cd
  - [iproute2-next,v5,5/7] devlink: introduce support for netns id for nested handle
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=2ded9c18a37b
  - [iproute2-next,v5,6/7] devlink: print nested handle for port function
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=3e90f377f49b
  - [iproute2-next,v5,7/7] devlink: print nested devlink handle for devlink dev
    https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=1ac0c4450f61

You are awesome, thank you!