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()
279 * @pi: port information structure
286 ice_sched_get_first_node(struct ice_port_info *pi, in ice_sched_get_first_node() argument
289 return pi->sib_head[parent->tc_num][layer]; in ice_sched_get_first_node()
294 * @pi: port information structure
299 struct ice_sched_node *ice_sched_get_tc_node(struct ice_port_info *pi, u8 tc) in ice_sched_get_tc_node() argument
303 if (!pi || !pi->root) in ice_sched_get_tc_node()
305 for (i = 0; i < pi->root->num_children; i++) in ice_sched_get_tc_node()
306 if (pi->root->children[i]->tc_num == tc) in ice_sched_get_tc_node()
307 return pi->root->children[i]; in ice_sched_get_tc_node()
313 * @pi: port information structure
320 void ice_free_sched_node(struct ice_port_info *pi, struct ice_sched_node *node) in ice_free_sched_node() argument
323 struct ice_hw *hw = pi->hw; in ice_free_sched_node()
331 ice_free_sched_node(pi, node->children[0]); in ice_free_sched_node()
357 p = ice_sched_get_first_node(pi, node, node->tx_sched_layer); in ice_free_sched_node()
367 if (pi->sib_head[node->tc_num][node->tx_sched_layer] == node) in ice_free_sched_node()
368 pi->sib_head[node->tc_num][node->tx_sched_layer] = in ice_free_sched_node()
374 xa_erase(&pi->sched_node_ids, node->id); in ice_free_sched_node()
777 * @pi: port information structure
781 static void ice_sched_clear_rl_prof(struct ice_port_info *pi) in ice_sched_clear_rl_prof() argument
785 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_clear_rl_prof()
790 &pi->rl_prof_list[ln], list_entry) { in ice_sched_clear_rl_prof()
791 struct ice_hw *hw = pi->hw; in ice_sched_clear_rl_prof()
834 * @pi: port information structure
838 static void ice_sched_clear_tx_topo(struct ice_port_info *pi) in ice_sched_clear_tx_topo() argument
840 if (!pi) in ice_sched_clear_tx_topo()
843 ice_sched_clear_rl_prof(pi); in ice_sched_clear_tx_topo()
844 if (pi->root) { in ice_sched_clear_tx_topo()
845 ice_free_sched_node(pi, pi->root); in ice_sched_clear_tx_topo()
846 pi->root = NULL; in ice_sched_clear_tx_topo()
852 * @pi: port information structure
856 void ice_sched_clear_port(struct ice_port_info *pi) in ice_sched_clear_port() argument
858 if (!pi || pi->port_state != ICE_SCHED_PORT_STATE_READY) in ice_sched_clear_port()
861 pi->port_state = ICE_SCHED_PORT_STATE_INIT; in ice_sched_clear_port()
862 mutex_lock(&pi->sched_lock); in ice_sched_clear_port()
863 ice_sched_clear_tx_topo(pi); in ice_sched_clear_port()
864 mutex_unlock(&pi->sched_lock); in ice_sched_clear_port()
865 mutex_destroy(&pi->sched_lock); in ice_sched_clear_port()
892 * @pi: port information structure
904 ice_sched_add_elems(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_add_elems() argument
912 struct ice_hw *hw = pi->hw; in ice_sched_add_elems()
954 status = ice_sched_add_node(pi, layer, &buf->generic[i], prealloc_nodes[i]); in ice_sched_add_elems()
956 status = ice_sched_add_node(pi, layer, &buf->generic[i], NULL); in ice_sched_add_elems()
980 status = xa_alloc(&pi->sched_node_ids, &new_node->id, NULL, XA_LIMIT(0, UINT_MAX), in ice_sched_add_elems()
992 prev = ice_sched_get_first_node(pi, tc_node, layer); in ice_sched_add_elems()
1000 if (!pi->sib_head[tc_node->tc_num][layer]) in ice_sched_add_elems()
1001 pi->sib_head[tc_node->tc_num][layer] = new_node; in ice_sched_add_elems()
1013 * @pi: port information structure
1024 ice_sched_add_nodes_to_hw_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_hw_layer() argument
1037 if (!parent || layer < pi->hw->sw_entry_point_layer) in ice_sched_add_nodes_to_hw_layer()
1041 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_hw_layer()
1051 return ice_sched_add_elems(pi, tc_node, parent, layer, num_nodes, in ice_sched_add_nodes_to_hw_layer()
1057 * @pi: port information structure
1068 ice_sched_add_nodes_to_layer(struct ice_port_info *pi, in ice_sched_add_nodes_to_layer() argument
1083 status = ice_sched_add_nodes_to_hw_layer(pi, tc_node, parent, in ice_sched_add_nodes_to_layer()
1091 ice_debug(pi->hw, ICE_DBG_SCHED, "added extra nodes %d %d\n", num_nodes, in ice_sched_add_nodes_to_layer()
1103 max_child_nodes = pi->hw->max_children[parent->tx_sched_layer]; in ice_sched_add_nodes_to_layer()
1181 * @pi: port information structure
1186 static void ice_rm_dflt_leaf_node(struct ice_port_info *pi) in ice_rm_dflt_leaf_node() argument
1190 node = pi->root; in ice_rm_dflt_leaf_node()
1201 status = ice_sched_remove_elems(pi->hw, node->parent, teid); in ice_rm_dflt_leaf_node()
1203 ice_free_sched_node(pi, node); in ice_rm_dflt_leaf_node()
1209 * @pi: port information structure
1214 static void ice_sched_rm_dflt_nodes(struct ice_port_info *pi) in ice_sched_rm_dflt_nodes() argument
1218 ice_rm_dflt_leaf_node(pi); in ice_sched_rm_dflt_nodes()
1221 node = pi->root; in ice_sched_rm_dflt_nodes()
1223 if (node->tx_sched_layer >= pi->hw->sw_entry_point_layer && in ice_sched_rm_dflt_nodes()
1226 ice_free_sched_node(pi, node); in ice_sched_rm_dflt_nodes()
1238 * @pi: port info structure for the tree to cleanup
1244 int ice_sched_init_port(struct ice_port_info *pi) in ice_sched_init_port() argument
1253 if (!pi) in ice_sched_init_port()
1255 hw = pi->hw; in ice_sched_init_port()
1263 status = ice_aq_get_dflt_topo(hw, pi->lport, buf, ICE_AQ_MAX_BUF_LEN, in ice_sched_init_port()
1292 pi->last_node_teid = in ice_sched_init_port()
1295 pi->last_node_teid = in ice_sched_init_port()
1299 status = ice_sched_add_root_node(pi, &buf[0].generic[0]); in ice_sched_init_port()
1314 status = ice_sched_add_node(pi, j, &buf[i].generic[j], NULL); in ice_sched_init_port()
1321 if (pi->root) in ice_sched_init_port()
1322 ice_sched_rm_dflt_nodes(pi); in ice_sched_init_port()
1325 pi->port_state = ICE_SCHED_PORT_STATE_READY; in ice_sched_init_port()
1326 mutex_init(&pi->sched_lock); in ice_sched_init_port()
1328 INIT_LIST_HEAD(&pi->rl_prof_list[i]); in ice_sched_init_port()
1331 if (status && pi->root) { in ice_sched_init_port()
1332 ice_free_sched_node(pi, pi->root); in ice_sched_init_port()
1333 pi->root = NULL; in ice_sched_init_port()
1470 * @pi: port information structure
1480 ice_sched_get_free_qgrp(struct ice_port_info *pi, in ice_sched_get_free_qgrp() argument
1500 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qgrp()
1517 * @pi: port information structure
1525 ice_sched_get_free_qparent(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_get_free_qparent() argument
1533 qgrp_layer = ice_sched_get_qgrp_layer(pi->hw); in ice_sched_get_free_qparent()
1534 vsi_layer = ice_sched_get_vsi_layer(pi->hw); in ice_sched_get_free_qparent()
1535 max_children = pi->hw->max_children[qgrp_layer]; in ice_sched_get_free_qparent()
1537 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_free_qparent()
1552 qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); in ice_sched_get_free_qparent()
1557 if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) in ice_sched_get_free_qparent()
1570 qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); in ice_sched_get_free_qparent()
1574 return ice_sched_get_free_qgrp(pi, vsi_node, qgrp_node, owner); in ice_sched_get_free_qparent()
1579 * @pi: pointer to the port information structure
1587 ice_sched_get_vsi_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_vsi_node() argument
1593 vsi_layer = ice_sched_get_vsi_layer(pi->hw); in ice_sched_get_vsi_node()
1594 node = ice_sched_get_first_node(pi, tc_node, vsi_layer); in ice_sched_get_vsi_node()
1608 * @pi: pointer to the port information structure
1616 ice_sched_get_agg_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, in ice_sched_get_agg_node() argument
1620 struct ice_hw *hw = pi->hw; in ice_sched_get_agg_node()
1626 node = ice_sched_get_first_node(pi, tc_node, agg_layer); in ice_sched_get_agg_node()
1668 * @pi: port information structure
1678 ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_child_nodes() argument
1683 struct ice_hw *hw = pi->hw; in ice_sched_add_vsi_child_nodes()
1690 parent = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_add_vsi_child_nodes()
1697 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_vsi_child_nodes()
1725 * @pi: pointer to the port info structure
1734 ice_sched_calc_vsi_support_nodes(struct ice_port_info *pi, in ice_sched_calc_vsi_support_nodes() argument
1741 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_calc_vsi_support_nodes()
1742 for (i = vsil; i >= pi->hw->sw_entry_point_layer; i--) in ice_sched_calc_vsi_support_nodes()
1752 node = ice_sched_get_first_node(pi, tc_node, (u8)i); in ice_sched_calc_vsi_support_nodes()
1755 if (node->num_children < pi->hw->max_children[i]) in ice_sched_calc_vsi_support_nodes()
1773 * @pi: port information structure
1782 ice_sched_add_vsi_support_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_add_vsi_support_nodes() argument
1790 if (!pi) in ice_sched_add_vsi_support_nodes()
1793 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_add_vsi_support_nodes()
1794 for (i = pi->hw->sw_entry_point_layer; i <= vsil; i++) { in ice_sched_add_vsi_support_nodes()
1797 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, in ice_sched_add_vsi_support_nodes()
1829 * @pi: port information structure
1836 ice_sched_add_vsi_to_topo(struct ice_port_info *pi, u16 vsi_handle, u8 tc) in ice_sched_add_vsi_to_topo() argument
1841 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_vsi_to_topo()
1846 ice_sched_calc_vsi_support_nodes(pi, tc_node, num_nodes); in ice_sched_add_vsi_to_topo()
1849 return ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, in ice_sched_add_vsi_to_topo()
1890 * @pi: port information structure
1899 ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, in ice_sched_update_vsi_child_nodes() argument
1906 struct ice_hw *hw = pi->hw; in ice_sched_update_vsi_child_nodes()
1910 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_update_vsi_child_nodes()
1914 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_update_vsi_child_nodes()
1953 status = ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, in ice_sched_update_vsi_child_nodes()
1958 status = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node, in ice_sched_update_vsi_child_nodes()
1972 * @pi: port information structure
1984 ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs, in ice_sched_cfg_vsi() argument
1989 struct ice_hw *hw = pi->hw; in ice_sched_cfg_vsi()
1992 ice_debug(pi->hw, ICE_DBG_SCHED, "add/config VSI %d\n", vsi_handle); in ice_sched_cfg_vsi()
1993 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_cfg_vsi()
1999 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
2016 status = ice_sched_add_vsi_to_topo(pi, vsi_handle, tc); in ice_sched_cfg_vsi()
2020 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_cfg_vsi()
2035 status = ice_sched_update_vsi_child_nodes(pi, vsi_handle, tc, maxqs, in ice_sched_cfg_vsi()
2054 * @pi: port information structure
2060 static void ice_sched_rm_agg_vsi_info(struct ice_port_info *pi, u16 vsi_handle) in ice_sched_rm_agg_vsi_info() argument
2065 list_for_each_entry_safe(agg_info, atmp, &pi->hw->agg_list, in ice_sched_rm_agg_vsi_info()
2074 devm_kfree(ice_hw_to_dev(pi->hw), in ice_sched_rm_agg_vsi_info()
2100 * @pi: port information structure
2111 ice_sched_rm_vsi_subtree(struct ice_port_info *pi, in ice_sched_rm_vsi_subtree() argument
2122 ice_debug(pi->hw, ICE_DBG_SCHED, "VSI has leaf nodes in TC %d\n", tc); in ice_sched_rm_vsi_subtree()
2127 ice_free_sched_node(pi, vsi_node->children[j]); in ice_sched_rm_vsi_subtree()
2136 ice_free_sched_node(pi, vsi_node); in ice_sched_rm_vsi_subtree()
2145 ice_sched_rm_agg_vsi_info(pi, vsi_handle); in ice_sched_rm_vsi_subtree()
2152 * @pi: port information structure
2160 ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner) in ice_sched_rm_vsi_cfg() argument
2166 ice_debug(pi->hw, ICE_DBG_SCHED, "removing VSI %d\n", vsi_handle); in ice_sched_rm_vsi_cfg()
2167 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_rm_vsi_cfg()
2169 mutex_lock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2170 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_rm_vsi_cfg()
2177 tc_node = ice_sched_get_tc_node(pi, i); in ice_sched_rm_vsi_cfg()
2181 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_rm_vsi_cfg()
2185 status = ice_sched_rm_vsi_subtree(pi, vsi_node, owner, i); in ice_sched_rm_vsi_cfg()
2199 mutex_unlock(&pi->sched_lock); in ice_sched_rm_vsi_cfg()
2205 * @pi: port information structure
2211 int ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_lan_cfg() argument
2213 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_LAN); in ice_rm_vsi_lan_cfg()
2218 * @pi: port information structure
2224 int ice_rm_vsi_rdma_cfg(struct ice_port_info *pi, u16 vsi_handle) in ice_rm_vsi_rdma_cfg() argument
2226 return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_RDMA); in ice_rm_vsi_rdma_cfg()
2327 * @pi: port information structure
2335 ice_sched_move_nodes(struct ice_port_info *pi, struct ice_sched_node *parent, in ice_sched_move_nodes() argument
2345 hw = pi->hw; in ice_sched_move_nodes()
2356 node = ice_sched_find_node_by_teid(pi->root, list[i]); in ice_sched_move_nodes()
2381 * @pi: port information structure
2390 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
2400 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_move_vsi_to_agg()
2404 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_move_vsi_to_agg()
2408 vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle); in ice_sched_move_vsi_to_agg()
2413 if (ice_sched_find_node_in_subtree(pi->hw, agg_node, vsi_node)) in ice_sched_move_vsi_to_agg()
2416 aggl = ice_sched_get_agg_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2417 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_move_vsi_to_agg()
2425 parent = ice_sched_get_free_vsi_parent(pi->hw, in ice_sched_move_vsi_to_agg()
2435 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_move_vsi_to_agg()
2457 return ice_sched_move_nodes(pi, parent, 1, &vsi_teid); in ice_sched_move_vsi_to_agg()
2462 * @pi: port information structure
2472 ice_move_all_vsi_to_dflt_agg(struct ice_port_info *pi, in ice_move_all_vsi_to_dflt_agg() argument
2488 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, in ice_move_all_vsi_to_dflt_agg()
2496 devm_kfree(ice_hw_to_dev(pi->hw), agg_vsi_info); in ice_move_all_vsi_to_dflt_agg()
2505 * @pi: port information structure
2511 ice_sched_is_agg_inuse(struct ice_port_info *pi, struct ice_sched_node *node) in ice_sched_is_agg_inuse() argument
2515 vsil = ice_sched_get_vsi_layer(pi->hw); in ice_sched_is_agg_inuse()
2518 if (ice_sched_is_agg_inuse(pi, node->children[i])) in ice_sched_is_agg_inuse()
2528 * @pi: port information structure
2536 ice_sched_rm_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_rm_agg_cfg() argument
2539 struct ice_hw *hw = pi->hw; in ice_sched_rm_agg_cfg()
2541 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_rm_agg_cfg()
2545 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_rm_agg_cfg()
2550 if (ice_sched_is_agg_inuse(pi, agg_node)) in ice_sched_rm_agg_cfg()
2568 ice_free_sched_node(pi, agg_node); in ice_sched_rm_agg_cfg()
2574 * @pi: port information structure
2584 ice_rm_agg_cfg_tc(struct ice_port_info *pi, struct ice_sched_agg_info *agg_info, in ice_rm_agg_cfg_tc() argument
2593 status = ice_move_all_vsi_to_dflt_agg(pi, agg_info, tc, rm_vsi_info); in ice_rm_agg_cfg_tc()
2598 status = ice_sched_rm_agg_cfg(pi, agg_info->agg_id, tc); in ice_rm_agg_cfg_tc()
2609 * @pi: port information structure
2617 ice_save_agg_tc_bitmap(struct ice_port_info *pi, u32 agg_id, in ice_save_agg_tc_bitmap() argument
2622 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_tc_bitmap()
2632 * @pi: port information structure
2640 ice_sched_add_agg_cfg(struct ice_port_info *pi, u32 agg_id, u8 tc) in ice_sched_add_agg_cfg() argument
2644 struct ice_hw *hw = pi->hw; in ice_sched_add_agg_cfg()
2650 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_add_agg_cfg()
2654 agg_node = ice_sched_get_agg_node(pi, tc_node, agg_id); in ice_sched_add_agg_cfg()
2669 parent = ice_sched_get_first_node(pi, tc_node, i); in ice_sched_add_agg_cfg()
2689 status = ice_sched_add_nodes_to_layer(pi, tc_node, parent, i, in ice_sched_add_agg_cfg()
2715 * @pi: port information structure
2730 ice_sched_cfg_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_cfg_agg() argument
2734 struct ice_hw *hw = pi->hw; in ice_sched_cfg_agg()
2760 status = ice_rm_agg_cfg_tc(pi, agg_info, tc, false); in ice_sched_cfg_agg()
2771 status = ice_sched_add_agg_cfg(pi, agg_id, tc); in ice_sched_cfg_agg()
2784 * @pi: port information structure
2792 ice_cfg_agg(struct ice_port_info *pi, u32 agg_id, enum ice_agg_type agg_type, in ice_cfg_agg() argument
2798 mutex_lock(&pi->sched_lock); in ice_cfg_agg()
2799 status = ice_sched_cfg_agg(pi, agg_id, agg_type, &bitmap); in ice_cfg_agg()
2801 status = ice_save_agg_tc_bitmap(pi, agg_id, &bitmap); in ice_cfg_agg()
2802 mutex_unlock(&pi->sched_lock); in ice_cfg_agg()
2852 * @pi: port information structure
2861 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
2867 agg_info = ice_get_agg_info(pi->hw, agg_id); in ice_save_agg_vsi_tc_bitmap()
2881 * @pi: port information structure
2891 ice_sched_assoc_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, in ice_sched_assoc_vsi_to_agg() argument
2896 struct ice_hw *hw = pi->hw; in ice_sched_assoc_vsi_to_agg()
2900 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_assoc_vsi_to_agg()
2940 status = ice_sched_move_vsi_to_agg(pi, vsi_handle, agg_id, tc); in ice_sched_assoc_vsi_to_agg()
2950 devm_kfree(ice_hw_to_dev(pi->hw), old_agg_vsi_info); in ice_sched_assoc_vsi_to_agg()
2957 * @pi: port information structure
2962 static void ice_sched_rm_unused_rl_prof(struct ice_port_info *pi) in ice_sched_rm_unused_rl_prof() argument
2966 for (ln = 0; ln < pi->hw->num_tx_sched_layers; ln++) { in ice_sched_rm_unused_rl_prof()
2971 &pi->rl_prof_list[ln], list_entry) { in ice_sched_rm_unused_rl_prof()
2972 if (!ice_sched_del_rl_profile(pi->hw, rl_prof_elem)) in ice_sched_rm_unused_rl_prof()
2973 ice_debug(pi->hw, ICE_DBG_SCHED, "Removed rl profile\n"); in ice_sched_rm_unused_rl_prof()
3056 * @pi: port information structure
3064 ice_move_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, u16 vsi_handle, in ice_move_vsi_to_agg() argument
3070 mutex_lock(&pi->sched_lock); in ice_move_vsi_to_agg()
3071 status = ice_sched_assoc_vsi_to_agg(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
3074 status = ice_save_agg_vsi_tc_bitmap(pi, agg_id, vsi_handle, in ice_move_vsi_to_agg()
3076 mutex_unlock(&pi->sched_lock); in ice_move_vsi_to_agg()
3151 * @pi: port information structure
3160 ice_sched_save_vsi_bw(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_save_vsi_bw() argument
3165 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_save_vsi_bw()
3167 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_save_vsi_bw()
3296 * @pi: port information structure
3308 ice_sched_add_rl_profile(struct ice_port_info *pi, in ice_sched_add_rl_profile() argument
3318 if (!pi || layer_num >= pi->hw->num_tx_sched_layers) in ice_sched_add_rl_profile()
3334 hw = pi->hw; in ice_sched_add_rl_profile()
3335 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_add_rl_profile()
3368 list_add(&rl_prof_elem->list_entry, &pi->rl_prof_list[layer_num]); in ice_sched_add_rl_profile()
3481 * @pi: port information structure
3488 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
3491 struct ice_hw *hw = pi->hw; in ice_sched_get_rl_prof_layer()
3547 * @pi: port information structure
3557 ice_sched_rm_rl_profile(struct ice_port_info *pi, u8 layer_num, u8 profile_type, in ice_sched_rm_rl_profile() argument
3563 if (layer_num >= pi->hw->num_tx_sched_layers) in ice_sched_rm_rl_profile()
3566 list_for_each_entry(rl_prof_elem, &pi->rl_prof_list[layer_num], in ice_sched_rm_rl_profile()
3576 status = ice_sched_del_rl_profile(pi->hw, rl_prof_elem); in ice_sched_rm_rl_profile()
3578 ice_debug(pi->hw, ICE_DBG_SCHED, "Remove rl profile failed\n"); in ice_sched_rm_rl_profile()
3588 * @pi: port information structure
3598 ice_sched_set_node_bw_dflt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt() argument
3608 hw = pi->hw; in ice_sched_set_node_bw_dflt()
3638 return ice_sched_rm_rl_profile(pi, layer_num, profile_type, old_id); in ice_sched_set_node_bw_dflt()
3643 * @pi: port information structure
3655 ice_sched_set_eir_srl_excl(struct ice_port_info *pi, in ice_sched_set_eir_srl_excl() argument
3672 return ice_sched_set_node_bw_dflt(pi, node, ICE_MAX_BW, in ice_sched_set_eir_srl_excl()
3679 return ice_sched_set_node_bw_dflt(pi, node, in ice_sched_set_eir_srl_excl()
3688 * @pi: port information structure
3699 ice_sched_set_node_bw(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw() argument
3703 struct ice_hw *hw = pi->hw; in ice_sched_set_node_bw()
3707 rl_prof_info = ice_sched_add_rl_profile(pi, rl_type, bw, layer_num); in ice_sched_set_node_bw()
3729 return ice_sched_rm_rl_profile(pi, layer_num, in ice_sched_set_node_bw()
3736 * @pi: port information structure
3743 ice_sched_set_node_priority(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_priority() argument
3755 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_priority()
3760 * @pi: port information structure
3767 ice_sched_set_node_weight(struct ice_port_info *pi, struct ice_sched_node *node, u16 weight) in ice_sched_set_node_weight() argument
3782 return ice_sched_update_elem(pi->hw, node, &buf); in ice_sched_set_node_weight()
3787 * @pi: port information structure
3796 ice_sched_set_node_bw_lmt(struct ice_port_info *pi, struct ice_sched_node *node, in ice_sched_set_node_bw_lmt() argument
3805 if (!pi) in ice_sched_set_node_bw_lmt()
3807 hw = pi->hw; in ice_sched_set_node_bw_lmt()
3809 ice_sched_rm_unused_rl_prof(pi); in ice_sched_set_node_bw_lmt()
3810 layer_num = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_node_bw_lmt()
3824 status = ice_sched_set_eir_srl_excl(pi, cfg_node, layer_num, rl_type, in ice_sched_set_node_bw_lmt()
3829 return ice_sched_set_node_bw_dflt(pi, cfg_node, rl_type, in ice_sched_set_node_bw_lmt()
3831 return ice_sched_set_node_bw(pi, cfg_node, rl_type, bw, layer_num); in ice_sched_set_node_bw_lmt()
3836 * @pi: port information structure
3845 ice_sched_set_node_bw_dflt_lmt(struct ice_port_info *pi, in ice_sched_set_node_bw_dflt_lmt() argument
3849 return ice_sched_set_node_bw_lmt(pi, node, rl_type, in ice_sched_set_node_bw_dflt_lmt()
3909 * @pi: port information structure
3919 ice_sched_set_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_sched_set_q_bw_lmt() argument
3926 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_set_q_bw_lmt()
3928 mutex_lock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3929 q_ctx = ice_get_lan_q_ctx(pi->hw, vsi_handle, tc, q_handle); in ice_sched_set_q_bw_lmt()
3932 node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_set_q_bw_lmt()
3934 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong q_teid\n"); in ice_sched_set_q_bw_lmt()
3946 sel_layer = ice_sched_get_rl_prof_layer(pi, rl_type, in ice_sched_set_q_bw_lmt()
3948 if (sel_layer >= pi->hw->num_tx_sched_layers) { in ice_sched_set_q_bw_lmt()
3958 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_q_bw_lmt()
3960 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_q_bw_lmt()
3966 mutex_unlock(&pi->sched_lock); in ice_sched_set_q_bw_lmt()
3972 * @pi: port information structure
3982 ice_cfg_q_bw_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_lmt() argument
3985 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_lmt()
3991 * @pi: port information structure
4000 ice_cfg_q_bw_dflt_lmt(struct ice_port_info *pi, u16 vsi_handle, u8 tc, in ice_cfg_q_bw_dflt_lmt() argument
4003 return ice_sched_set_q_bw_lmt(pi, vsi_handle, tc, q_handle, rl_type, in ice_cfg_q_bw_dflt_lmt()
4009 * @pi: port information structure
4019 ice_sched_get_node_by_id_type(struct ice_port_info *pi, u32 id, in ice_sched_get_node_by_id_type() argument
4029 if (!ice_is_vsi_valid(pi->hw, vsi_handle)) in ice_sched_get_node_by_id_type()
4032 vsi_ctx = ice_get_vsi_ctx(pi->hw, vsi_handle); in ice_sched_get_node_by_id_type()
4042 tc_node = ice_sched_get_tc_node(pi, tc); in ice_sched_get_node_by_id_type()
4044 node = ice_sched_get_agg_node(pi, tc_node, id); in ice_sched_get_node_by_id_type()
4057 * @pi: port information structure
4068 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
4075 if (!pi) in ice_sched_set_node_bw_lmt_per_tc()
4081 mutex_lock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
4082 node = ice_sched_get_node_by_id_type(pi, id, agg_type, tc); in ice_sched_set_node_bw_lmt_per_tc()
4084 ice_debug(pi->hw, ICE_DBG_SCHED, "Wrong id, agg type, or tc\n"); in ice_sched_set_node_bw_lmt_per_tc()
4088 status = ice_sched_set_node_bw_dflt_lmt(pi, node, rl_type); in ice_sched_set_node_bw_lmt_per_tc()
4090 status = ice_sched_set_node_bw_lmt(pi, node, rl_type, bw); in ice_sched_set_node_bw_lmt_per_tc()
4093 mutex_unlock(&pi->sched_lock); in ice_sched_set_node_bw_lmt_per_tc()
4099 * @pi: port information structure
4109 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
4114 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_lmt_per_tc()
4118 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4119 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, bw); in ice_cfg_vsi_bw_lmt_per_tc()
4120 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_lmt_per_tc()
4127 * @pi: port information structure
4136 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
4141 status = ice_sched_set_node_bw_lmt_per_tc(pi, vsi_handle, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4146 mutex_lock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4147 status = ice_sched_save_vsi_bw(pi, vsi_handle, tc, rl_type, in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4149 mutex_unlock(&pi->sched_lock); in ice_cfg_vsi_bw_dflt_lmt_per_tc()
4235 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_node_bw() local
4250 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MIN_BW, in ice_sched_replay_node_bw()
4263 status = ice_sched_set_node_bw_lmt(pi, node, ICE_MAX_BW, in ice_sched_replay_node_bw()
4276 status = ice_sched_set_node_bw_lmt(pi, node, ICE_SHARED_BW, in ice_sched_replay_node_bw()
4283 * @pi: port info struct
4292 ice_sched_get_ena_tc_bitmap(struct ice_port_info *pi, in ice_sched_get_ena_tc_bitmap() argument
4301 (ice_sched_get_tc_node(pi, tc))) in ice_sched_get_ena_tc_bitmap()
4315 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg() local
4318 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg()
4327 ice_sched_get_ena_tc_bitmap(pi, in ice_sched_replay_agg()
4342 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg()
4354 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_agg_vsi_preinit() local
4357 mutex_lock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4366 mutex_unlock(&pi->sched_lock); in ice_sched_replay_agg_vsi_preinit()
4382 struct ice_port_info *pi = hw->port_info; in ice_sched_replay_vsi_agg() local
4395 ice_sched_get_ena_tc_bitmap(pi, agg_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4404 ice_sched_get_ena_tc_bitmap(pi, agg_vsi_info->replay_tc_bitmap, in ice_sched_replay_vsi_agg()
4407 return ice_sched_assoc_vsi_to_agg(pi, agg_info->agg_id, vsi_handle, in ice_sched_replay_vsi_agg()
4421 struct ice_port_info *pi = hw->port_info; in ice_replay_vsi_agg() local
4424 mutex_lock(&pi->sched_lock); in ice_replay_vsi_agg()
4426 mutex_unlock(&pi->sched_lock); in ice_replay_vsi_agg()
4432 * @pi: port information structure
4438 int ice_sched_replay_q_bw(struct ice_port_info *pi, struct ice_q_ctx *q_ctx) in ice_sched_replay_q_bw() argument
4443 q_node = ice_sched_find_node_by_teid(pi->root, q_ctx->q_teid); in ice_sched_replay_q_bw()
4446 return ice_sched_replay_node_bw(pi->hw, q_node, &q_ctx->bw_t_info); in ice_sched_replay_q_bw()