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()
40 pi->root = root; in ice_sched_add_root_node()
143 * @pi: port information structure
151 ice_sched_add_node(struct ice_port_info *pi, u8 layer, in ice_sched_add_node() argument
161 if (!pi) in ice_sched_add_node()
164 hw = pi->hw; in ice_sched_add_node()
167 parent = ice_sched_find_node_by_teid(pi->root, in ice_sched_add_node()
260 * @pi: port information structure
267 ice_sched_get_first_node(struct ice_port_info *pi, in ice_sched_get_first_node() argument
270 return pi->sib_head[parent->tc_num][layer]; in ice_sched_get_first_node()
275 * @pi: port information structure
280 struct ice_sched_node *ice_sched_get_tc_node(struct ice_port_info *pi, u8 tc) in ice_sched_get_tc_node() argument
284 if (!pi || !pi->root) in ice_sched_get_tc_node()
286 for (i = 0; i < pi->root->num_children; i++) in ice_sched_get_tc_node()
287 if (pi->root->children[i]->tc_num == tc) in ice_sched_get_tc_node()
288 return pi->root->children[i]; in ice_sched_get_tc_node()
294 * @pi: port information structure
301 void ice_free_sched_node(struct ice_port_info *pi, struct ice_sched_node *node) in ice_free_sched_node() argument
304 struct ice_hw *hw = pi->hw; in ice_free_sched_node()
312 ice_free_sched_node(pi, node->children[0]); in ice_free_sched_node()
338 p = ice_sched_get_first_node(pi, node, node->tx_sched_layer); in ice_free_sched_node()
348 if (pi->sib_head[node->tc_num][node->tx_sched_layer] == node) in ice_free_sched_node()
349 pi->sib_head[node->tc_num][node->tx_sched_layer] = in ice_free_sched_node()
355 xa_erase(&pi->sched_node_ids, node->id); in ice_free_sched_node()
758 * @pi: port information structure
762 static void ice_sched_clear_rl_prof(struct ice_port_info *pi) in ice_sched_clear_rl_prof() argument
766 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_clear_rl_prof()
771 &pi->rl_prof_list[ln], list_entry) { in ice_sched_clear_rl_prof()
772 struct ice_hw *hw = pi->hw; in ice_sched_clear_rl_prof()
815 * @pi: port information structure
819 static void ice_sched_clear_tx_topo(struct ice_port_info *pi) in ice_sched_clear_tx_topo() argument
821 if (!pi) in ice_sched_clear_tx_topo()
824 ice_sched_clear_rl_prof(pi); in ice_sched_clear_tx_topo()
825 if (pi->root) { in ice_sched_clear_tx_topo()
826 ice_free_sched_node(pi, pi->root); in ice_sched_clear_tx_topo()
827 pi->root = NULL; in ice_sched_clear_tx_topo()
833 * @pi: port information structure
837 void ice_sched_clear_port(struct ice_port_info *pi) in ice_sched_clear_port() argument
839 if (!pi || pi->port_state != ICE_SCHED_PORT_STATE_READY) in ice_sched_clear_port()
842 pi->port_state = ICE_SCHED_PORT_STATE_INIT; in ice_sched_clear_port()
843 mutex_lock(&pi->sched_lock); in ice_sched_clear_port()
844 ice_sched_clear_tx_topo(pi); in ice_sched_clear_port()
845 mutex_unlock(&pi->sched_lock); in ice_sched_clear_port()
846 mutex_destroy(&pi->sched_lock); in ice_sched_clear_port()
873 * @pi: port information structure
885 ice_sched_add_elems(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_add_elems() argument
893 struct ice_hw *hw = pi->hw; in ice_sched_add_elems()
935 status = ice_sched_add_node(pi, layer, &buf->generic[i], prealloc_nodes[i]); in ice_sched_add_elems()
937 status = ice_sched_add_node(pi, layer, &buf->generic[i], NULL); in ice_sched_add_elems()
961 status = xa_alloc(&pi->sched_node_ids, &new_node->id, NULL, XA_LIMIT(0, UINT_MAX), in ice_sched_add_elems()
973 prev = ice_sched_get_first_node(pi, tc_node, layer); in ice_sched_add_elems()
981 if (!pi->sib_head[tc_node->tc_num][layer]) in ice_sched_add_elems()
982 pi->sib_head[tc_node->tc_num][layer] = new_node; in ice_sched_add_elems()
994 * @pi: port information structure
1005 ice_sched_add_nodes_to_hw_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_hw_layer() argument
1018 if (!parent || layer < pi->hw->sw_entry_point_layer) in ice_sched_add_nodes_to_hw_layer()
1022 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_hw_layer()
1032 return ice_sched_add_elems(pi, tc_node, parent, layer, num_nodes, in ice_sched_add_nodes_to_hw_layer()
1038 * @pi: port information structure
1049 ice_sched_add_nodes_to_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_layer() argument
1064 status = ice_sched_add_nodes_to_hw_layer(pi, tc_node, parent, in ice_sched_add_nodes_to_layer()
1072 ice_debug(pi->hw, ICE_DBG_SCHED, "added extra nodes %d %d\n", num_nodes, in ice_sched_add_nodes_to_layer()
1084 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_layer()
1164 * @pi: port information structure
1169 static void ice_rm_dflt_leaf_node(struct ice_port_info *pi) in ice_rm_dflt_leaf_node() argument
1173 node = pi->root; in ice_rm_dflt_leaf_node()
1184 status = ice_sched_remove_elems(pi->hw, node->parent, teid); in ice_rm_dflt_leaf_node()
1186 ice_free_sched_node(pi, node); in ice_rm_dflt_leaf_node()
1192 * @pi: port information structure
1197 static void ice_sched_rm_dflt_nodes(struct ice_port_info *pi) in ice_sched_rm_dflt_nodes() argument
1201 ice_rm_dflt_leaf_node(pi); in ice_sched_rm_dflt_nodes()
1204 node = pi->root; in ice_sched_rm_dflt_nodes()
1206 if (node->tx_sched_layer >= pi->hw->sw_entry_point_layer && in ice_sched_rm_dflt_nodes()
1209 ice_free_sched_node(pi, node); in ice_sched_rm_dflt_nodes()
1221 * @pi: port info structure for the tree to cleanup
1227 int ice_sched_init_port(struct ice_port_info *pi) in ice_sched_init_port() argument
1236 if (!pi) in ice_sched_init_port()
1238 hw = pi->hw; in ice_sched_init_port()
1246 status = ice_aq_get_dflt_topo(hw, pi->lport, buf, ICE_AQ_MAX_BUF_LEN, in ice_sched_init_port()
1275 pi->last_node_teid = in ice_sched_init_port()
1278 pi->last_node_teid = in ice_sched_init_port()
1282 status = ice_sched_add_root_node(pi, &buf[0].generic[0]); in ice_sched_init_port()
1297 status = ice_sched_add_node(pi, j, &buf[i].generic[j], NULL); in ice_sched_init_port()
1304 if (pi->root) in ice_sched_init_port()
1305 ice_sched_rm_dflt_nodes(pi); in ice_sched_init_port()
1308 pi->port_state = ICE_SCHED_PORT_STATE_READY; in ice_sched_init_port()
1309 mutex_init(&pi->sched_lock); in ice_sched_init_port()
1311 INIT_LIST_HEAD(&pi->rl_prof_list[i]); in ice_sched_init_port()
1314 if (status && pi->root) { in ice_sched_init_port()
1315 ice_free_sched_node(pi, pi->root); in ice_sched_init_port()
1316 pi->root = NULL; in ice_sched_init_port()
1453 * @pi: port information structure
1463 ice_sched_get_free_qgrp(struct ice_port_info *pi, in ice_sched_get_free_qgrp() argument
1483 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qgrp()
1500 * @pi: port information structure
1508 ice_sched_get_free_qparent(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_get_free_qparent() argument
1516 qgrp_layer = ice_sched_get_qgrp_layer(pi->hw); in ice_sched_get_free_qparent()
1517 max_children = pi->hw->max_children[qgrp_layer]; in ice_sched_get_free_qparent()
1519 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_free_qparent()
1528 qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); in ice_sched_get_free_qparent()
1531 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qparent()
1539 return ice_sched_get_free_qgrp(pi, vsi_node, qgrp_node, owner); in ice_sched_get_free_qparent()
1544 * @pi: pointer to the port information structure
1552 ice_sched_get_vsi_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_vsi_node() argument
1558 vsi_layer = ice_sched_get_vsi_layer(pi->hw); in ice_sched_get_vsi_node()
1559 node = ice_sched_get_first_node(pi, tc_node, vsi_layer); in ice_sched_get_vsi_node()
1573 * @pi: pointer to the port information structure
1581 ice_sched_get_agg_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_agg_node() argument
1585 struct ice_hw *hw = pi->hw; in ice_sched_get_agg_node()
1591 node = ice_sched_get_first_node(pi, tc_node, agg_layer); in ice_sched_get_agg_node()
1633 * @pi: port information structure
1643 ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_child_nodes() argument
1648 struct ice_hw *hw = pi->hw; in ice_sched_add_vsi_child_nodes()
1655 parent = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_add_vsi_child_nodes()
1662 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_vsi_child_nodes()
1690 * @pi: pointer to the port info structure
1699 ice_sched_calc_vsi_support_nodes(struct ice_port_info *pi, in ice_sched_calc_vsi_support_nodes() argument
1706 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_calc_vsi_support_nodes()
1707 for (i = vsil; i >= pi->hw->sw_entry_point_layer; i--) in ice_sched_calc_vsi_support_nodes()
1717 node = ice_sched_get_first_node(pi, tc_node, (u8)i); in ice_sched_calc_vsi_support_nodes()
1720 if (node->num_children < pi->hw->max_children[i]) in ice_sched_calc_vsi_support_nodes()
1738 * @pi: port information structure
1747 ice_sched_add_vsi_support_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_support_nodes() argument
1755 if (!pi) in ice_sched_add_vsi_support_nodes()
1758 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_add_vsi_support_nodes()
1759 for (i = pi->hw->sw_entry_point_layer; i <= vsil; i++) { in ice_sched_add_vsi_support_nodes()
1762 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, in ice_sched_add_vsi_support_nodes()
1790 * @pi: port information structure
1797 ice_sched_add_vsi_to_topo(struct ice_port_info *pi, u16 vsi_handle, u8 tc) in ice_sched_add_vsi_to_topo() argument
1802 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_vsi_to_topo()
1807 ice_sched_calc_vsi_support_nodes(pi, tc_node, num_nodes); in ice_sched_add_vsi_to_topo()
1810 return ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, in ice_sched_add_vsi_to_topo()
1816 * @pi: port information structure
1825 ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_update_vsi_child_nodes() argument
1832 struct ice_hw *hw = pi->hw; in ice_sched_update_vsi_child_nodes()
1836 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_update_vsi_child_nodes()
1840 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_update_vsi_child_nodes()
1874 status = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node, in ice_sched_update_vsi_child_nodes()
1888 * @pi: port information structure
1900 ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs, in ice_sched_cfg_vsi() argument
1905 struct ice_hw *hw = pi->hw; in ice_sched_cfg_vsi()
1908 ice_debug(pi->hw, ICE_DBG_SCHED, "add/config VSI %d\n", vsi_handle); in ice_sched_cfg_vsi()
1909 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_cfg_vsi()
1915 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
1932 status = ice_sched_add_vsi_to_topo(pi, vsi_handle, tc); in ice_sched_cfg_vsi()
1936 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
1951 status = ice_sched_update_vsi_child_nodes(pi, vsi_handle, tc, maxqs, in ice_sched_cfg_vsi()
1970 * @pi: port information structure
1976 static void ice_sched_rm_agg_vsi_info(struct ice_port_info *pi, u16 vsi_handle) in ice_sched_rm_agg_vsi_info() argument
1981 list_for_each_entry_safe(agg_info, atmp, &pi->hw->agg_list, in ice_sched_rm_agg_vsi_info()
1990 devm_kfree(ice_hw_to_dev(pi->hw), in ice_sched_rm_agg_vsi_info()
2016 * @pi: port information structure
2024 ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner) in ice_sched_rm_vsi_cfg() argument
2030 ice_debug(pi->hw, ICE_DBG_SCHED, "removing VSI %d\n", vsi_handle); in ice_sched_rm_vsi_cfg()
2031 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_rm_vsi_cfg()
2033 mutex_lock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2034 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_rm_vsi_cfg()
2042 tc_node = ice_sched_get_tc_node(pi, i); in ice_sched_rm_vsi_cfg()
2046 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_rm_vsi_cfg()
2051 ice_debug(pi->hw, ICE_DBG_SCHED, "VSI has leaf nodes in TC %d\n", i); in ice_sched_rm_vsi_cfg()
2057 ice_free_sched_node(pi, vsi_node->children[j]); in ice_sched_rm_vsi_cfg()
2069 ice_free_sched_node(pi, vsi_node); in ice_sched_rm_vsi_cfg()
2073 ice_sched_rm_agg_vsi_info(pi, vsi_handle); in ice_sched_rm_vsi_cfg()
2083 mutex_unlock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2089 * @pi: port information structure
2095 int ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_lan_cfg() argument
2097 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_LAN); in ice_rm_vsi_lan_cfg()
2102 * @pi: port information structure
2108 int ice_rm_vsi_rdma_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_rdma_cfg() argument
2110 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_RDMA); in ice_rm_vsi_rdma_cfg()
2211 * @pi: port information structure
2219 ice_sched_move_nodes(struct ice_port_info *pi, struct ice_sched_node *parent, in ice_sched_move_nodes() argument
2229 hw = pi->hw; in ice_sched_move_nodes()
2240 node = ice_sched_find_node_by_teid(pi->root, list[i]); in ice_sched_move_nodes()
2265 * @pi: port information structure
2274 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
2284 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_move_vsi_to_agg()
2288 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_move_vsi_to_agg()
2292 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_move_vsi_to_agg()
2297 if (ice_sched_find_node_in_subtree(pi->hw, agg_node, vsi_node)) in ice_sched_move_vsi_to_agg()
2300 aggl = ice_sched_get_agg_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2301 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2309 parent = ice_sched_get_free_vsi_parent(pi->hw, in ice_sched_move_vsi_to_agg()
2319 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_move_vsi_to_agg()
2341 return ice_sched_move_nodes(pi, parent, 1, &vsi_teid); in ice_sched_move_vsi_to_agg()
2346 * @pi: port information structure
2356 ice_move_all_vsi_to_dflt_agg(struct ice_port_info *pi, in ice_move_all_vsi_to_dflt_agg() argument
2372 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, in ice_move_all_vsi_to_dflt_agg()
2380 devm_kfree(ice_hw_to_dev(pi->hw), agg_vsi_info); in ice_move_all_vsi_to_dflt_agg()
2389 * @pi: port information structure
2395 ice_sched_is_agg_inuse(struct ice_port_info *pi, struct ice_sched_node *node) in ice_sched_is_agg_inuse() argument
2399 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_is_agg_inuse()
2402 if (ice_sched_is_agg_inuse(pi, node->children[i])) in ice_sched_is_agg_inuse()
2412 * @pi: port information structure
2420 ice_sched_rm_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_rm_agg_cfg() argument
2423 struct ice_hw *hw = pi->hw; in ice_sched_rm_agg_cfg()
2425 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_rm_agg_cfg()
2429 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_rm_agg_cfg()
2434 if (ice_sched_is_agg_inuse(pi, agg_node)) in ice_sched_rm_agg_cfg()
2452 ice_free_sched_node(pi, agg_node); in ice_sched_rm_agg_cfg()
2458 * @pi: port information structure
2468 ice_rm_agg_cfg_tc(struct ice_port_info *pi, struct ice_sched_agg_info *agg_info, in ice_rm_agg_cfg_tc() argument
2477 status = ice_move_all_vsi_to_dflt_agg(pi, agg_info, tc, rm_vsi_info); in ice_rm_agg_cfg_tc()
2482 status = ice_sched_rm_agg_cfg(pi, agg_info->agg_id, tc); in ice_rm_agg_cfg_tc()
2493 * @pi: port information structure
2501 ice_save_agg_tc_bitmap(struct ice_port_info *pi, u32 agg_id, in ice_save_agg_tc_bitmap() argument
2506 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_tc_bitmap()
2516 * @pi: port information structure
2524 ice_sched_add_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_add_agg_cfg() argument
2528 struct ice_hw *hw = pi->hw; in ice_sched_add_agg_cfg()
2534 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_agg_cfg()
2538 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_add_agg_cfg()
2553 parent = ice_sched_get_first_node(pi, tc_node, i); in ice_sched_add_agg_cfg()
2573 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_agg_cfg()
2599 * @pi: port information structure
2614 ice_sched_cfg_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_cfg_agg() argument
2618 struct ice_hw *hw = pi->hw; in ice_sched_cfg_agg()
2644 status = ice_rm_agg_cfg_tc(pi, agg_info, tc, false); in ice_sched_cfg_agg()
2655 status = ice_sched_add_agg_cfg(pi, agg_id, tc); in ice_sched_cfg_agg()
2668 * @pi: port information structure
2676 ice_cfg_agg(struct ice_port_info *pi, u32 agg_id, enum ice_agg_type agg_type, in ice_cfg_agg() argument
2682 mutex_lock(&pi->sched_lock); in ice_cfg_agg()
2683 status = ice_sched_cfg_agg(pi, agg_id, agg_type, &bitmap); in ice_cfg_agg()
2685 status = ice_save_agg_tc_bitmap(pi, agg_id, &bitmap); in ice_cfg_agg()
2686 mutex_unlock(&pi->sched_lock); in ice_cfg_agg()
2736 * @pi: port information structure
2745 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
2751 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_vsi_tc_bitmap()
2765 * @pi: port information structure
2775 ice_sched_assoc_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_assoc_vsi_to_agg() argument
2780 struct ice_hw *hw = pi->hw; in ice_sched_assoc_vsi_to_agg()
2784 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_assoc_vsi_to_agg()
2824 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, agg_id, tc); in ice_sched_assoc_vsi_to_agg()
2834 devm_kfree(ice_hw_to_dev(pi->hw), old_agg_vsi_info); in ice_sched_assoc_vsi_to_agg()
2841 * @pi: port information structure
2846 static void ice_sched_rm_unused_rl_prof(struct ice_port_info *pi) in ice_sched_rm_unused_rl_prof() argument
2850 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_rm_unused_rl_prof()
2855 &pi->rl_prof_list[ln], list_entry) { in ice_sched_rm_unused_rl_prof()
2856 if (!ice_sched_del_rl_profile(pi->hw, rl_prof_elem)) in ice_sched_rm_unused_rl_prof()
2857 ice_debug(pi->hw, ICE_DBG_SCHED, "Removed rl profile\n"); in ice_sched_rm_unused_rl_prof()
2940 * @pi: port information structure
2948 ice_move_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, u16 vsi_handle, in ice_move_vsi_to_agg() argument
2954 mutex_lock(&pi->sched_lock); in ice_move_vsi_to_agg()
2955 status = ice_sched_assoc_vsi_to_agg(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
2958 status = ice_save_agg_vsi_tc_bitmap(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
2960 mutex_unlock(&pi->sched_lock); in ice_move_vsi_to_agg()
3035 * @pi: port information structure
3044 ice_sched_save_vsi_bw(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_save_vsi_bw() argument
3049 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_save_vsi_bw()
3051 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_save_vsi_bw()
3180 * @pi: port information structure
3192 ice_sched_add_rl_profile(struct ice_port_info *pi, in ice_sched_add_rl_profile() argument
3218 if (!pi) in ice_sched_add_rl_profile()
3220 hw = pi->hw; in ice_sched_add_rl_profile()
3221 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_add_rl_profile()
3254 list_add(&rl_prof_elem->list_entry, &pi->rl_prof_list[layer_num]); in ice_sched_add_rl_profile()
3367 * @pi: port information structure
3374 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
3377 struct ice_hw *hw = pi->hw; in ice_sched_get_rl_prof_layer()
3433 * @pi: port information structure
3443 ice_sched_rm_rl_profile(struct ice_port_info *pi, u8 layer_num, u8 profile_type, in ice_sched_rm_rl_profile() argument
3452 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_rm_rl_profile()
3462 status = ice_sched_del_rl_profile(pi->hw, rl_prof_elem); in ice_sched_rm_rl_profile()
3464 ice_debug(pi->hw, ICE_DBG_SCHED, "Remove rl profile failed\n"); in ice_sched_rm_rl_profile()
3474 * @pi: port information structure
3484 ice_sched_set_node_bw_dflt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt() argument
3494 hw = pi->hw; in ice_sched_set_node_bw_dflt()
3524 return ice_sched_rm_rl_profile(pi, layer_num, profile_type, old_id); in ice_sched_set_node_bw_dflt()
3529 * @pi: port information structure
3541 ice_sched_set_eir_srl_excl(struct ice_port_info *pi, in ice_sched_set_eir_srl_excl() argument
3558 return ice_sched_set_node_bw_dflt(pi, node, ICE_MAX_BW, in ice_sched_set_eir_srl_excl()
3565 return ice_sched_set_node_bw_dflt(pi, node, in ice_sched_set_eir_srl_excl()
3574 * @pi: port information structure
3585 ice_sched_set_node_bw(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw() argument
3589 struct ice_hw *hw = pi->hw; in ice_sched_set_node_bw()
3593 rl_prof_info = ice_sched_add_rl_profile(pi, rl_type, bw, layer_num); in ice_sched_set_node_bw()
3615 return ice_sched_rm_rl_profile(pi, layer_num, in ice_sched_set_node_bw()
3622 * @pi: port information structure
3629 ice_sched_set_node_priority(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_priority() argument
3641 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_priority()
3646 * @pi: port information structure
3653 ice_sched_set_node_weight(struct ice_port_info *pi, struct ice_sched_node *node, u16 weight) in ice_sched_set_node_weight() argument
3668 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_weight()
3673 * @pi: port information structure
3682 ice_sched_set_node_bw_lmt(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw_lmt() argument
3691 if (!pi) in ice_sched_set_node_bw_lmt()
3693 hw = pi->hw; in ice_sched_set_node_bw_lmt()
3695 ice_sched_rm_unused_rl_prof(pi); in ice_sched_set_node_bw_lmt()
3696 layer_num = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_node_bw_lmt()
3710 status = ice_sched_set_eir_srl_excl(pi, cfg_node, layer_num, rl_type, in ice_sched_set_node_bw_lmt()
3715 return ice_sched_set_node_bw_dflt(pi, cfg_node, rl_type, in ice_sched_set_node_bw_lmt()
3717 return ice_sched_set_node_bw(pi, cfg_node, rl_type, bw, layer_num); in ice_sched_set_node_bw_lmt()
3722 * @pi: port information structure
3731 ice_sched_set_node_bw_dflt_lmt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt_lmt() argument
3735 return ice_sched_set_node_bw_lmt(pi, node, rl_type, in ice_sched_set_node_bw_dflt_lmt()
3795 * @pi: port information structure
3805 ice_sched_set_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_set_q_bw_lmt() argument
3812 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_set_q_bw_lmt()
3814 mutex_lock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3815 q_ctx = ice_get_lan_q_ctx(pi->hw, vsi_handle, tc, q_handle); in ice_sched_set_q_bw_lmt()
3818 node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_set_q_bw_lmt()
3820 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong q_teid\n"); in ice_sched_set_q_bw_lmt()
3832 sel_layer = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_q_bw_lmt()
3834 if (sel_layer >= pi->hw->num_tx_sched_layers) { in ice_sched_set_q_bw_lmt()
3844 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_q_bw_lmt()
3846 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_q_bw_lmt()
3852 mutex_unlock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3858 * @pi: port information structure
3868 ice_cfg_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_lmt() argument
3871 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_lmt()
3877 * @pi: port information structure
3886 ice_cfg_q_bw_dflt_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_dflt_lmt() argument
3889 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_dflt_lmt()
3895 * @pi: port information structure
3905 ice_sched_get_node_by_id_type(struct ice_port_info *pi, u32 id, in ice_sched_get_node_by_id_type() argument
3915 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_get_node_by_id_type()
3918 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_node_by_id_type()
3928 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_get_node_by_id_type()
3930 node = ice_sched_get_agg_node(pi, tc_node, id); in ice_sched_get_node_by_id_type()
3943 * @pi: port information structure
3954 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
3961 if (!pi) in ice_sched_set_node_bw_lmt_per_tc()
3967 mutex_lock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
3968 node = ice_sched_get_node_by_id_type(pi, id, agg_type, tc); in ice_sched_set_node_bw_lmt_per_tc()
3970 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong id, agg type, or tc\n"); in ice_sched_set_node_bw_lmt_per_tc()
3974 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_node_bw_lmt_per_tc()
3976 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_node_bw_lmt_per_tc()
3979 mutex_unlock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
3985 * @pi: port information structure
3995 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
4000 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_lmt_per_tc()
4004 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4005 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, bw); in ice_cfg_vsi_bw_lmt_per_tc()
4006 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4013 * @pi: port information structure
4022 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
4027 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4032 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4033 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4035 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4121 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_node_bw() local
4136 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MIN_BW, in ice_sched_replay_node_bw()
4149 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MAX_BW, in ice_sched_replay_node_bw()
4162 status = ice_sched_set_node_bw_lmt(pi, node, ICE_SHARED_BW, in ice_sched_replay_node_bw()
4169 * @pi: port info struct
4178 ice_sched_get_ena_tc_bitmap(struct ice_port_info *pi, in ice_sched_get_ena_tc_bitmap() argument
4187 (ice_sched_get_tc_node(pi, tc))) in ice_sched_get_ena_tc_bitmap()
4201 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg() local
4204 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg()
4213 ice_sched_get_ena_tc_bitmap(pi, in ice_sched_replay_agg()
4228 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg()
4240 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg_vsi_preinit() local
4243 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4252 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4268 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_vsi_agg() local
4281 ice_sched_get_ena_tc_bitmap(pi, agg_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4290 ice_sched_get_ena_tc_bitmap(pi, agg_vsi_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4293 return ice_sched_assoc_vsi_to_agg(pi, agg_info->agg_id, vsi_handle, in ice_sched_replay_vsi_agg()
4307 struct ice_port_info *pi = hw->port_info; in ice_replay_vsi_agg() local
4310 mutex_lock(&pi->sched_lock); in ice_replay_vsi_agg()
4312 mutex_unlock(&pi->sched_lock); in ice_replay_vsi_agg()
4318 * @pi: port information structure
4324 int ice_sched_replay_q_bw(struct ice_port_info *pi, struct ice_q_ctx *q_ctx) in ice_sched_replay_q_bw() argument
4329 q_node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_replay_q_bw()
4332 return ice_sched_replay_node_bw(pi->hw, q_node, &q_ctx->bw_t_info); in ice_sched_replay_q_bw()