The function ice_sched_get_node_by_id_type needs to be called
with the scheduler lock held. However, the function
ice_sched_get_node also requests the scheduler lock.
It will cause the dead lock issue.

This patch replaces function ice_sched_get_node with
function ice_sched_find_node_by_teid to solve this problem.

Signed-off-by: Wenjun Wu <wenjun1...@intel.com>
---
 drivers/net/ice/base/ice_sched.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ice/base/ice_sched.c b/drivers/net/ice/base/ice_sched.c
index 2620892c9e..e697c579be 100644
--- a/drivers/net/ice/base/ice_sched.c
+++ b/drivers/net/ice/base/ice_sched.c
@@ -4774,12 +4774,12 @@ ice_sched_get_node_by_id_type(struct ice_port_info *pi, 
u32 id,
 
        case ICE_AGG_TYPE_Q:
                /* The current implementation allows single queue to modify */
-               node = ice_sched_get_node(pi, id);
+               node = ice_sched_find_node_by_teid(pi->root, id);
                break;
 
        case ICE_AGG_TYPE_QG:
                /* The current implementation allows single qg to modify */
-               child_node = ice_sched_get_node(pi, id);
+               child_node = ice_sched_find_node_by_teid(pi->root, id);
                if (!child_node)
                        break;
                node = child_node->parent;
-- 
2.25.1

Reply via email to