From d5be7f9375778e54b7709954e81ab9b38f5ee09a Mon Sep 17 00:00:00 2001 From: Qi Zhang Date: Fri, 8 Jan 2021 12:22:49 +0800 Subject: [PATCH] net/ice/base: update add scheduler node counter The number of nodes added counter was updated incorrectly. This issue was exposed when the driver tried to add more than 128 queues per TC. Fix added to update the counter correctly. Fixes: 93e84b1bfc92 ("net/ice/base: add basic Tx scheduler") Cc: stable@dpdk.org Signed-off-by: Victor Raj Signed-off-by: Qi Zhang --- drivers/net/ice/base/ice_sched.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ice/base/ice_sched.c b/drivers/net/ice/base/ice_sched.c index 53d76d17ee..7d4721e60c 100644 --- a/drivers/net/ice/base/ice_sched.c +++ b/drivers/net/ice/base/ice_sched.c @@ -1040,7 +1040,15 @@ ice_sched_add_nodes_to_layer(struct ice_port_info *pi, layer, new_num_nodes, first_teid_ptr, &num_added); - *num_nodes_added += num_added; + if (status == ICE_SUCCESS) + *num_nodes_added += num_added; + /* added more nodes than requested ? */ + if (*num_nodes_added > num_nodes) { + ice_debug(pi->hw, ICE_DBG_SCHED, "added extra nodes %d %d\n", num_nodes, + *num_nodes_added); + status = ICE_ERR_CFG; + break; + } /* break if all the nodes are added successfully */ if (status == ICE_SUCCESS && (*num_nodes_added == num_nodes)) break; @@ -1063,7 +1071,7 @@ ice_sched_add_nodes_to_layer(struct ice_port_info *pi, if (num_added) first_teid_ptr = &temp; - new_num_nodes = num_nodes - num_added; + new_num_nodes = num_nodes - *num_nodes_added; } } return status; -- 2.39.5