Commit 60889869 authored by Derek Chickles's avatar Derek Chickles Committed by David S. Miller

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: default avatarDerek Chickles <derek.chickles@cavium.com>
Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: default avatarSatanand Burla <satananda.burla@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 111427f6
...@@ -2441,7 +2441,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget) ...@@ -2441,7 +2441,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
iq = oct->instr_queue[iq_no]; iq = oct->instr_queue[iq_no];
if (iq) { if (iq) {
/* Process iq buffers with in the budget limits */ /* 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. /* Update iq read-index rather than waiting for next interrupt.
* Return back if tx_done is false. * Return back if tx_done is false.
*/ */
......
...@@ -1627,7 +1627,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget) ...@@ -1627,7 +1627,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
iq = oct->instr_queue[iq_no]; iq = oct->instr_queue[iq_no];
if (iq) { if (iq) {
/* Process iq buffers with in the budget limits */ /* 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. /* Update iq read-index rather than waiting for next interrupt.
* Return back if tx_done is false. * Return back if tx_done is false.
*/ */
......
...@@ -369,5 +369,5 @@ int octeon_setup_iq(struct octeon_device *oct, int ifidx, ...@@ -369,5 +369,5 @@ int octeon_setup_iq(struct octeon_device *oct, int ifidx,
void *app_ctx); void *app_ctx);
int int
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq, 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__ */ #endif /* __OCTEON_IQ_H__ */
...@@ -455,7 +455,7 @@ lio_process_iq_request_list(struct octeon_device *oct, ...@@ -455,7 +455,7 @@ lio_process_iq_request_list(struct octeon_device *oct,
/* Can only be called from process context */ /* Can only be called from process context */
int int
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq, 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 inst_processed = 0;
u32 tot_inst_processed = 0; u32 tot_inst_processed = 0;
...@@ -468,33 +468,32 @@ octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq, ...@@ -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); iq->octeon_read_index = oct->fn_list.update_iq_read_idx(iq);
if (atomic_read(&iq->instr_pending) >= (s32)pending_thresh) { do {
do { /* Process any outstanding IQ packets. */
/* Process any outstanding IQ packets. */ if (iq->flush_index == iq->octeon_read_index)
if (iq->flush_index == iq->octeon_read_index) break;
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 (inst_processed) { if (napi_budget)
atomic_sub(inst_processed, &iq->instr_pending); inst_processed =
iq->stats.instr_processed += 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;
}
tot_inst_processed += inst_processed; tot_inst_processed += inst_processed;
inst_processed = 0; inst_processed = 0;
} while (tot_inst_processed < napi_budget); } while (tot_inst_processed < napi_budget);
if (napi_budget && (tot_inst_processed >= napi_budget)) if (napi_budget && (tot_inst_processed >= napi_budget))
tx_done = 0; tx_done = 0;
}
iq->last_db_time = jiffies; iq->last_db_time = jiffies;
...@@ -530,7 +529,7 @@ static void __check_db_timeout(struct octeon_device *oct, u64 iq_no) ...@@ -530,7 +529,7 @@ static void __check_db_timeout(struct octeon_device *oct, u64 iq_no)
iq->last_db_time = jiffies; iq->last_db_time = jiffies;
/* Flush the instruction queue */ /* Flush the instruction queue */
octeon_flush_iq(oct, iq, 1, 0); octeon_flush_iq(oct, iq, 0);
lio_enable_irq(NULL, iq); lio_enable_irq(NULL, iq);
} }
......
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