Commit 2baedcb6 authored by Leonid Ravich's avatar Leonid Ravich Committed by Vinod Koul
Browse files

dmaengine: ioat: remove unnesesery double complition timer modification.



removing unnecessary mod_timer from timeout handler
incase of ioat_cleanup_preamble() is true  for cleaner code

Acked-by: default avatarDave Jiang <dave.jiang@intel.com>
Signed-off-by: default avatarLeonid Ravich <Leonid.Ravich@emc.com>
Link: https://lore.kernel.org/r/1587589761-32690-2-git-send-email-leonid.ravich@dell.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 5a87c506
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -922,17 +922,23 @@ void ioat_timer_event(struct timer_list *t)
		spin_lock_bh(&ioat_chan->prep_lock);
		check_active(ioat_chan);
		spin_unlock_bh(&ioat_chan->prep_lock);
		spin_unlock_bh(&ioat_chan->cleanup_lock);
		return;
		goto unlock_out;
	}

	/* handle the missed cleanup case */
	if (ioat_cleanup_preamble(ioat_chan, &phys_complete)) {
		/* timer restarted in ioat_cleanup_preamble
		 * and IOAT_COMPLETION_ACK cleared
		 */
		__cleanup(ioat_chan, phys_complete);
		goto unlock_out;
	}

	/* if we haven't made progress and we have already
	 * acknowledged a pending completion once, then be more
	 * forceful with a restart
	 */
	if (ioat_cleanup_preamble(ioat_chan, &phys_complete))
		__cleanup(ioat_chan, phys_complete);
	else if (test_bit(IOAT_COMPLETION_ACK, &ioat_chan->state)) {
	if (test_bit(IOAT_COMPLETION_ACK, &ioat_chan->state)) {
		u32 chanerr;

		chanerr = readl(ioat_chan->reg_base + IOAT_CHANERR_OFFSET);
@@ -945,12 +951,13 @@ void ioat_timer_event(struct timer_list *t)
			ioat_ring_active(ioat_chan));

		ioat_reboot_chan(ioat_chan);
		spin_unlock_bh(&ioat_chan->cleanup_lock);
		return;
	} else
		set_bit(IOAT_COMPLETION_ACK, &ioat_chan->state);

		goto unlock_out;
	}

	set_bit(IOAT_COMPLETION_ACK, &ioat_chan->state);
	mod_timer(&ioat_chan->timer, jiffies + COMPLETION_TIMEOUT);
unlock_out:
	spin_unlock_bh(&ioat_chan->cleanup_lock);
}