Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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.
		 */
+1 −1
Original line number Diff line number Diff line
@@ -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.
		 */
+1 −1
Original line number Diff line number Diff line
@@ -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__ */
+24 −25
Original line number Diff line number Diff line
@@ -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,16 +468,16 @@ 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;

		if (napi_budget)
				inst_processed = lio_process_iq_request_list
					(oct, iq,
					 napi_budget - tot_inst_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);
@@ -494,7 +494,6 @@ octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,

	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);
}