net/ice/base: refactor VSI node scheduler
Refactored VSI node sched code to use port_info ptr as call arg. The declaration of VSI node getter function has been modified to use pointer to ice_port_info structure instead of pointer to hw structure. This way suitable port_info structure is used to find VSI node. Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com> Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com> Signed-off-by: Leyi Rong <leyi.rong@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
parent
5c7057d02a
commit
fdafeee39a
@ -1451,7 +1451,7 @@ lan_q_exit:
|
||||
|
||||
/**
|
||||
* ice_sched_get_vsi_node - Get a VSI node based on VSI ID
|
||||
* @hw: pointer to the HW struct
|
||||
* @pi: pointer to the port information structure
|
||||
* @tc_node: pointer to the TC node
|
||||
* @vsi_handle: software VSI handle
|
||||
*
|
||||
@ -1459,14 +1459,14 @@ lan_q_exit:
|
||||
* TC branch
|
||||
*/
|
||||
struct ice_sched_node *
|
||||
ice_sched_get_vsi_node(struct ice_hw *hw, struct ice_sched_node *tc_node,
|
||||
ice_sched_get_vsi_node(struct ice_port_info *pi, struct ice_sched_node *tc_node,
|
||||
u16 vsi_handle)
|
||||
{
|
||||
struct ice_sched_node *node;
|
||||
u8 vsi_layer;
|
||||
|
||||
vsi_layer = ice_sched_get_vsi_layer(hw);
|
||||
node = ice_sched_get_first_node(hw->port_info, tc_node, vsi_layer);
|
||||
vsi_layer = ice_sched_get_vsi_layer(pi->hw);
|
||||
node = ice_sched_get_first_node(pi, tc_node, vsi_layer);
|
||||
|
||||
/* Check whether it already exists */
|
||||
while (node) {
|
||||
@ -1587,7 +1587,7 @@ ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,
|
||||
|
||||
qgl = ice_sched_get_qgrp_layer(hw);
|
||||
vsil = ice_sched_get_vsi_layer(hw);
|
||||
parent = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
parent = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
for (i = vsil + 1; i <= qgl; i++) {
|
||||
if (!parent)
|
||||
return ICE_ERR_CFG;
|
||||
@ -1620,7 +1620,7 @@ ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,
|
||||
|
||||
/**
|
||||
* ice_sched_calc_vsi_support_nodes - calculate number of VSI support nodes
|
||||
* @hw: pointer to the HW struct
|
||||
* @pi: pointer to the port info structure
|
||||
* @tc_node: pointer to TC node
|
||||
* @num_nodes: pointer to num nodes array
|
||||
*
|
||||
@ -1629,15 +1629,15 @@ ice_sched_add_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,
|
||||
* layers
|
||||
*/
|
||||
static void
|
||||
ice_sched_calc_vsi_support_nodes(struct ice_hw *hw,
|
||||
ice_sched_calc_vsi_support_nodes(struct ice_port_info *pi,
|
||||
struct ice_sched_node *tc_node, u16 *num_nodes)
|
||||
{
|
||||
struct ice_sched_node *node;
|
||||
u8 vsil;
|
||||
int i;
|
||||
|
||||
vsil = ice_sched_get_vsi_layer(hw);
|
||||
for (i = vsil; i >= hw->sw_entry_point_layer; i--)
|
||||
vsil = ice_sched_get_vsi_layer(pi->hw);
|
||||
for (i = vsil; i >= pi->hw->sw_entry_point_layer; i--)
|
||||
/* Add intermediate nodes if TC has no children and
|
||||
* need at least one node for VSI
|
||||
*/
|
||||
@ -1647,11 +1647,11 @@ ice_sched_calc_vsi_support_nodes(struct ice_hw *hw,
|
||||
/* If intermediate nodes are reached max children
|
||||
* then add a new one.
|
||||
*/
|
||||
node = ice_sched_get_first_node(hw->port_info, tc_node,
|
||||
(u8)i);
|
||||
node = ice_sched_get_first_node(pi, tc_node, (u8)i);
|
||||
/* scan all the siblings */
|
||||
while (node) {
|
||||
if (node->num_children < hw->max_children[i])
|
||||
if (node->num_children <
|
||||
pi->hw->max_children[i])
|
||||
break;
|
||||
node = node->sibling;
|
||||
}
|
||||
@ -1731,14 +1731,13 @@ ice_sched_add_vsi_to_topo(struct ice_port_info *pi, u16 vsi_handle, u8 tc)
|
||||
{
|
||||
u16 num_nodes[ICE_AQC_TOPO_MAX_LEVEL_NUM] = { 0 };
|
||||
struct ice_sched_node *tc_node;
|
||||
struct ice_hw *hw = pi->hw;
|
||||
|
||||
tc_node = ice_sched_get_tc_node(pi, tc);
|
||||
if (!tc_node)
|
||||
return ICE_ERR_PARAM;
|
||||
|
||||
/* calculate number of supported nodes needed for this VSI */
|
||||
ice_sched_calc_vsi_support_nodes(hw, tc_node, num_nodes);
|
||||
ice_sched_calc_vsi_support_nodes(pi, tc_node, num_nodes);
|
||||
|
||||
/* add VSI supported nodes to TC subtree */
|
||||
return ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node,
|
||||
@ -1771,7 +1770,7 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle,
|
||||
if (!tc_node)
|
||||
return ICE_ERR_CFG;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
return ICE_ERR_CFG;
|
||||
|
||||
@ -1834,7 +1833,7 @@ ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs,
|
||||
vsi_ctx = ice_get_vsi_ctx(hw, vsi_handle);
|
||||
if (!vsi_ctx)
|
||||
return ICE_ERR_PARAM;
|
||||
vsi_node = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
|
||||
/* suspend the VSI if TC is not enabled */
|
||||
if (!enable) {
|
||||
@ -1855,7 +1854,7 @@ ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs,
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
return ICE_ERR_CFG;
|
||||
|
||||
@ -1966,7 +1965,7 @@ ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner)
|
||||
if (!tc_node)
|
||||
continue;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(pi->hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
continue;
|
||||
|
||||
@ -2256,7 +2255,7 @@ ice_sched_move_vsi_to_agg(struct ice_port_info *pi, u16 vsi_handle, u32 agg_id,
|
||||
if (!agg_node)
|
||||
return ICE_ERR_DOES_NOT_EXIST;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(pi->hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
return ICE_ERR_DOES_NOT_EXIST;
|
||||
|
||||
@ -3537,7 +3536,7 @@ ice_cfg_agg_vsi_priority_per_tc(struct ice_port_info *pi, u32 agg_id,
|
||||
if (!vsi_handle_valid)
|
||||
goto exit_agg_priority_per_tc;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
goto exit_agg_priority_per_tc;
|
||||
|
||||
@ -3593,7 +3592,7 @@ ice_cfg_vsi_bw_alloc(struct ice_port_info *pi, u16 vsi_handle, u8 ena_tcmap,
|
||||
if (!tc_node)
|
||||
continue;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(pi->hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
continue;
|
||||
|
||||
@ -4805,7 +4804,7 @@ ice_sched_validate_vsi_srl_node(struct ice_port_info *pi, u16 vsi_handle)
|
||||
if (!tc_node)
|
||||
continue;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(pi->hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
continue;
|
||||
|
||||
@ -4864,7 +4863,7 @@ ice_sched_set_vsi_bw_shared_lmt(struct ice_port_info *pi, u16 vsi_handle,
|
||||
if (!tc_node)
|
||||
continue;
|
||||
|
||||
vsi_node = ice_sched_get_vsi_node(pi->hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
continue;
|
||||
|
||||
@ -5368,7 +5367,7 @@ ice_sched_replay_vsi_bw(struct ice_hw *hw, u16 vsi_handle,
|
||||
tc_node = ice_sched_get_tc_node(pi, tc);
|
||||
if (!tc_node)
|
||||
continue;
|
||||
vsi_node = ice_sched_get_vsi_node(hw, tc_node, vsi_handle);
|
||||
vsi_node = ice_sched_get_vsi_node(pi, tc_node, vsi_handle);
|
||||
if (!vsi_node)
|
||||
continue;
|
||||
bw_t_info = &vsi_ctx->sched.bw_t_info[tc];
|
||||
|
@ -107,7 +107,7 @@ ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs,
|
||||
u8 owner, bool enable);
|
||||
enum ice_status ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle);
|
||||
struct ice_sched_node *
|
||||
ice_sched_get_vsi_node(struct ice_hw *hw, struct ice_sched_node *tc_node,
|
||||
ice_sched_get_vsi_node(struct ice_port_info *pi, struct ice_sched_node *tc_node,
|
||||
u16 vsi_handle);
|
||||
bool ice_sched_is_tree_balanced(struct ice_hw *hw, struct ice_sched_node *node);
|
||||
enum ice_status
|
||||
|
Loading…
x
Reference in New Issue
Block a user