Skip to content

Commit f88c349

Browse files
cjubranPaolo Abeni
authored andcommitted
net/mlx5: Preserve rate settings when creating a rate node
Modify `esw_qos_create_node_sched_elem()` to receive max_rate and bw_share values while maintaining the previous configuration. This change is essential for the upcoming patch that will modify rate nodes and requires the existing settings to be preserved unless explicitly changed. Signed-off-by: Carolina Jubran <cjubran@nvidia.com> Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/1741642016-44918-4-git-send-email-tariqt@nvidia.com Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 498bd79 commit f88c349

File tree

1 file changed

+9
-4
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/esw

1 file changed

+9
-4
lines changed

drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,9 @@ static int esw_qos_set_node_min_rate(struct mlx5_esw_sched_node *node,
320320
return 0;
321321
}
322322

323-
static int esw_qos_create_node_sched_elem(struct mlx5_core_dev *dev, u32 parent_element_id,
324-
u32 *tsar_ix)
323+
static int
324+
esw_qos_create_node_sched_elem(struct mlx5_core_dev *dev, u32 parent_element_id,
325+
u32 max_rate, u32 bw_share, u32 *tsar_ix)
325326
{
326327
u32 tsar_ctx[MLX5_ST_SZ_DW(scheduling_context)] = {};
327328
void *attr;
@@ -338,6 +339,8 @@ static int esw_qos_create_node_sched_elem(struct mlx5_core_dev *dev, u32 parent_
338339
SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR);
339340
MLX5_SET(scheduling_context, tsar_ctx, parent_element_id,
340341
parent_element_id);
342+
MLX5_SET(scheduling_context, tsar_ctx, max_average_bw, max_rate);
343+
MLX5_SET(scheduling_context, tsar_ctx, bw_share, bw_share);
341344
attr = MLX5_ADDR_OF(scheduling_context, tsar_ctx, element_attributes);
342345
MLX5_SET(tsar_element, attr, tsar_type, TSAR_ELEMENT_TSAR_TYPE_DWRR);
343346

@@ -409,7 +412,8 @@ __esw_qos_create_vports_sched_node(struct mlx5_eswitch *esw, struct mlx5_esw_sch
409412
u32 tsar_ix;
410413
int err;
411414

412-
err = esw_qos_create_node_sched_elem(esw->dev, esw->qos.root_tsar_ix, &tsar_ix);
415+
err = esw_qos_create_node_sched_elem(esw->dev, esw->qos.root_tsar_ix, 0,
416+
0, &tsar_ix);
413417
if (err) {
414418
NL_SET_ERR_MSG_MOD(extack, "E-Switch create TSAR for node failed");
415419
return ERR_PTR(err);
@@ -476,7 +480,8 @@ static int esw_qos_create(struct mlx5_eswitch *esw, struct netlink_ext_ack *exta
476480
if (!MLX5_CAP_GEN(dev, qos) || !MLX5_CAP_QOS(dev, esw_scheduling))
477481
return -EOPNOTSUPP;
478482

479-
err = esw_qos_create_node_sched_elem(esw->dev, 0, &esw->qos.root_tsar_ix);
483+
err = esw_qos_create_node_sched_elem(esw->dev, 0, 0, 0,
484+
&esw->qos.root_tsar_ix);
480485
if (err) {
481486
esw_warn(dev, "E-Switch create root TSAR failed (%d)\n", err);
482487
return err;

0 commit comments

Comments
 (0)