net/ice/base: refactor VSI node scheduler
authorLeyi Rong <leyi.rong@intel.com>
Wed, 19 Jun 2019 15:18:28 +0000 (23:18 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 28 Jun 2019 18:31:49 +0000 (20:31 +0200)
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>
drivers/net/ice/base/ice_sched.c
drivers/net/ice/base/ice_sched.h

index fa3158a..0f41531 100644 (file)
@@ -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];
index e444dc8..38f8f93 100644 (file)
@@ -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