Lines Matching refs:node
156 struct ice_sched_node *node; in ice_sched_add_node() local
182 node = prealloc_node; in ice_sched_add_node()
184 node = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*node), GFP_KERNEL); in ice_sched_add_node()
185 if (!node) in ice_sched_add_node()
188 node->children = devm_kcalloc(ice_hw_to_dev(hw), in ice_sched_add_node()
190 sizeof(*node->children), GFP_KERNEL); in ice_sched_add_node()
191 if (!node->children) { in ice_sched_add_node()
192 devm_kfree(ice_hw_to_dev(hw), node); in ice_sched_add_node()
197 node->in_use = true; in ice_sched_add_node()
198 node->parent = parent; in ice_sched_add_node()
199 node->tx_sched_layer = layer; in ice_sched_add_node()
200 parent->children[parent->num_children++] = node; in ice_sched_add_node()
201 node->info = elem; in ice_sched_add_node()
299 void ice_free_sched_node(struct ice_port_info *pi, struct ice_sched_node *node) in ice_free_sched_node() argument
309 while (node->num_children) in ice_free_sched_node()
310 ice_free_sched_node(pi, node->children[0]); in ice_free_sched_node()
313 if (node->tx_sched_layer >= hw->sw_entry_point_layer && in ice_free_sched_node()
314 node->info.data.elem_type != ICE_AQC_ELEM_TYPE_TC && in ice_free_sched_node()
315 node->info.data.elem_type != ICE_AQC_ELEM_TYPE_ROOT_PORT && in ice_free_sched_node()
316 node->info.data.elem_type != ICE_AQC_ELEM_TYPE_LEAF) { in ice_free_sched_node()
317 u32 teid = le32_to_cpu(node->info.node_teid); in ice_free_sched_node()
319 ice_sched_remove_elems(hw, node->parent, teid); in ice_free_sched_node()
321 parent = node->parent; in ice_free_sched_node()
328 if (parent->children[i] == node) { in ice_free_sched_node()
336 p = ice_sched_get_first_node(pi, node, node->tx_sched_layer); in ice_free_sched_node()
338 if (p->sibling == node) { in ice_free_sched_node()
339 p->sibling = node->sibling; in ice_free_sched_node()
346 if (pi->sib_head[node->tc_num][node->tx_sched_layer] == node) in ice_free_sched_node()
347 pi->sib_head[node->tc_num][node->tx_sched_layer] = in ice_free_sched_node()
348 node->sibling; in ice_free_sched_node()
351 devm_kfree(ice_hw_to_dev(hw), node->children); in ice_free_sched_node()
352 kfree(node->name); in ice_free_sched_node()
353 xa_erase(&pi->sched_node_ids, node->id); in ice_free_sched_node()
354 devm_kfree(ice_hw_to_dev(hw), node); in ice_free_sched_node()
1165 struct ice_sched_node *node; in ice_rm_dflt_leaf_node() local
1167 node = pi->root; in ice_rm_dflt_leaf_node()
1168 while (node) { in ice_rm_dflt_leaf_node()
1169 if (!node->num_children) in ice_rm_dflt_leaf_node()
1171 node = node->children[0]; in ice_rm_dflt_leaf_node()
1173 if (node && node->info.data.elem_type == ICE_AQC_ELEM_TYPE_LEAF) { in ice_rm_dflt_leaf_node()
1174 u32 teid = le32_to_cpu(node->info.node_teid); in ice_rm_dflt_leaf_node()
1178 status = ice_sched_remove_elems(pi->hw, node->parent, teid); in ice_rm_dflt_leaf_node()
1180 ice_free_sched_node(pi, node); in ice_rm_dflt_leaf_node()
1193 struct ice_sched_node *node; in ice_sched_rm_dflt_nodes() local
1198 node = pi->root; in ice_sched_rm_dflt_nodes()
1199 while (node) { in ice_sched_rm_dflt_nodes()
1200 if (node->tx_sched_layer >= pi->hw->sw_entry_point_layer && in ice_sched_rm_dflt_nodes()
1201 node->info.data.elem_type != ICE_AQC_ELEM_TYPE_TC && in ice_sched_rm_dflt_nodes()
1202 node->info.data.elem_type != ICE_AQC_ELEM_TYPE_ROOT_PORT) { in ice_sched_rm_dflt_nodes()
1203 ice_free_sched_node(pi, node); in ice_sched_rm_dflt_nodes()
1207 if (!node->num_children) in ice_sched_rm_dflt_nodes()
1209 node = node->children[0]; in ice_sched_rm_dflt_nodes()
1423 struct ice_sched_node *node) in ice_sched_find_node_in_subtree() argument
1430 if (node == child) in ice_sched_find_node_in_subtree()
1433 if (child->tx_sched_layer > node->tx_sched_layer) in ice_sched_find_node_in_subtree()
1439 if (ice_sched_find_node_in_subtree(hw, child, node)) in ice_sched_find_node_in_subtree()
1556 struct ice_sched_node *node; in ice_sched_get_vsi_node() local
1560 node = ice_sched_get_first_node(pi, tc_node, vsi_layer); in ice_sched_get_vsi_node()
1563 while (node) { in ice_sched_get_vsi_node()
1564 if (node->vsi_handle == vsi_handle) in ice_sched_get_vsi_node()
1565 return node; in ice_sched_get_vsi_node()
1566 node = node->sibling; in ice_sched_get_vsi_node()
1569 return node; in ice_sched_get_vsi_node()
1585 struct ice_sched_node *node; in ice_sched_get_agg_node() local
1592 node = ice_sched_get_first_node(pi, tc_node, agg_layer); in ice_sched_get_agg_node()
1595 while (node) { in ice_sched_get_agg_node()
1596 if (node->agg_id == agg_id) in ice_sched_get_agg_node()
1597 return node; in ice_sched_get_agg_node()
1598 node = node->sibling; in ice_sched_get_agg_node()
1601 return node; in ice_sched_get_agg_node()
1648 struct ice_sched_node *parent, *node; in ice_sched_add_vsi_child_nodes() local
1676 node = parent; in ice_sched_add_vsi_child_nodes()
1677 while (node) { in ice_sched_add_vsi_child_nodes()
1678 node->owner = owner; in ice_sched_add_vsi_child_nodes()
1679 node = node->sibling; in ice_sched_add_vsi_child_nodes()
1703 struct ice_sched_node *node; in ice_sched_calc_vsi_support_nodes() local
1718 node = ice_sched_get_first_node(pi, tc_node, (u8)i); in ice_sched_calc_vsi_support_nodes()
1720 while (node) { in ice_sched_calc_vsi_support_nodes()
1721 if (node->num_children < pi->hw->max_children[i]) in ice_sched_calc_vsi_support_nodes()
1723 node = node->sibling; in ice_sched_calc_vsi_support_nodes()
1730 if (node) in ice_sched_calc_vsi_support_nodes()
2004 static bool ice_sched_is_leaf_node_present(struct ice_sched_node *node) in ice_sched_is_leaf_node_present() argument
2008 for (i = 0; i < node->num_children; i++) in ice_sched_is_leaf_node_present()
2009 if (ice_sched_is_leaf_node_present(node->children[i])) in ice_sched_is_leaf_node_present()
2012 return (node->info.data.elem_type == ICE_AQC_ELEM_TYPE_LEAF); in ice_sched_is_leaf_node_present()
2144 ice_sched_get_free_vsi_parent(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_get_free_vsi_parent() argument
2147 u8 l = node->tx_sched_layer; in ice_sched_get_free_vsi_parent()
2154 return (node->num_children < hw->max_children[l]) ? node : NULL; in ice_sched_get_free_vsi_parent()
2159 if (node->num_children < hw->max_children[l]) in ice_sched_get_free_vsi_parent()
2165 for (i = 0; i < node->num_children; i++) { in ice_sched_get_free_vsi_parent()
2168 parent = ice_sched_get_free_vsi_parent(hw, node->children[i], in ice_sched_get_free_vsi_parent()
2187 struct ice_sched_node *node) in ice_sched_update_parent() argument
2192 old_parent = node->parent; in ice_sched_update_parent()
2196 if (old_parent->children[i] == node) { in ice_sched_update_parent()
2205 new_parent->children[new_parent->num_children++] = node; in ice_sched_update_parent()
2206 node->parent = new_parent; in ice_sched_update_parent()
2207 node->info.parent_teid = new_parent->info.node_teid; in ice_sched_update_parent()
2225 struct ice_sched_node *node; in ice_sched_move_nodes() local
2241 node = ice_sched_find_node_by_teid(pi->root, list[i]); in ice_sched_move_nodes()
2242 if (!node) { in ice_sched_move_nodes()
2247 buf->hdr.src_parent_teid = node->info.parent_teid; in ice_sched_move_nodes()
2249 buf->teid[0] = node->info.node_teid; in ice_sched_move_nodes()
2258 ice_sched_update_parent(parent, node); in ice_sched_move_nodes()
2396 ice_sched_is_agg_inuse(struct ice_port_info *pi, struct ice_sched_node *node) in ice_sched_is_agg_inuse() argument
2401 if (node->tx_sched_layer < vsil - 1) { in ice_sched_is_agg_inuse()
2402 for (i = 0; i < node->num_children; i++) in ice_sched_is_agg_inuse()
2403 if (ice_sched_is_agg_inuse(pi, node->children[i])) in ice_sched_is_agg_inuse()
2407 return node->num_children ? true : false; in ice_sched_is_agg_inuse()
2875 ice_sched_update_elem(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_update_elem() argument
2903 node->info.data = info->data; in ice_sched_update_elem()
2917 ice_sched_cfg_node_bw_alloc(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_cfg_node_bw_alloc() argument
2923 buf = node->info; in ice_sched_cfg_node_bw_alloc()
2936 return ice_sched_update_elem(hw, node, &buf); in ice_sched_cfg_node_bw_alloc()
3271 ice_sched_cfg_node_bw_lmt(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_cfg_node_bw_lmt() argument
3277 buf = node->info; in ice_sched_cfg_node_bw_lmt()
3325 return ice_sched_update_elem(hw, node, &buf); in ice_sched_cfg_node_bw_lmt()
3337 ice_sched_get_node_rl_prof_id(struct ice_sched_node *node, in ice_sched_get_node_rl_prof_id() argument
3343 data = &node->info.data; in ice_sched_get_node_rl_prof_id()
3417 ice_sched_get_srl_node(struct ice_sched_node *node, u8 srl_layer) in ice_sched_get_srl_node() argument
3419 if (srl_layer > node->tx_sched_layer) in ice_sched_get_srl_node()
3420 return node->children[0]; in ice_sched_get_srl_node()
3421 else if (srl_layer < node->tx_sched_layer) in ice_sched_get_srl_node()
3425 return node->parent; in ice_sched_get_srl_node()
3427 return node; in ice_sched_get_srl_node()
3484 struct ice_sched_node *node, in ice_sched_set_node_bw_dflt() argument
3512 old_id = ice_sched_get_node_rl_prof_id(node, rl_type); in ice_sched_set_node_bw_dflt()
3514 status = ice_sched_cfg_node_bw_lmt(hw, node, rl_type, rl_prof_id); in ice_sched_set_node_bw_dflt()
3541 struct ice_sched_node *node, in ice_sched_set_eir_srl_excl() argument
3557 return ice_sched_set_node_bw_dflt(pi, node, ICE_MAX_BW, in ice_sched_set_eir_srl_excl()
3560 node->info.data.valid_sections & ICE_AQC_ELEM_VALID_SHARED) { in ice_sched_set_eir_srl_excl()
3564 return ice_sched_set_node_bw_dflt(pi, node, in ice_sched_set_eir_srl_excl()
3584 ice_sched_set_node_bw(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw() argument
3599 old_id = ice_sched_get_node_rl_prof_id(node, rl_type); in ice_sched_set_node_bw()
3601 status = ice_sched_cfg_node_bw_lmt(hw, node, rl_type, rl_prof_id); in ice_sched_set_node_bw()
3628 ice_sched_set_node_priority(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_priority() argument
3634 buf = node->info; in ice_sched_set_node_priority()
3640 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_priority()
3652 ice_sched_set_node_weight(struct ice_port_info *pi, struct ice_sched_node *node, u16 weight) in ice_sched_set_node_weight() argument
3657 buf = node->info; in ice_sched_set_node_weight()
3667 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_weight()
3681 ice_sched_set_node_bw_lmt(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw_lmt() argument
3684 struct ice_sched_node *cfg_node = node; in ice_sched_set_node_bw_lmt()
3696 node->tx_sched_layer); in ice_sched_set_node_bw_lmt()
3702 cfg_node = ice_sched_get_srl_node(node, layer_num); in ice_sched_set_node_bw_lmt()
3731 struct ice_sched_node *node, in ice_sched_set_node_bw_dflt_lmt() argument
3734 return ice_sched_set_node_bw_lmt(pi, node, rl_type, in ice_sched_set_node_bw_dflt_lmt()
3748 ice_sched_validate_srl_node(struct ice_sched_node *node, u8 sel_layer) in ice_sched_validate_srl_node() argument
3755 if (sel_layer == node->tx_sched_layer || in ice_sched_validate_srl_node()
3756 ((sel_layer == node->tx_sched_layer + 1) && in ice_sched_validate_srl_node()
3757 node->num_children == 1) || in ice_sched_validate_srl_node()
3758 ((sel_layer == node->tx_sched_layer - 1) && in ice_sched_validate_srl_node()
3759 (node->parent && node->parent->num_children == 1))) in ice_sched_validate_srl_node()
3807 struct ice_sched_node *node; in ice_sched_set_q_bw_lmt() local
3817 node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_set_q_bw_lmt()
3818 if (!node) { in ice_sched_set_q_bw_lmt()
3824 if (node->info.data.elem_type != ICE_AQC_ELEM_TYPE_LEAF) in ice_sched_set_q_bw_lmt()
3832 node->tx_sched_layer); in ice_sched_set_q_bw_lmt()
3837 status = ice_sched_validate_srl_node(node, sel_layer); in ice_sched_set_q_bw_lmt()
3843 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_q_bw_lmt()
3845 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_q_bw_lmt()
3907 struct ice_sched_node *node = NULL; in ice_sched_get_node_by_id_type() local
3920 node = vsi_ctx->sched.vsi_node[tc]; in ice_sched_get_node_by_id_type()
3929 node = ice_sched_get_agg_node(pi, tc_node, id); in ice_sched_get_node_by_id_type()
3937 return node; in ice_sched_get_node_by_id_type()
3957 struct ice_sched_node *node; in ice_sched_set_node_bw_lmt_per_tc() local
3967 node = ice_sched_get_node_by_id_type(pi, id, agg_type, tc); in ice_sched_set_node_bw_lmt_per_tc()
3968 if (!node) { in ice_sched_set_node_bw_lmt_per_tc()
3973 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_node_bw_lmt_per_tc()
3975 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_node_bw_lmt_per_tc()
4090 ice_sched_replay_node_prio(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_replay_node_prio() argument
4097 buf = node->info; in ice_sched_replay_node_prio()
4103 status = ice_sched_update_elem(hw, node, &buf); in ice_sched_replay_node_prio()
4117 ice_sched_replay_node_bw(struct ice_hw *hw, struct ice_sched_node *node, in ice_sched_replay_node_bw() argument
4124 if (!node) in ice_sched_replay_node_bw()
4129 status = ice_sched_replay_node_prio(hw, node, in ice_sched_replay_node_bw()
4135 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MIN_BW, in ice_sched_replay_node_bw()
4142 status = ice_sched_cfg_node_bw_alloc(hw, node, ICE_MIN_BW, in ice_sched_replay_node_bw()
4148 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MAX_BW, in ice_sched_replay_node_bw()
4155 status = ice_sched_cfg_node_bw_alloc(hw, node, ICE_MAX_BW, in ice_sched_replay_node_bw()
4161 status = ice_sched_set_node_bw_lmt(pi, node, ICE_SHARED_BW, in ice_sched_replay_node_bw()