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 <victor.raj@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
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;
if (num_added)
first_teid_ptr = &temp;
- new_num_nodes = num_nodes - num_added;
+ new_num_nodes = num_nodes - *num_nodes_added;
}
}
return status;