Lines Matching full:pi

9  * @pi: port information structure
16 ice_sched_add_root_node(struct ice_port_info *pi, in ice_sched_add_root_node() argument
22 if (!pi) in ice_sched_add_root_node()
25 hw = pi->hw; in ice_sched_add_root_node()
39 pi->root = root; in ice_sched_add_root_node()
163 * @pi: port information structure
171 ice_sched_add_node(struct ice_port_info *pi, u8 layer, in ice_sched_add_node() argument
181 if (!pi) in ice_sched_add_node()
184 hw = pi->hw; in ice_sched_add_node()
187 parent = ice_sched_find_node_by_teid(pi->root, in ice_sched_add_node()
287 * @pi: port information structure
294 ice_sched_get_first_node(struct ice_port_info *pi, in ice_sched_get_first_node() argument
297 return pi->sib_head[parent->tc_num][layer]; in ice_sched_get_first_node()
302 * @pi: port information structure
307 struct ice_sched_node *ice_sched_get_tc_node(struct ice_port_info *pi, u8 tc) in ice_sched_get_tc_node() argument
311 if (!pi || !pi->root) in ice_sched_get_tc_node()
313 for (i = 0; i < pi->root->num_children; i++) in ice_sched_get_tc_node()
314 if (pi->root->children[i]->tc_num == tc) in ice_sched_get_tc_node()
315 return pi->root->children[i]; in ice_sched_get_tc_node()
321 * @pi: port information structure
328 void ice_free_sched_node(struct ice_port_info *pi, struct ice_sched_node *node) in ice_free_sched_node() argument
331 struct ice_hw *hw = pi->hw; in ice_free_sched_node()
339 ice_free_sched_node(pi, node->children[0]); in ice_free_sched_node()
365 p = ice_sched_get_first_node(pi, node, node->tx_sched_layer); in ice_free_sched_node()
375 if (pi->sib_head[node->tc_num][node->tx_sched_layer] == node) in ice_free_sched_node()
376 pi->sib_head[node->tc_num][node->tx_sched_layer] = in ice_free_sched_node()
382 xa_erase(&pi->sched_node_ids, node->id); in ice_free_sched_node()
789 * @pi: port information structure
793 static void ice_sched_clear_rl_prof(struct ice_port_info *pi) in ice_sched_clear_rl_prof() argument
797 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_clear_rl_prof()
802 &pi->rl_prof_list[ln], list_entry) { in ice_sched_clear_rl_prof()
803 struct ice_hw *hw = pi->hw; in ice_sched_clear_rl_prof()
846 * @pi: port information structure
850 static void ice_sched_clear_tx_topo(struct ice_port_info *pi) in ice_sched_clear_tx_topo() argument
852 if (!pi) in ice_sched_clear_tx_topo()
855 ice_sched_clear_rl_prof(pi); in ice_sched_clear_tx_topo()
856 if (pi->root) { in ice_sched_clear_tx_topo()
857 ice_free_sched_node(pi, pi->root); in ice_sched_clear_tx_topo()
858 pi->root = NULL; in ice_sched_clear_tx_topo()
864 * @pi: port information structure
868 void ice_sched_clear_port(struct ice_port_info *pi) in ice_sched_clear_port() argument
870 if (!pi || pi->port_state != ICE_SCHED_PORT_STATE_READY) in ice_sched_clear_port()
873 pi->port_state = ICE_SCHED_PORT_STATE_INIT; in ice_sched_clear_port()
874 mutex_lock(&pi->sched_lock); in ice_sched_clear_port()
875 ice_sched_clear_tx_topo(pi); in ice_sched_clear_port()
876 mutex_unlock(&pi->sched_lock); in ice_sched_clear_port()
877 mutex_destroy(&pi->sched_lock); in ice_sched_clear_port()
904 * @pi: port information structure
916 ice_sched_add_elems(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_add_elems() argument
924 struct ice_hw *hw = pi->hw; in ice_sched_add_elems()
966 status = ice_sched_add_node(pi, layer, &buf->generic[i], prealloc_nodes[i]); in ice_sched_add_elems()
968 status = ice_sched_add_node(pi, layer, &buf->generic[i], NULL); in ice_sched_add_elems()
992 status = xa_alloc(&pi->sched_node_ids, &new_node->id, NULL, XA_LIMIT(0, UINT_MAX), in ice_sched_add_elems()
1004 prev = ice_sched_get_first_node(pi, tc_node, layer); in ice_sched_add_elems()
1012 if (!pi->sib_head[tc_node->tc_num][layer]) in ice_sched_add_elems()
1013 pi->sib_head[tc_node->tc_num][layer] = new_node; in ice_sched_add_elems()
1025 * @pi: port information structure
1036 ice_sched_add_nodes_to_hw_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_hw_layer() argument
1049 if (!parent || layer < pi->hw->sw_entry_point_layer) in ice_sched_add_nodes_to_hw_layer()
1053 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_hw_layer()
1063 return ice_sched_add_elems(pi, tc_node, parent, layer, num_nodes, in ice_sched_add_nodes_to_hw_layer()
1069 * @pi: port information structure
1080 ice_sched_add_nodes_to_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_layer() argument
1095 status = ice_sched_add_nodes_to_hw_layer(pi, tc_node, parent, in ice_sched_add_nodes_to_layer()
1103 ice_debug(pi->hw, ICE_DBG_SCHED, "added extra nodes %d %d\n", num_nodes, in ice_sched_add_nodes_to_layer()
1115 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_layer()
1197 * @pi: port information structure
1202 static void ice_rm_dflt_leaf_node(struct ice_port_info *pi) in ice_rm_dflt_leaf_node() argument
1206 node = pi->root; in ice_rm_dflt_leaf_node()
1217 status = ice_sched_remove_elems(pi->hw, node->parent, 1, &teid); in ice_rm_dflt_leaf_node()
1219 ice_free_sched_node(pi, node); in ice_rm_dflt_leaf_node()
1225 * @pi: port information structure
1230 static void ice_sched_rm_dflt_nodes(struct ice_port_info *pi) in ice_sched_rm_dflt_nodes() argument
1234 ice_rm_dflt_leaf_node(pi); in ice_sched_rm_dflt_nodes()
1237 node = pi->root; in ice_sched_rm_dflt_nodes()
1239 if (node->tx_sched_layer >= pi->hw->sw_entry_point_layer && in ice_sched_rm_dflt_nodes()
1242 ice_free_sched_node(pi, node); in ice_sched_rm_dflt_nodes()
1254 * @pi: port info structure for the tree to cleanup
1260 int ice_sched_init_port(struct ice_port_info *pi) in ice_sched_init_port() argument
1269 if (!pi) in ice_sched_init_port()
1271 hw = pi->hw; in ice_sched_init_port()
1279 status = ice_aq_get_dflt_topo(hw, pi->lport, buf, ICE_AQ_MAX_BUF_LEN, in ice_sched_init_port()
1308 pi->last_node_teid = in ice_sched_init_port()
1311 pi->last_node_teid = in ice_sched_init_port()
1315 status = ice_sched_add_root_node(pi, &buf[0].generic[0]); in ice_sched_init_port()
1330 status = ice_sched_add_node(pi, j, &buf[i].generic[j], NULL); in ice_sched_init_port()
1337 if (pi->root) in ice_sched_init_port()
1338 ice_sched_rm_dflt_nodes(pi); in ice_sched_init_port()
1341 pi->port_state = ICE_SCHED_PORT_STATE_READY; in ice_sched_init_port()
1342 mutex_init(&pi->sched_lock); in ice_sched_init_port()
1344 INIT_LIST_HEAD(&pi->rl_prof_list[i]); in ice_sched_init_port()
1347 if (status && pi->root) { in ice_sched_init_port()
1348 ice_free_sched_node(pi, pi->root); in ice_sched_init_port()
1349 pi->root = NULL; in ice_sched_init_port()
1487 * @pi: port information structure
1497 ice_sched_get_free_qgrp(struct ice_port_info *pi, in ice_sched_get_free_qgrp() argument
1517 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qgrp()
1534 * @pi: port information structure
1542 ice_sched_get_free_qparent(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_get_free_qparent() argument
1550 qgrp_layer = ice_sched_get_qgrp_layer(pi->hw); in ice_sched_get_free_qparent()
1551 max_children = pi->hw->max_children[qgrp_layer]; in ice_sched_get_free_qparent()
1553 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_free_qparent()
1562 qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); in ice_sched_get_free_qparent()
1567 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qparent()
1580 qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); in ice_sched_get_free_qparent()
1584 return ice_sched_get_free_qgrp(pi, vsi_node, qgrp_node, owner); in ice_sched_get_free_qparent()
1589 * @pi: pointer to the port information structure
1597 ice_sched_get_vsi_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_vsi_node() argument
1603 vsi_layer = ice_sched_get_vsi_layer(pi->hw); in ice_sched_get_vsi_node()
1604 node = ice_sched_get_first_node(pi, tc_node, vsi_layer); in ice_sched_get_vsi_node()
1618 * @pi: pointer to the port information structure
1626 ice_sched_get_agg_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_agg_node() argument
1630 struct ice_hw *hw = pi->hw; in ice_sched_get_agg_node()
1636 node = ice_sched_get_first_node(pi, tc_node, agg_layer); in ice_sched_get_agg_node()
1678 * @pi: port information structure
1688 ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_child_nodes() argument
1693 struct ice_hw *hw = pi->hw; in ice_sched_add_vsi_child_nodes()
1700 parent = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_add_vsi_child_nodes()
1707 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_vsi_child_nodes()
1735 * @pi: pointer to the port info structure
1744 ice_sched_calc_vsi_support_nodes(struct ice_port_info *pi, in ice_sched_calc_vsi_support_nodes() argument
1751 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_calc_vsi_support_nodes()
1752 for (i = vsil; i >= pi->hw->sw_entry_point_layer; i--) in ice_sched_calc_vsi_support_nodes()
1762 node = ice_sched_get_first_node(pi, tc_node, (u8)i); in ice_sched_calc_vsi_support_nodes()
1765 if (node->num_children < pi->hw->max_children[i]) in ice_sched_calc_vsi_support_nodes()
1783 * @pi: port information structure
1792 ice_sched_add_vsi_support_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_support_nodes() argument
1800 if (!pi) in ice_sched_add_vsi_support_nodes()
1803 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_add_vsi_support_nodes()
1804 for (i = pi->hw->sw_entry_point_layer; i <= vsil; i++) { in ice_sched_add_vsi_support_nodes()
1807 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, in ice_sched_add_vsi_support_nodes()
1839 * @pi: port information structure
1846 ice_sched_add_vsi_to_topo(struct ice_port_info *pi, u16 vsi_handle, u8 tc) in ice_sched_add_vsi_to_topo() argument
1851 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_vsi_to_topo()
1856 ice_sched_calc_vsi_support_nodes(pi, tc_node, num_nodes); in ice_sched_add_vsi_to_topo()
1859 return ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, in ice_sched_add_vsi_to_topo()
1900 * @pi: port information structure
1909 ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_update_vsi_child_nodes() argument
1916 struct ice_hw *hw = pi->hw; in ice_sched_update_vsi_child_nodes()
1920 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_update_vsi_child_nodes()
1924 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_update_vsi_child_nodes()
1963 status = ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, in ice_sched_update_vsi_child_nodes()
1968 status = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node, in ice_sched_update_vsi_child_nodes()
1982 * @pi: port information structure
1994 ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs, in ice_sched_cfg_vsi() argument
1999 struct ice_hw *hw = pi->hw; in ice_sched_cfg_vsi()
2002 ice_debug(pi->hw, ICE_DBG_SCHED, "add/config VSI %d\n", vsi_handle); in ice_sched_cfg_vsi()
2003 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_cfg_vsi()
2009 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
2026 status = ice_sched_add_vsi_to_topo(pi, vsi_handle, tc); in ice_sched_cfg_vsi()
2030 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
2045 status = ice_sched_update_vsi_child_nodes(pi, vsi_handle, tc, maxqs, in ice_sched_cfg_vsi()
2064 * @pi: port information structure
2070 static void ice_sched_rm_agg_vsi_info(struct ice_port_info *pi, u16 vsi_handle) in ice_sched_rm_agg_vsi_info() argument
2075 list_for_each_entry_safe(agg_info, atmp, &pi->hw->agg_list, in ice_sched_rm_agg_vsi_info()
2084 devm_kfree(ice_hw_to_dev(pi->hw), in ice_sched_rm_agg_vsi_info()
2110 * @pi: port information structure
2121 ice_sched_rm_vsi_subtree(struct ice_port_info *pi, in ice_sched_rm_vsi_subtree() argument
2132 ice_debug(pi->hw, ICE_DBG_SCHED, "VSI has leaf nodes in TC %d\n", tc); in ice_sched_rm_vsi_subtree()
2137 ice_free_sched_node(pi, vsi_node->children[j]); in ice_sched_rm_vsi_subtree()
2146 ice_free_sched_node(pi, vsi_node); in ice_sched_rm_vsi_subtree()
2155 ice_sched_rm_agg_vsi_info(pi, vsi_handle); in ice_sched_rm_vsi_subtree()
2162 * @pi: port information structure
2170 ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner) in ice_sched_rm_vsi_cfg() argument
2176 ice_debug(pi->hw, ICE_DBG_SCHED, "removing VSI %d\n", vsi_handle); in ice_sched_rm_vsi_cfg()
2177 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_rm_vsi_cfg()
2179 mutex_lock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2180 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_rm_vsi_cfg()
2187 tc_node = ice_sched_get_tc_node(pi, i); in ice_sched_rm_vsi_cfg()
2191 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_rm_vsi_cfg()
2195 status = ice_sched_rm_vsi_subtree(pi, vsi_node, owner, i); in ice_sched_rm_vsi_cfg()
2209 mutex_unlock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2215 * @pi: port information structure
2221 int ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_lan_cfg() argument
2223 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_LAN); in ice_rm_vsi_lan_cfg()
2228 * @pi: port information structure
2234 int ice_rm_vsi_rdma_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_rdma_cfg() argument
2236 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_RDMA); in ice_rm_vsi_rdma_cfg()
2337 * @pi: port information structure
2345 ice_sched_move_nodes(struct ice_port_info *pi, struct ice_sched_node *parent, in ice_sched_move_nodes() argument
2355 hw = pi->hw; in ice_sched_move_nodes()
2371 node = ice_sched_find_node_by_teid(pi->root, list[i]); in ice_sched_move_nodes()
2399 * @pi: port information structure
2408 ice_sched_move_vsi_to_agg(struct ice_port_info *pi, u16 vsi_handle, u32 agg_id, in ice_sched_move_vsi_to_agg() argument
2418 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_move_vsi_to_agg()
2422 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_move_vsi_to_agg()
2426 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_move_vsi_to_agg()
2431 if (ice_sched_find_node_in_subtree(pi->hw, agg_node, vsi_node)) in ice_sched_move_vsi_to_agg()
2434 aggl = ice_sched_get_agg_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2435 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2443 parent = ice_sched_get_free_vsi_parent(pi->hw, in ice_sched_move_vsi_to_agg()
2453 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_move_vsi_to_agg()
2475 return ice_sched_move_nodes(pi, parent, 1, &vsi_teid); in ice_sched_move_vsi_to_agg()
2480 * @pi: port information structure
2490 ice_move_all_vsi_to_dflt_agg(struct ice_port_info *pi, in ice_move_all_vsi_to_dflt_agg() argument
2506 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, in ice_move_all_vsi_to_dflt_agg()
2514 devm_kfree(ice_hw_to_dev(pi->hw), agg_vsi_info); in ice_move_all_vsi_to_dflt_agg()
2523 * @pi: port information structure
2529 ice_sched_is_agg_inuse(struct ice_port_info *pi, struct ice_sched_node *node) in ice_sched_is_agg_inuse() argument
2533 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_is_agg_inuse()
2536 if (ice_sched_is_agg_inuse(pi, node->children[i])) in ice_sched_is_agg_inuse()
2546 * @pi: port information structure
2554 ice_sched_rm_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_rm_agg_cfg() argument
2557 struct ice_hw *hw = pi->hw; in ice_sched_rm_agg_cfg()
2559 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_rm_agg_cfg()
2563 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_rm_agg_cfg()
2568 if (ice_sched_is_agg_inuse(pi, agg_node)) in ice_sched_rm_agg_cfg()
2586 ice_free_sched_node(pi, agg_node); in ice_sched_rm_agg_cfg()
2592 * @pi: port information structure
2602 ice_rm_agg_cfg_tc(struct ice_port_info *pi, struct ice_sched_agg_info *agg_info, in ice_rm_agg_cfg_tc() argument
2611 status = ice_move_all_vsi_to_dflt_agg(pi, agg_info, tc, rm_vsi_info); in ice_rm_agg_cfg_tc()
2616 status = ice_sched_rm_agg_cfg(pi, agg_info->agg_id, tc); in ice_rm_agg_cfg_tc()
2627 * @pi: port information structure
2635 ice_save_agg_tc_bitmap(struct ice_port_info *pi, u32 agg_id, in ice_save_agg_tc_bitmap() argument
2640 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_tc_bitmap()
2650 * @pi: port information structure
2658 ice_sched_add_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_add_agg_cfg() argument
2662 struct ice_hw *hw = pi->hw; in ice_sched_add_agg_cfg()
2668 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_agg_cfg()
2672 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_add_agg_cfg()
2687 parent = ice_sched_get_first_node(pi, tc_node, i); in ice_sched_add_agg_cfg()
2707 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_agg_cfg()
2733 * @pi: port information structure
2748 ice_sched_cfg_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_cfg_agg() argument
2752 struct ice_hw *hw = pi->hw; in ice_sched_cfg_agg()
2778 status = ice_rm_agg_cfg_tc(pi, agg_info, tc, false); in ice_sched_cfg_agg()
2789 status = ice_sched_add_agg_cfg(pi, agg_id, tc); in ice_sched_cfg_agg()
2802 * @pi: port information structure
2810 ice_cfg_agg(struct ice_port_info *pi, u32 agg_id, enum ice_agg_type agg_type, in ice_cfg_agg() argument
2816 mutex_lock(&pi->sched_lock); in ice_cfg_agg()
2817 status = ice_sched_cfg_agg(pi, agg_id, agg_type, &bitmap); in ice_cfg_agg()
2819 status = ice_save_agg_tc_bitmap(pi, agg_id, &bitmap); in ice_cfg_agg()
2820 mutex_unlock(&pi->sched_lock); in ice_cfg_agg()
2870 * @pi: port information structure
2879 ice_save_agg_vsi_tc_bitmap(struct ice_port_info *pi, u32 agg_id, u16 vsi_handle, in ice_save_agg_vsi_tc_bitmap() argument
2885 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_vsi_tc_bitmap()
2899 * @pi: port information structure
2909 ice_sched_assoc_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_assoc_vsi_to_agg() argument
2914 struct ice_hw *hw = pi->hw; in ice_sched_assoc_vsi_to_agg()
2918 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_assoc_vsi_to_agg()
2958 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, agg_id, tc); in ice_sched_assoc_vsi_to_agg()
2968 devm_kfree(ice_hw_to_dev(pi->hw), old_agg_vsi_info); in ice_sched_assoc_vsi_to_agg()
2975 * @pi: port information structure
2980 static void ice_sched_rm_unused_rl_prof(struct ice_port_info *pi) in ice_sched_rm_unused_rl_prof() argument
2984 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_rm_unused_rl_prof()
2989 &pi->rl_prof_list[ln], list_entry) { in ice_sched_rm_unused_rl_prof()
2990 if (!ice_sched_del_rl_profile(pi->hw, rl_prof_elem)) in ice_sched_rm_unused_rl_prof()
2991 ice_debug(pi->hw, ICE_DBG_SCHED, "Removed rl profile\n"); in ice_sched_rm_unused_rl_prof()
3074 * @pi: port information structure
3082 ice_move_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, u16 vsi_handle, in ice_move_vsi_to_agg() argument
3088 mutex_lock(&pi->sched_lock); in ice_move_vsi_to_agg()
3089 status = ice_sched_assoc_vsi_to_agg(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
3092 status = ice_save_agg_vsi_tc_bitmap(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
3094 mutex_unlock(&pi->sched_lock); in ice_move_vsi_to_agg()
3169 * @pi: port information structure
3178 ice_sched_save_vsi_bw(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_save_vsi_bw() argument
3183 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_save_vsi_bw()
3185 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_save_vsi_bw()
3314 * @pi: port information structure
3326 ice_sched_add_rl_profile(struct ice_port_info *pi, in ice_sched_add_rl_profile() argument
3352 if (!pi) in ice_sched_add_rl_profile()
3354 hw = pi->hw; in ice_sched_add_rl_profile()
3355 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_add_rl_profile()
3388 list_add(&rl_prof_elem->list_entry, &pi->rl_prof_list[layer_num]); in ice_sched_add_rl_profile()
3501 * @pi: port information structure
3508 ice_sched_get_rl_prof_layer(struct ice_port_info *pi, enum ice_rl_type rl_type, in ice_sched_get_rl_prof_layer() argument
3511 struct ice_hw *hw = pi->hw; in ice_sched_get_rl_prof_layer()
3567 * @pi: port information structure
3577 ice_sched_rm_rl_profile(struct ice_port_info *pi, u8 layer_num, u8 profile_type, in ice_sched_rm_rl_profile() argument
3586 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_rm_rl_profile()
3596 status = ice_sched_del_rl_profile(pi->hw, rl_prof_elem); in ice_sched_rm_rl_profile()
3598 ice_debug(pi->hw, ICE_DBG_SCHED, "Remove rl profile failed\n"); in ice_sched_rm_rl_profile()
3608 * @pi: port information structure
3618 ice_sched_set_node_bw_dflt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt() argument
3628 hw = pi->hw; in ice_sched_set_node_bw_dflt()
3658 return ice_sched_rm_rl_profile(pi, layer_num, profile_type, old_id); in ice_sched_set_node_bw_dflt()
3663 * @pi: port information structure
3675 ice_sched_set_eir_srl_excl(struct ice_port_info *pi, in ice_sched_set_eir_srl_excl() argument
3692 return ice_sched_set_node_bw_dflt(pi, node, ICE_MAX_BW, in ice_sched_set_eir_srl_excl()
3699 return ice_sched_set_node_bw_dflt(pi, node, in ice_sched_set_eir_srl_excl()
3708 * @pi: port information structure
3719 ice_sched_set_node_bw(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw() argument
3723 struct ice_hw *hw = pi->hw; in ice_sched_set_node_bw()
3727 rl_prof_info = ice_sched_add_rl_profile(pi, rl_type, bw, layer_num); in ice_sched_set_node_bw()
3749 return ice_sched_rm_rl_profile(pi, layer_num, in ice_sched_set_node_bw()
3756 * @pi: port information structure
3763 ice_sched_set_node_priority(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_priority() argument
3775 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_priority()
3780 * @pi: port information structure
3787 ice_sched_set_node_weight(struct ice_port_info *pi, struct ice_sched_node *node, u16 weight) in ice_sched_set_node_weight() argument
3802 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_weight()
3807 * @pi: port information structure
3816 ice_sched_set_node_bw_lmt(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw_lmt() argument
3825 if (!pi) in ice_sched_set_node_bw_lmt()
3827 hw = pi->hw; in ice_sched_set_node_bw_lmt()
3829 ice_sched_rm_unused_rl_prof(pi); in ice_sched_set_node_bw_lmt()
3830 layer_num = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_node_bw_lmt()
3844 status = ice_sched_set_eir_srl_excl(pi, cfg_node, layer_num, rl_type, in ice_sched_set_node_bw_lmt()
3849 return ice_sched_set_node_bw_dflt(pi, cfg_node, rl_type, in ice_sched_set_node_bw_lmt()
3851 return ice_sched_set_node_bw(pi, cfg_node, rl_type, bw, layer_num); in ice_sched_set_node_bw_lmt()
3856 * @pi: port information structure
3865 ice_sched_set_node_bw_dflt_lmt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt_lmt() argument
3869 return ice_sched_set_node_bw_lmt(pi, node, rl_type, in ice_sched_set_node_bw_dflt_lmt()
3929 * @pi: port information structure
3939 ice_sched_set_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_set_q_bw_lmt() argument
3946 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_set_q_bw_lmt()
3948 mutex_lock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3949 q_ctx = ice_get_lan_q_ctx(pi->hw, vsi_handle, tc, q_handle); in ice_sched_set_q_bw_lmt()
3952 node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_set_q_bw_lmt()
3954 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong q_teid\n"); in ice_sched_set_q_bw_lmt()
3966 sel_layer = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_q_bw_lmt()
3968 if (sel_layer >= pi->hw->num_tx_sched_layers) { in ice_sched_set_q_bw_lmt()
3978 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_q_bw_lmt()
3980 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_q_bw_lmt()
3986 mutex_unlock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3992 * @pi: port information structure
4002 ice_cfg_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_lmt() argument
4005 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_lmt()
4011 * @pi: port information structure
4020 ice_cfg_q_bw_dflt_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_dflt_lmt() argument
4023 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_dflt_lmt()
4029 * @pi: port information structure
4039 ice_sched_get_node_by_id_type(struct ice_port_info *pi, u32 id, in ice_sched_get_node_by_id_type() argument
4049 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_get_node_by_id_type()
4052 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_node_by_id_type()
4062 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_get_node_by_id_type()
4064 node = ice_sched_get_agg_node(pi, tc_node, id); in ice_sched_get_node_by_id_type()
4077 * @pi: port information structure
4088 ice_sched_set_node_bw_lmt_per_tc(struct ice_port_info *pi, u32 id, in ice_sched_set_node_bw_lmt_per_tc() argument
4095 if (!pi) in ice_sched_set_node_bw_lmt_per_tc()
4101 mutex_lock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
4102 node = ice_sched_get_node_by_id_type(pi, id, agg_type, tc); in ice_sched_set_node_bw_lmt_per_tc()
4104 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong id, agg type, or tc\n"); in ice_sched_set_node_bw_lmt_per_tc()
4108 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_node_bw_lmt_per_tc()
4110 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_node_bw_lmt_per_tc()
4113 mutex_unlock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
4119 * @pi: port information structure
4129 ice_cfg_vsi_bw_lmt_per_tc(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_vsi_bw_lmt_per_tc() argument
4134 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_lmt_per_tc()
4138 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4139 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, bw); in ice_cfg_vsi_bw_lmt_per_tc()
4140 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4147 * @pi: port information structure
4156 ice_cfg_vsi_bw_dflt_lmt_per_tc(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_vsi_bw_dflt_lmt_per_tc() argument
4161 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4166 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4167 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4169 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4255 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_node_bw() local
4270 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MIN_BW, in ice_sched_replay_node_bw()
4283 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MAX_BW, in ice_sched_replay_node_bw()
4296 status = ice_sched_set_node_bw_lmt(pi, node, ICE_SHARED_BW, in ice_sched_replay_node_bw()
4303 * @pi: port info struct
4312 ice_sched_get_ena_tc_bitmap(struct ice_port_info *pi, in ice_sched_get_ena_tc_bitmap() argument
4321 (ice_sched_get_tc_node(pi, tc))) in ice_sched_get_ena_tc_bitmap()
4335 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg() local
4338 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg()
4347 ice_sched_get_ena_tc_bitmap(pi, in ice_sched_replay_agg()
4362 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg()
4374 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg_vsi_preinit() local
4377 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4386 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4402 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_vsi_agg() local
4415 ice_sched_get_ena_tc_bitmap(pi, agg_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4424 ice_sched_get_ena_tc_bitmap(pi, agg_vsi_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4427 return ice_sched_assoc_vsi_to_agg(pi, agg_info->agg_id, vsi_handle, in ice_sched_replay_vsi_agg()
4441 struct ice_port_info *pi = hw->port_info; in ice_replay_vsi_agg() local
4444 mutex_lock(&pi->sched_lock); in ice_replay_vsi_agg()
4446 mutex_unlock(&pi->sched_lock); in ice_replay_vsi_agg()
4452 * @pi: port information structure
4458 int ice_sched_replay_q_bw(struct ice_port_info *pi, struct ice_q_ctx *q_ctx) in ice_sched_replay_q_bw() argument
4463 q_node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_replay_q_bw()
4466 return ice_sched_replay_node_bw(pi->hw, q_node, &q_ctx->bw_t_info); in ice_sched_replay_q_bw()