diff options
| author | Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> | 2018-12-19 10:03:21 -0800 | 
|---|---|---|
| committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2019-01-15 09:54:59 -0800 | 
| commit | 1f9c7840e81ad81dd99cf5ad74843316b935402f (patch) | |
| tree | bc3e46b4a961409344b32f3764de23dd12215fba /drivers/net/ethernet/intel/ice/ice_sched.c | |
| parent | 3d505147178b9f310008da4fad14743824d235a9 (diff) | |
ice: Refactor a few Tx scheduler functions
The following functions were refactored to call a new common function,
ice_aqc_send_sched_elem_cmd():
- ice_aq_add_sched_elems()
- ice_aq_delete_sched_elems()
- ice_aq_move_sched_elems()
- ice_aq_query_sched_elems()
- ice_aq_cfg_sched_elems()
- ice_aq_suspend_sched_elems()
- ice_aq_resume_sched_elems()
Signed-off-by: Greg Priest <greg.priest@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_sched.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_sched.c | 122 | 
1 files changed, 46 insertions, 76 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c index a1681853df2e..99d51990bd54 100644 --- a/drivers/net/ethernet/intel/ice/ice_sched.c +++ b/drivers/net/ethernet/intel/ice/ice_sched.c @@ -85,37 +85,59 @@ ice_sched_find_node_by_teid(struct ice_sched_node *start_node, u32 teid)  }  /** - * ice_aq_query_sched_elems - query scheduler elements + * ice_aqc_send_sched_elem_cmd - send scheduling elements cmd   * @hw: pointer to the hw struct - * @elems_req: number of elements to query + * @cmd_opc: cmd opcode + * @elems_req: number of elements to request   * @buf: pointer to buffer   * @buf_size: buffer size in bytes - * @elems_ret: returns total number of elements returned + * @elems_resp: returns total number of elements response   * @cd: pointer to command details structure or NULL   * - * Query scheduling elements (0x0404) + * This function sends a scheduling elements cmd (cmd_opc)   */  static enum ice_status -ice_aq_query_sched_elems(struct ice_hw *hw, u16 elems_req, -			 struct ice_aqc_get_elem *buf, u16 buf_size, -			 u16 *elems_ret, struct ice_sq_cd *cd) +ice_aqc_send_sched_elem_cmd(struct ice_hw *hw, enum ice_adminq_opc cmd_opc, +			    u16 elems_req, void *buf, u16 buf_size, +			    u16 *elems_resp, struct ice_sq_cd *cd)  { -	struct ice_aqc_get_cfg_elem *cmd; +	struct ice_aqc_sched_elem_cmd *cmd;  	struct ice_aq_desc desc;  	enum ice_status status; -	cmd = &desc.params.get_update_elem; -	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_sched_elems); +	cmd = &desc.params.sched_elem_cmd; +	ice_fill_dflt_direct_cmd_desc(&desc, cmd_opc);  	cmd->num_elem_req = cpu_to_le16(elems_req);  	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);  	status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd); -	if (!status && elems_ret) -		*elems_ret = le16_to_cpu(cmd->num_elem_resp); +	if (!status && elems_resp) +		*elems_resp = le16_to_cpu(cmd->num_elem_resp);  	return status;  }  /** + * ice_aq_query_sched_elems - query scheduler elements + * @hw: pointer to the hw struct + * @elems_req: number of elements to query + * @buf: pointer to buffer + * @buf_size: buffer size in bytes + * @elems_ret: returns total number of elements returned + * @cd: pointer to command details structure or NULL + * + * Query scheduling elements (0x0404) + */ +static enum ice_status +ice_aq_query_sched_elems(struct ice_hw *hw, u16 elems_req, +			 struct ice_aqc_get_elem *buf, u16 buf_size, +			 u16 *elems_ret, struct ice_sq_cd *cd) +{ +	return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_get_sched_elems, +					   elems_req, (void *)buf, buf_size, +					   elems_ret, cd); +} + +/**   * ice_sched_query_elem - query element information from hw   * @hw: pointer to the hw struct   * @node_teid: node teid to be queried @@ -218,20 +240,9 @@ ice_aq_delete_sched_elems(struct ice_hw *hw, u16 grps_req,  			  struct ice_aqc_delete_elem *buf, u16 buf_size,  			  u16 *grps_del, struct ice_sq_cd *cd)  { -	struct ice_aqc_add_move_delete_elem *cmd; -	struct ice_aq_desc desc; -	enum ice_status status; - -	cmd = &desc.params.add_move_delete_elem; -	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_delete_sched_elems); -	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); -	cmd->num_grps_req = cpu_to_le16(grps_req); - -	status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd); -	if (!status && grps_del) -		*grps_del = le16_to_cpu(cmd->num_grps_updated); - -	return status; +	return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_delete_sched_elems, +					   grps_req, (void *)buf, buf_size, +					   grps_del, cd);  }  /** @@ -442,52 +453,9 @@ ice_aq_add_sched_elems(struct ice_hw *hw, u16 grps_req,  		       struct ice_aqc_add_elem *buf, u16 buf_size,  		       u16 *grps_added, struct ice_sq_cd *cd)  { -	struct ice_aqc_add_move_delete_elem *cmd; -	struct ice_aq_desc desc; -	enum ice_status status; - -	cmd = &desc.params.add_move_delete_elem; -	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_add_sched_elems); -	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); - -	cmd->num_grps_req = cpu_to_le16(grps_req); -	status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd); -	if (!status && grps_added) -		*grps_added = le16_to_cpu(cmd->num_grps_updated); - -	return status; -} - -/** - * ice_suspend_resume_elems - suspend/resume scheduler elements - * @hw: pointer to the hw struct - * @elems_req: number of elements to suspend - * @buf: pointer to buffer - * @buf_size: buffer size in bytes - * @elems_ret: returns total number of elements suspended - * @cd: pointer to command details structure or NULL - * @cmd_code: command code for suspend or resume - * - * suspend/resume scheduler elements - */ -static enum ice_status -ice_suspend_resume_elems(struct ice_hw *hw, u16 elems_req, -			 struct ice_aqc_suspend_resume_elem *buf, u16 buf_size, -			 u16 *elems_ret, struct ice_sq_cd *cd, -			 enum ice_adminq_opc cmd_code) -{ -	struct ice_aqc_get_cfg_elem *cmd; -	struct ice_aq_desc desc; -	enum ice_status status; - -	cmd = &desc.params.get_update_elem; -	ice_fill_dflt_direct_cmd_desc(&desc, cmd_code); -	cmd->num_elem_req = cpu_to_le16(elems_req); -	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); -	status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd); -	if (!status && elems_ret) -		*elems_ret = le16_to_cpu(cmd->num_elem_resp); -	return status; +	return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_add_sched_elems, +					   grps_req, (void *)buf, buf_size, +					   grps_added, cd);  }  /** @@ -506,8 +474,9 @@ ice_aq_suspend_sched_elems(struct ice_hw *hw, u16 elems_req,  			   struct ice_aqc_suspend_resume_elem *buf,  			   u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd)  { -	return ice_suspend_resume_elems(hw, elems_req, buf, buf_size, elems_ret, -					cd, ice_aqc_opc_suspend_sched_elems); +	return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_suspend_sched_elems, +					   elems_req, (void *)buf, buf_size, +					   elems_ret, cd);  }  /** @@ -526,8 +495,9 @@ ice_aq_resume_sched_elems(struct ice_hw *hw, u16 elems_req,  			  struct ice_aqc_suspend_resume_elem *buf,  			  u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd)  { -	return ice_suspend_resume_elems(hw, elems_req, buf, buf_size, elems_ret, -					cd, ice_aqc_opc_resume_sched_elems); +	return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_resume_sched_elems, +					   elems_req, (void *)buf, buf_size, +					   elems_ret, cd);  }  /**  | 
