Commit b36c598c authored by Anirudh Venkataramanan's avatar Anirudh Venkataramanan Committed by Jeff Kirsher

ice: Updates to Tx scheduler code

1) The maximum device nodes is a global value and shared by the whole
   device. Add element AQ command would fail if there is no space to
   add new nodes so the check for max nodes isn't required. So remove
   ice_sched_get_num_nodes_per_layer and ice_sched_val_max_nodes.

2) In ice_sched_add_elems, set default node's CIR/EIR bandwidth weight.

3) Fix default scheduler topology buffer size as the firmware expects
   a 4KB buffer at all times, and will error out if one of any other
   size is provided.

4) In the latest spec, max children per node per layer is replaced by
   max sibling group size. Now it provides the max children of the below
   layer node, not the current layer node.

5) Fix some newline/whitespace issues for consistency.
Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 22ef683b
...@@ -771,9 +771,8 @@ struct ice_aqc_layer_props { ...@@ -771,9 +771,8 @@ struct ice_aqc_layer_props {
u8 chunk_size; u8 chunk_size;
__le16 max_device_nodes; __le16 max_device_nodes;
__le16 max_pf_nodes; __le16 max_pf_nodes;
u8 rsvd0[2]; u8 rsvd0[4];
__le16 max_shared_rate_lmtr; __le16 max_sibl_grp_sz;
__le16 max_children;
__le16 max_cir_rl_profiles; __le16 max_cir_rl_profiles;
__le16 max_eir_rl_profiles; __le16 max_eir_rl_profiles;
__le16 max_srl_profiles; __le16 max_srl_profiles;
......
...@@ -527,6 +527,13 @@ enum ice_status ice_init_hw(struct ice_hw *hw) ...@@ -527,6 +527,13 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
if (status) if (status)
goto err_unroll_sched; goto err_unroll_sched;
/* need a valid SW entry point to build a Tx tree */
if (!hw->sw_entry_point_layer) {
ice_debug(hw, ICE_DBG_SCHED, "invalid sw entry point\n");
status = ICE_ERR_CFG;
goto err_unroll_sched;
}
status = ice_init_fltr_mgmt_struct(hw); status = ice_init_fltr_mgmt_struct(hw);
if (status) if (status)
goto err_unroll_sched; goto err_unroll_sched;
......
This diff is collapsed.
...@@ -204,6 +204,7 @@ enum ice_agg_type { ...@@ -204,6 +204,7 @@ enum ice_agg_type {
}; };
#define ICE_SCHED_DFLT_RL_PROF_ID 0 #define ICE_SCHED_DFLT_RL_PROF_ID 0
#define ICE_SCHED_DFLT_BW_WT 1
/* vsi type list entry to locate corresponding vsi/ag nodes */ /* vsi type list entry to locate corresponding vsi/ag nodes */
struct ice_sched_vsi_info { struct ice_sched_vsi_info {
...@@ -286,6 +287,7 @@ struct ice_hw { ...@@ -286,6 +287,7 @@ struct ice_hw {
u8 flattened_layers; u8 flattened_layers;
u8 max_cgds; u8 max_cgds;
u8 sw_entry_point_layer; u8 sw_entry_point_layer;
u16 max_children[ICE_AQC_TOPO_MAX_LEVEL_NUM];
u8 evb_veb; /* true for VEB, false for VEPA */ u8 evb_veb; /* true for VEB, false for VEPA */
struct ice_bus_info bus; struct ice_bus_info bus;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment