Skip to content
atari_NCR5380.c 92 KiB
Newer Older
	 * on any queue, so they won't be retried ...
	 *
	 * Conclusion: either scsi.c disables timeout for all resetted commands
	 * immediately, or we lose!  As of linux-2.0.20 it doesn't.
	 */

	/* After the reset, there are no more connected or disconnected commands
	 * and no busy units; so clear the low-level status here to avoid
	 * conflicts when the mid-level code tries to wake up the affected
	 * commands!
	 */

	if (hostdata->issue_queue)
		ABRT_PRINTK("scsi%d: reset aborted issued command(s)\n", H_NO(cmd));
	if (hostdata->connected)
		ABRT_PRINTK("scsi%d: reset aborted a connected command\n", H_NO(cmd));
	if (hostdata->disconnected_queue)
		ABRT_PRINTK("scsi%d: reset aborted disconnected command(s)\n", H_NO(cmd));

	local_irq_save(flags);
	hostdata->issue_queue = NULL;
	hostdata->connected = NULL;
	hostdata->disconnected_queue = NULL;
Linus Torvalds's avatar
Linus Torvalds committed
#ifdef SUPPORT_TAGS
	free_all_tags();
Linus Torvalds's avatar
Linus Torvalds committed
#endif
	for (i = 0; i < 8; ++i)
		hostdata->busy[i] = 0;
Linus Torvalds's avatar
Linus Torvalds committed
#ifdef REAL_DMA
	hostdata->dma_len = 0;
Linus Torvalds's avatar
Linus Torvalds committed
#endif
	local_irq_restore(flags);
Linus Torvalds's avatar
Linus Torvalds committed

	/* we did no complete reset of all commands, so a wakeup is required */
	return SCSI_RESET_WAKEUP | SCSI_RESET_BUS_RESET;
Linus Torvalds's avatar
Linus Torvalds committed
#endif /* 1 */
}