mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
devlink: Allow setting tx rate for devlink rate leaf objects
Implement support for DEVLINK_CMD_RATE_SET command with new attributes
DEVLINK_ATTR_RATE_TX_{SHARE|MAX} that are used to set devlink rate
shared/max tx rate values. Extend devlink ops with new callbacks
rate_leaf_tx_{share|max}_set() to allow supporting drivers to implement
rate control through devlink.
New attributes are optional. Driver implementations are allowed to
support either or both of them.
Shared rate example:
$ devlink port function rate set netdevsim/netdevsim10/0 tx_share 10mbit
$ devlink port function rate show netdevsim/netdevsim10/0
netdevsim/netdevsim10/0: type leaf tx_share 10mbit
Max rate example:
$ devlink port function rate set netdevsim/netdevsim10/0 tx_max 100mbit
$ devlink port function rate show netdevsim/netdevsim10/0
netdevsim/netdevsim10/0: type leaf tx_max 100mbit
Co-developed-by: Vlad Buslov <vladbu@nvidia.com>
Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
Signed-off-by: Dmytro Linkin <dlinkin@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
a27d8e352b
commit
1897db2ec3
@@ -139,6 +139,8 @@ struct devlink_rate {
|
||||
enum devlink_rate_type type;
|
||||
struct devlink *devlink;
|
||||
void *priv;
|
||||
u64 tx_share;
|
||||
u64 tx_max;
|
||||
|
||||
struct devlink_port *devlink_port;
|
||||
};
|
||||
@@ -1465,6 +1467,14 @@ struct devlink_ops {
|
||||
struct devlink_port *port,
|
||||
enum devlink_port_fn_state state,
|
||||
struct netlink_ext_ack *extack);
|
||||
|
||||
/**
|
||||
* Rate control callbacks.
|
||||
*/
|
||||
int (*rate_leaf_tx_share_set)(struct devlink_rate *devlink_rate, void *priv,
|
||||
u64 tx_share, struct netlink_ext_ack *extack);
|
||||
int (*rate_leaf_tx_max_set)(struct devlink_rate *devlink_rate, void *priv,
|
||||
u64 tx_max, struct netlink_ext_ack *extack);
|
||||
};
|
||||
|
||||
static inline void *devlink_priv(struct devlink *devlink)
|
||||
|
||||
Reference in New Issue
Block a user