[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241014205300.193519-8-tariqt@nvidia.com>
Date: Mon, 14 Oct 2024 23:52:52 +0300
From: Tariq Toukan <tariqt@...dia.com>
To: "David S. Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>, Eric Dumazet <edumazet@...gle.com>
CC: <netdev@...r.kernel.org>, Saeed Mahameed <saeedm@...dia.com>, Gal Pressman
<gal@...dia.com>, Leon Romanovsky <leonro@...dia.com>, <cjubran@...dia.com>,
<cratiu@...dia.com>, Tariq Toukan <tariqt@...dia.com>
Subject: [PATCH net-next V2 07/15] net/mlx5: Refactor vport scheduling element creation function
From: Carolina Jubran <cjubran@...dia.com>
Modify the vport scheduling element creation function to get the parent
node directly, aligning it with the group creation function.
This ensures a consistent flow for scheduling elements creation, as the
parent nodes already contain the device and parent element index.
Signed-off-by: Carolina Jubran <cjubran@...dia.com>
Reviewed-by: Cosmin Ratiu <cratiu@...dia.com>
Signed-off-by: Tariq Toukan <tariqt@...dia.com>
---
.../net/ethernet/mellanox/mlx5/core/esw/qos.c | 27 ++++++++++---------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c
index 840568c66a1a..bcdb745994d2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c
@@ -407,10 +407,10 @@ static int esw_qos_create_node_sched_elem(struct mlx5_core_dev *dev, u32 parent_
tsar_ix);
}
-static int esw_qos_vport_create_sched_element(struct mlx5_vport *vport,
- u32 max_rate, u32 bw_share)
+static int
+esw_qos_vport_create_sched_element(struct mlx5_vport *vport, struct mlx5_esw_sched_node *parent,
+ u32 max_rate, u32 bw_share, u32 *sched_elem_ix)
{
- struct mlx5_esw_sched_node *parent = vport->qos.parent;
u32 sched_ctx[MLX5_ST_SZ_DW(scheduling_context)] = {};
struct mlx5_core_dev *dev = parent->esw->dev;
void *attr;
@@ -432,7 +432,7 @@ static int esw_qos_vport_create_sched_element(struct mlx5_vport *vport,
err = mlx5_create_scheduling_element_cmd(dev,
SCHEDULING_HIERARCHY_E_SWITCH,
sched_ctx,
- &vport->qos.esw_sched_elem_ix);
+ sched_elem_ix);
if (err) {
esw_warn(dev,
"E-Switch create vport scheduling element failed (vport=%d,err=%d)\n",
@@ -459,21 +459,23 @@ static int esw_qos_update_node_scheduling_element(struct mlx5_vport *vport,
return err;
}
- esw_qos_vport_set_parent(vport, new_node);
/* Use new node max rate if vport max rate is unlimited. */
max_rate = vport->qos.max_rate ? vport->qos.max_rate : new_node->max_rate;
- err = esw_qos_vport_create_sched_element(vport, max_rate, vport->qos.bw_share);
+ err = esw_qos_vport_create_sched_element(vport, new_node, max_rate, vport->qos.bw_share,
+ &vport->qos.esw_sched_elem_ix);
if (err) {
NL_SET_ERR_MSG_MOD(extack, "E-Switch vport node set failed.");
goto err_sched;
}
+ esw_qos_vport_set_parent(vport, new_node);
+
return 0;
err_sched:
- esw_qos_vport_set_parent(vport, curr_node);
max_rate = vport->qos.max_rate ? vport->qos.max_rate : curr_node->max_rate;
- if (esw_qos_vport_create_sched_element(vport, max_rate, vport->qos.bw_share))
+ if (esw_qos_vport_create_sched_element(vport, curr_node, max_rate, vport->qos.bw_share,
+ &vport->qos.esw_sched_elem_ix))
esw_warn(curr_node->esw->dev, "E-Switch vport node restore failed (vport=%d)\n",
vport->vport);
@@ -717,13 +719,14 @@ static int esw_qos_vport_enable(struct mlx5_vport *vport,
if (err)
return err;
- INIT_LIST_HEAD(&vport->qos.parent_entry);
- esw_qos_vport_set_parent(vport, esw->qos.node0);
-
- err = esw_qos_vport_create_sched_element(vport, max_rate, bw_share);
+ err = esw_qos_vport_create_sched_element(vport, esw->qos.node0, max_rate, bw_share,
+ &vport->qos.esw_sched_elem_ix);
if (err)
goto err_out;
+ INIT_LIST_HEAD(&vport->qos.parent_entry);
+ esw_qos_vport_set_parent(vport, esw->qos.node0);
+
vport->qos.enabled = true;
trace_mlx5_esw_vport_qos_create(vport->dev, vport, bw_share, max_rate);
--
2.44.0
Powered by blists - more mailing lists