[PATCH v10 5/7] net/ice: support queue and queue group priority configuration
Wenjun Wu
wenjun1.wu at intel.com
Tue May 17 06:59:14 CEST 2022
This patch adds queue and queue group priority configuration
support. The highest priority is 0, and the lowest priority
is 7.
Signed-off-by: Wenjun Wu <wenjun1.wu at intel.com>
---
doc/guides/rel_notes/release_22_07.rst | 1 +
drivers/net/ice/ice_tm.c | 23 +++++++++++++++++++++--
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst
index de29061809..c5bfc52368 100644
--- a/doc/guides/rel_notes/release_22_07.rst
+++ b/doc/guides/rel_notes/release_22_07.rst
@@ -75,6 +75,7 @@ New Features
* Added support for MAC configuration in DCF mode.
* Added support for VLAN filter and offload configuration in DCF mode.
* Added Tx QoS queue / queue group rate limitation configure support.
+ * Added Tx QoS queue / queue group priority configuration support.
* **Updated Mellanox mlx5 driver.**
diff --git a/drivers/net/ice/ice_tm.c b/drivers/net/ice/ice_tm.c
index d70d077286..105455f3cc 100644
--- a/drivers/net/ice/ice_tm.c
+++ b/drivers/net/ice/ice_tm.c
@@ -147,9 +147,9 @@ ice_node_param_check(struct ice_pf *pf, uint32_t node_id,
return -EINVAL;
}
- if (priority) {
+ if (priority >= 8) {
error->type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
- error->message = "priority should be 0";
+ error->message = "priority should be less than 8";
return -EINVAL;
}
@@ -684,6 +684,7 @@ static int ice_hierarchy_commit(struct rte_eth_dev *dev,
struct ice_vsi *vsi;
int ret_val = ICE_SUCCESS;
uint64_t peak = 0;
+ uint8_t priority;
uint32_t i;
uint32_t idx_vsi_child;
uint32_t idx_qg;
@@ -763,6 +764,15 @@ static int ice_hierarchy_commit(struct rte_eth_dev *dev,
goto fail_clear;
}
}
+ priority = 7 - tm_node->priority;
+ ret_val = ice_sched_cfg_sibl_node_prio_lock(hw->port_info, qgroup_sched_node,
+ priority);
+ if (ret_val) {
+ error->type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
+ PMD_DRV_LOG(ERR, "configure queue group %u priority failed",
+ tm_node->priority);
+ goto fail_clear;
+ }
idx_qg++;
if (idx_qg >= nb_qg) {
idx_qg = 0;
@@ -779,6 +789,7 @@ static int ice_hierarchy_commit(struct rte_eth_dev *dev,
qid = tm_node->id;
txq = dev->data->tx_queues[qid];
vsi = txq->vsi;
+ q_teid = txq->q_teid;
if (tm_node->shaper_profile) {
/* Transfer from Byte per seconds to Kbps */
peak = tm_node->shaper_profile->profile.peak.rate;
@@ -794,6 +805,14 @@ static int ice_hierarchy_commit(struct rte_eth_dev *dev,
goto fail_clear;
}
}
+ priority = 7 - tm_node->priority;
+ ret_val = ice_cfg_vsi_q_priority(hw->port_info, 1,
+ &q_teid, &priority);
+ if (ret_val) {
+ error->type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
+ PMD_DRV_LOG(ERR, "configure queue %u priority failed", tm_node->priority);
+ goto fail_clear;
+ }
}
return ret_val;
--
2.25.1
More information about the dev
mailing list