mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
selftest: netdevsim: Add devlink rate tc-bw test
Test verifies that netdevsim correctly implements devlink ops callbacks that set tc-bw on leaf or node rate object. Signed-off-by: Carolina Jubran <cjubran@nvidia.com> Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Mark Bloch <mbloch@nvidia.com> Link: https://patch.msgid.link/20250629142138.361537-4-mbloch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
566e8f108f
commit
236156d80d
@@ -388,6 +388,17 @@ static const struct file_operations nsim_dev_rate_parent_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static void nsim_dev_tc_bw_debugfs_init(struct dentry *ddir, u32 *tc_bw)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DEVLINK_RATE_TCS_MAX; i++) {
|
||||
char name[16];
|
||||
|
||||
snprintf(name, sizeof(name), "tc%d_bw", i);
|
||||
debugfs_create_u32(name, 0400, ddir, &tc_bw[i]);
|
||||
}
|
||||
}
|
||||
static int nsim_dev_port_debugfs_init(struct nsim_dev *nsim_dev,
|
||||
struct nsim_dev_port *nsim_dev_port)
|
||||
{
|
||||
@@ -415,6 +426,8 @@ static int nsim_dev_port_debugfs_init(struct nsim_dev *nsim_dev,
|
||||
nsim_dev_port->ddir,
|
||||
&nsim_dev_port->parent_name,
|
||||
&nsim_dev_rate_parent_fops);
|
||||
nsim_dev_tc_bw_debugfs_init(nsim_dev_port->ddir,
|
||||
nsim_dev_port->tc_bw);
|
||||
}
|
||||
debugfs_create_symlink("dev", nsim_dev_port->ddir, dev_link_name);
|
||||
|
||||
@@ -1172,6 +1185,19 @@ static int nsim_rate_bytes_to_units(char *name, u64 *rate, struct netlink_ext_ac
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nsim_leaf_tc_bw_set(struct devlink_rate *devlink_rate,
|
||||
void *priv, u32 *tc_bw,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nsim_dev_port *nsim_dev_port = priv;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DEVLINK_RATE_TCS_MAX; i++)
|
||||
nsim_dev_port->tc_bw[i] = tc_bw[i];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nsim_leaf_tx_share_set(struct devlink_rate *devlink_rate, void *priv,
|
||||
u64 tx_share, struct netlink_ext_ack *extack)
|
||||
{
|
||||
@@ -1210,8 +1236,21 @@ struct nsim_rate_node {
|
||||
char *parent_name;
|
||||
u16 tx_share;
|
||||
u16 tx_max;
|
||||
u32 tc_bw[DEVLINK_RATE_TCS_MAX];
|
||||
};
|
||||
|
||||
static int nsim_node_tc_bw_set(struct devlink_rate *devlink_rate, void *priv,
|
||||
u32 *tc_bw, struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nsim_rate_node *nsim_node = priv;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DEVLINK_RATE_TCS_MAX; i++)
|
||||
nsim_node->tc_bw[i] = tc_bw[i];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nsim_node_tx_share_set(struct devlink_rate *devlink_rate, void *priv,
|
||||
u64 tx_share, struct netlink_ext_ack *extack)
|
||||
{
|
||||
@@ -1264,6 +1303,8 @@ static int nsim_rate_node_new(struct devlink_rate *node, void **priv,
|
||||
&nsim_node->parent_name,
|
||||
&nsim_dev_rate_parent_fops);
|
||||
|
||||
nsim_dev_tc_bw_debugfs_init(nsim_node->ddir, nsim_node->tc_bw);
|
||||
|
||||
*priv = nsim_node;
|
||||
return 0;
|
||||
}
|
||||
@@ -1340,8 +1381,10 @@ static const struct devlink_ops nsim_dev_devlink_ops = {
|
||||
.trap_policer_counter_get = nsim_dev_devlink_trap_policer_counter_get,
|
||||
.rate_leaf_tx_share_set = nsim_leaf_tx_share_set,
|
||||
.rate_leaf_tx_max_set = nsim_leaf_tx_max_set,
|
||||
.rate_leaf_tc_bw_set = nsim_leaf_tc_bw_set,
|
||||
.rate_node_tx_share_set = nsim_node_tx_share_set,
|
||||
.rate_node_tx_max_set = nsim_node_tx_max_set,
|
||||
.rate_node_tc_bw_set = nsim_node_tc_bw_set,
|
||||
.rate_node_new = nsim_rate_node_new,
|
||||
.rate_node_del = nsim_rate_node_del,
|
||||
.rate_leaf_parent_set = nsim_rate_leaf_parent_set,
|
||||
|
||||
Reference in New Issue
Block a user