aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ice/ice_sched.c
diff options
context:
space:
mode:
authorAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>2018-12-19 13:03:21 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2019-01-15 12:54:59 -0500
commit1f9c7840e81ad81dd99cf5ad74843316b935402f (patch)
treebc3e46b4a961409344b32f3764de23dd12215fba /drivers/net/ethernet/intel/ice/ice_sched.c
parent3d505147178b9f310008da4fad14743824d235a9 (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.c122
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)
85} 85}
86 86
87/** 87/**
88 * ice_aq_query_sched_elems - query scheduler elements 88 * ice_aqc_send_sched_elem_cmd - send scheduling elements cmd
89 * @hw: pointer to the hw struct 89 * @hw: pointer to the hw struct
90 * @elems_req: number of elements to query 90 * @cmd_opc: cmd opcode
91 * @elems_req: number of elements to request
91 * @buf: pointer to buffer 92 * @buf: pointer to buffer
92 * @buf_size: buffer size in bytes 93 * @buf_size: buffer size in bytes
93 * @elems_ret: returns total number of elements returned 94 * @elems_resp: returns total number of elements response
94 * @cd: pointer to command details structure or NULL 95 * @cd: pointer to command details structure or NULL
95 * 96 *
96 * Query scheduling elements (0x0404) 97 * This function sends a scheduling elements cmd (cmd_opc)
97 */ 98 */
98static enum ice_status 99static enum ice_status
99ice_aq_query_sched_elems(struct ice_hw *hw, u16 elems_req, 100ice_aqc_send_sched_elem_cmd(struct ice_hw *hw, enum ice_adminq_opc cmd_opc,
100 struct ice_aqc_get_elem *buf, u16 buf_size, 101 u16 elems_req, void *buf, u16 buf_size,
101 u16 *elems_ret, struct ice_sq_cd *cd) 102 u16 *elems_resp, struct ice_sq_cd *cd)
102{ 103{
103 struct ice_aqc_get_cfg_elem *cmd; 104 struct ice_aqc_sched_elem_cmd *cmd;
104 struct ice_aq_desc desc; 105 struct ice_aq_desc desc;
105 enum ice_status status; 106 enum ice_status status;
106 107
107 cmd = &desc.params.get_update_elem; 108 cmd = &desc.params.sched_elem_cmd;
108 ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_sched_elems); 109 ice_fill_dflt_direct_cmd_desc(&desc, cmd_opc);
109 cmd->num_elem_req = cpu_to_le16(elems_req); 110 cmd->num_elem_req = cpu_to_le16(elems_req);
110 desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); 111 desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
111 status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd); 112 status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
112 if (!status && elems_ret) 113 if (!status && elems_resp)
113 *elems_ret = le16_to_cpu(cmd->num_elem_resp); 114 *elems_resp = le16_to_cpu(cmd->num_elem_resp);
114 115
115 return status; 116 return status;
116} 117}
117 118
118/** 119/**
120 * ice_aq_query_sched_elems - query scheduler elements
121 * @hw: pointer to the hw struct
122 * @elems_req: number of elements to query
123 * @buf: pointer to buffer
124 * @buf_size: buffer size in bytes
125 * @elems_ret: returns total number of elements returned
126 * @cd: pointer to command details structure or NULL
127 *
128 * Query scheduling elements (0x0404)
129 */
130static enum ice_status
131ice_aq_query_sched_elems(struct ice_hw *hw, u16 elems_req,
132 struct ice_aqc_get_elem *buf, u16 buf_size,
133 u16 *elems_ret, struct ice_sq_cd *cd)
134{
135 return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_get_sched_elems,
136 elems_req, (void *)buf, buf_size,
137 elems_ret, cd);
138}
139
140/**
119 * ice_sched_query_elem - query element information from hw 141 * ice_sched_query_elem - query element information from hw
120 * @hw: pointer to the hw struct 142 * @hw: pointer to the hw struct
121 * @node_teid: node teid to be queried 143 * @node_teid: node teid to be queried
@@ -218,20 +240,9 @@ ice_aq_delete_sched_elems(struct ice_hw *hw, u16 grps_req,
218 struct ice_aqc_delete_elem *buf, u16 buf_size, 240 struct ice_aqc_delete_elem *buf, u16 buf_size,
219 u16 *grps_del, struct ice_sq_cd *cd) 241 u16 *grps_del, struct ice_sq_cd *cd)
220{ 242{
221 struct ice_aqc_add_move_delete_elem *cmd; 243 return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_delete_sched_elems,
222 struct ice_aq_desc desc; 244 grps_req, (void *)buf, buf_size,
223 enum ice_status status; 245 grps_del, cd);
224
225 cmd = &desc.params.add_move_delete_elem;
226 ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_delete_sched_elems);
227 desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
228 cmd->num_grps_req = cpu_to_le16(grps_req);
229
230 status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
231 if (!status && grps_del)
232 *grps_del = le16_to_cpu(cmd->num_grps_updated);
233
234 return status;
235} 246}
236 247
237/** 248/**
@@ -442,52 +453,9 @@ ice_aq_add_sched_elems(struct ice_hw *hw, u16 grps_req,
442 struct ice_aqc_add_elem *buf, u16 buf_size, 453 struct ice_aqc_add_elem *buf, u16 buf_size,
443 u16 *grps_added, struct ice_sq_cd *cd) 454 u16 *grps_added, struct ice_sq_cd *cd)
444{ 455{
445 struct ice_aqc_add_move_delete_elem *cmd; 456 return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_add_sched_elems,
446 struct ice_aq_desc desc; 457 grps_req, (void *)buf, buf_size,
447 enum ice_status status; 458 grps_added, cd);
448
449 cmd = &desc.params.add_move_delete_elem;
450 ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_add_sched_elems);
451 desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
452
453 cmd->num_grps_req = cpu_to_le16(grps_req);
454 status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
455 if (!status && grps_added)
456 *grps_added = le16_to_cpu(cmd->num_grps_updated);
457
458 return status;
459}
460
461/**
462 * ice_suspend_resume_elems - suspend/resume scheduler elements
463 * @hw: pointer to the hw struct
464 * @elems_req: number of elements to suspend
465 * @buf: pointer to buffer
466 * @buf_size: buffer size in bytes
467 * @elems_ret: returns total number of elements suspended
468 * @cd: pointer to command details structure or NULL
469 * @cmd_code: command code for suspend or resume
470 *
471 * suspend/resume scheduler elements
472 */
473static enum ice_status
474ice_suspend_resume_elems(struct ice_hw *hw, u16 elems_req,
475 struct ice_aqc_suspend_resume_elem *buf, u16 buf_size,
476 u16 *elems_ret, struct ice_sq_cd *cd,
477 enum ice_adminq_opc cmd_code)
478{
479 struct ice_aqc_get_cfg_elem *cmd;
480 struct ice_aq_desc desc;
481 enum ice_status status;
482
483 cmd = &desc.params.get_update_elem;
484 ice_fill_dflt_direct_cmd_desc(&desc, cmd_code);
485 cmd->num_elem_req = cpu_to_le16(elems_req);
486 desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
487 status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
488 if (!status && elems_ret)
489 *elems_ret = le16_to_cpu(cmd->num_elem_resp);
490 return status;
491} 459}
492 460
493/** 461/**
@@ -506,8 +474,9 @@ ice_aq_suspend_sched_elems(struct ice_hw *hw, u16 elems_req,
506 struct ice_aqc_suspend_resume_elem *buf, 474 struct ice_aqc_suspend_resume_elem *buf,
507 u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd) 475 u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd)
508{ 476{
509 return ice_suspend_resume_elems(hw, elems_req, buf, buf_size, elems_ret, 477 return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_suspend_sched_elems,
510 cd, ice_aqc_opc_suspend_sched_elems); 478 elems_req, (void *)buf, buf_size,
479 elems_ret, cd);
511} 480}
512 481
513/** 482/**
@@ -526,8 +495,9 @@ ice_aq_resume_sched_elems(struct ice_hw *hw, u16 elems_req,
526 struct ice_aqc_suspend_resume_elem *buf, 495 struct ice_aqc_suspend_resume_elem *buf,
527 u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd) 496 u16 buf_size, u16 *elems_ret, struct ice_sq_cd *cd)
528{ 497{
529 return ice_suspend_resume_elems(hw, elems_req, buf, buf_size, elems_ret, 498 return ice_aqc_send_sched_elem_cmd(hw, ice_aqc_opc_resume_sched_elems,
530 cd, ice_aqc_opc_resume_sched_elems); 499 elems_req, (void *)buf, buf_size,
500 elems_ret, cd);
531} 501}
532 502
533/** 503/**