diff options
author | Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> | 2018-12-19 13:03:21 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2019-01-15 12:54:59 -0500 |
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) | |||
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 | */ |
98 | static enum ice_status | 99 | static enum ice_status |
99 | ice_aq_query_sched_elems(struct ice_hw *hw, u16 elems_req, | 100 | ice_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 | */ | ||
130 | static enum ice_status | ||
131 | ice_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 | */ | ||
473 | static enum ice_status | ||
474 | ice_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 | /** |