mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 23:07:20 +07:00
liquidio: simplify octeon_flush_iq()
Because every call to octeon_flush_iq() has a hardcoded 1 for the pending_thresh argument, simplify that function by removing that argument. This avoids one atomic read as well. Signed-off-by: Derek Chickles <derek.chickles@cavium.com> Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com> Signed-off-by: Satanand Burla <satananda.burla@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
111427f6eb
commit
6088986914
@ -2441,7 +2441,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
|
||||
iq = oct->instr_queue[iq_no];
|
||||
if (iq) {
|
||||
/* Process iq buffers with in the budget limits */
|
||||
tx_done = octeon_flush_iq(oct, iq, 1, budget);
|
||||
tx_done = octeon_flush_iq(oct, iq, budget);
|
||||
/* Update iq read-index rather than waiting for next interrupt.
|
||||
* Return back if tx_done is false.
|
||||
*/
|
||||
|
@ -1627,7 +1627,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
|
||||
iq = oct->instr_queue[iq_no];
|
||||
if (iq) {
|
||||
/* Process iq buffers with in the budget limits */
|
||||
tx_done = octeon_flush_iq(oct, iq, 1, budget);
|
||||
tx_done = octeon_flush_iq(oct, iq, budget);
|
||||
/* Update iq read-index rather than waiting for next interrupt.
|
||||
* Return back if tx_done is false.
|
||||
*/
|
||||
|
@ -369,5 +369,5 @@ int octeon_setup_iq(struct octeon_device *oct, int ifidx,
|
||||
void *app_ctx);
|
||||
int
|
||||
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
|
||||
u32 pending_thresh, u32 napi_budget);
|
||||
u32 napi_budget);
|
||||
#endif /* __OCTEON_IQ_H__ */
|
||||
|
@ -455,7 +455,7 @@ lio_process_iq_request_list(struct octeon_device *oct,
|
||||
/* Can only be called from process context */
|
||||
int
|
||||
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
|
||||
u32 pending_thresh, u32 napi_budget)
|
||||
u32 napi_budget)
|
||||
{
|
||||
u32 inst_processed = 0;
|
||||
u32 tot_inst_processed = 0;
|
||||
@ -468,33 +468,32 @@ octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
|
||||
|
||||
iq->octeon_read_index = oct->fn_list.update_iq_read_idx(iq);
|
||||
|
||||
if (atomic_read(&iq->instr_pending) >= (s32)pending_thresh) {
|
||||
do {
|
||||
/* Process any outstanding IQ packets. */
|
||||
if (iq->flush_index == iq->octeon_read_index)
|
||||
break;
|
||||
do {
|
||||
/* Process any outstanding IQ packets. */
|
||||
if (iq->flush_index == iq->octeon_read_index)
|
||||
break;
|
||||
|
||||
if (napi_budget)
|
||||
inst_processed = lio_process_iq_request_list
|
||||
(oct, iq,
|
||||
napi_budget - tot_inst_processed);
|
||||
else
|
||||
inst_processed =
|
||||
lio_process_iq_request_list(oct, iq, 0);
|
||||
if (napi_budget)
|
||||
inst_processed =
|
||||
lio_process_iq_request_list(oct, iq,
|
||||
napi_budget -
|
||||
tot_inst_processed);
|
||||
else
|
||||
inst_processed =
|
||||
lio_process_iq_request_list(oct, iq, 0);
|
||||
|
||||
if (inst_processed) {
|
||||
atomic_sub(inst_processed, &iq->instr_pending);
|
||||
iq->stats.instr_processed += inst_processed;
|
||||
}
|
||||
if (inst_processed) {
|
||||
atomic_sub(inst_processed, &iq->instr_pending);
|
||||
iq->stats.instr_processed += inst_processed;
|
||||
}
|
||||
|
||||
tot_inst_processed += inst_processed;
|
||||
inst_processed = 0;
|
||||
tot_inst_processed += inst_processed;
|
||||
inst_processed = 0;
|
||||
|
||||
} while (tot_inst_processed < napi_budget);
|
||||
} while (tot_inst_processed < napi_budget);
|
||||
|
||||
if (napi_budget && (tot_inst_processed >= napi_budget))
|
||||
tx_done = 0;
|
||||
}
|
||||
if (napi_budget && (tot_inst_processed >= napi_budget))
|
||||
tx_done = 0;
|
||||
|
||||
iq->last_db_time = jiffies;
|
||||
|
||||
@ -530,7 +529,7 @@ static void __check_db_timeout(struct octeon_device *oct, u64 iq_no)
|
||||
iq->last_db_time = jiffies;
|
||||
|
||||
/* Flush the instruction queue */
|
||||
octeon_flush_iq(oct, iq, 1, 0);
|
||||
octeon_flush_iq(oct, iq, 0);
|
||||
|
||||
lio_enable_irq(NULL, iq);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user