• Dmytro Linkin's avatar
    devlink: Introduce rate nodes · a8ecb93e
    Dmytro Linkin authored
    Implement support for DEVLINK_CMD_RATE_{NEW|DEL} commands that are used
    to create and delete devlink rate nodes. Add new attribute
    DEVLINK_ATTR_RATE_NODE_NAME that specify node name string. The node name
    is an alphanumeric identifier. No valid node name can be a devlink port
    index, eg. decimal number. Extend devlink ops with new callbacks
    rate_node_{new|del}() and rate_node_tx_{share|max}_set() to allow
    supporting drivers to implement ports rate grouping and setting tx rate
    of rate nodes through devlink.
    Expose devlink_rate_nodes_destroy() function to allow vendor driver do
    proper cleanup of internally allocated resources for the nodes if the
    driver goes down or due to any other reasons which requires nodes to be
    destroyed.
    Disallow moving device from switchdev to legacy mode if any node exists
    on that device. User must explicitly delete nodes before switching mode.
    
    Example:
    
    $ devlink port function rate add netdevsim/netdevsim10/group1
    
    $ devlink port function rate set netdevsim/netdevsim10/group1 \
            tx_share 10mbit tx_max 100mbit
    
    Add + set command can be combined:
    
    $ devlink port function rate add netdevsim/netdevsim10/group1 \
            tx_share 10mbit tx_max 100mbit
    
    $ devlink port function rate show netdevsim/netdevsim10/group1
    netdevsim/netdevsim10/group1: type node tx_share 10mbit tx_max 100mbit
    
    $ devlink port function rate del netdevsim/netdevsim10/group1
    Co-developed-by: default avatarVlad Buslov <vladbu@nvidia.com>
    Signed-off-by: default avatarVlad Buslov <vladbu@nvidia.com>
    Signed-off-by: default avatarDmytro Linkin <dlinkin@nvidia.com>
    Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a8ecb93e
devlink.h 60.2 KB