• Parav Pandit's avatar
    devlink: Introduce PCI SF port flavour and port attribute · b8288837
    Parav Pandit authored
    A PCI sub-function (SF) represents a portion of the device similar
    to PCI VF.
    
    In an eswitch, PCI SF may have port which is normally represented
    using a representor netdevice.
    To have better visibility of eswitch port, its association with SF,
    and its representor netdevice, introduce a PCI SF port flavour.
    
    When devlink port flavour is PCI SF, fill up PCI SF attributes of the
    port.
    
    Extend port name creation using PCI PF and SF number scheme on best
    effort basis, so that vendor drivers can skip defining their own
    scheme.
    This is done as cApfNSfM, where A, N and M are controller, PCI PF and
    PCI SF number respectively.
    This is similar to existing naming for PCI PF and PCI VF ports.
    
    An example view of a PCI SF port:
    
    $ devlink port show pci/0000:06:00.0/32768
    pci/0000:06:00.0/32768: type eth netdev ens2f0npf0sf88 flavour pcisf controller 0 pfnum 0 sfnum 88 external false splittable false
      function:
        hw_addr 00:00:00:00:88:88 state active opstate attached
    
    $ devlink port show pci/0000:06:00.0/32768 -jp
    {
        "port": {
            "pci/0000:06:00.0/32768": {
                "type": "eth",
                "netdev": "ens2f0npf0sf88",
                "flavour": "pcisf",
                "controller": 0,
                "pfnum": 0,
                "sfnum": 88,
                "splittable": false,
                "function": {
                    "hw_addr": "00:00:00:00:88:88",
                    "state": "active",
                    "opstate": "attached"
                }
            }
        }
    }
    Signed-off-by: default avatarParav Pandit <parav@nvidia.com>
    Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
    Reviewed-by: default avatarVu Pham <vuhuong@nvidia.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
    b8288837
devlink.c 267 KB