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

Commit 1b46807e authored by Lalit Chandivade's avatar Lalit Chandivade Committed by James Bottomley
Browse files

[SCSI] qla4xxx: Remove AF_DPC_SCHEDULED flag from ha.



Since queue_work does not requeue, there is no need to check
if a work is in progress using the AF_DPC_SCHEDULED flag.
queue_work would return if work is pending without adding the
work, do_dpc would again get invoked from qla4xxx_timer if
there is still DPC flags set.

Signed-off-by: default avatarLalit Chandivade <lalit.chandivade@qlogic.com>
Signed-off-by: default avatarVikas Chaudhary <vikas.chaudhary@qlogic.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <jbottomley@parallels.com>
parent 977f46a4
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -368,7 +368,6 @@ struct scsi_qla_host {
#define AF_INIT_DONE			1 /* 0x00000002 */
#define AF_INIT_DONE			1 /* 0x00000002 */
#define AF_MBOX_COMMAND			2 /* 0x00000004 */
#define AF_MBOX_COMMAND			2 /* 0x00000004 */
#define AF_MBOX_COMMAND_DONE		3 /* 0x00000008 */
#define AF_MBOX_COMMAND_DONE		3 /* 0x00000008 */
#define AF_DPC_SCHEDULED		5 /* 0x00000020 */
#define AF_INTERRUPTS_ON		6 /* 0x00000040 */
#define AF_INTERRUPTS_ON		6 /* 0x00000040 */
#define AF_GET_CRASH_RECORD		7 /* 0x00000080 */
#define AF_GET_CRASH_RECORD		7 /* 0x00000080 */
#define AF_LINK_UP			8 /* 0x00000100 */
#define AF_LINK_UP			8 /* 0x00000100 */
+5 −12
Original line number Original line Diff line number Diff line
@@ -859,7 +859,7 @@ static void qla4xxx_timer(struct scsi_qla_host *ha)
	}
	}


	/* Wakeup the dpc routine for this adapter, if needed. */
	/* Wakeup the dpc routine for this adapter, if needed. */
	if ((start_dpc ||
	if (start_dpc ||
	     test_bit(DPC_RESET_HA, &ha->dpc_flags) ||
	     test_bit(DPC_RESET_HA, &ha->dpc_flags) ||
	     test_bit(DPC_RETRY_RESET_HA, &ha->dpc_flags) ||
	     test_bit(DPC_RETRY_RESET_HA, &ha->dpc_flags) ||
	     test_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags) ||
	     test_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags) ||
@@ -869,9 +869,7 @@ static void qla4xxx_timer(struct scsi_qla_host *ha)
	     test_bit(DPC_LINK_CHANGED, &ha->dpc_flags) ||
	     test_bit(DPC_LINK_CHANGED, &ha->dpc_flags) ||
	     test_bit(DPC_HA_UNRECOVERABLE, &ha->dpc_flags) ||
	     test_bit(DPC_HA_UNRECOVERABLE, &ha->dpc_flags) ||
	     test_bit(DPC_HA_NEED_QUIESCENT, &ha->dpc_flags) ||
	     test_bit(DPC_HA_NEED_QUIESCENT, &ha->dpc_flags) ||
	     test_bit(DPC_AEN, &ha->dpc_flags)) &&
	     test_bit(DPC_AEN, &ha->dpc_flags)) {
	     !test_bit(AF_DPC_SCHEDULED, &ha->flags) &&
	     ha->dpc_thread) {
		DEBUG2(printk("scsi%ld: %s: scheduling dpc routine"
		DEBUG2(printk("scsi%ld: %s: scheduling dpc routine"
			      " - dpc flags = 0x%lx\n",
			      " - dpc flags = 0x%lx\n",
			      ha->host_no, __func__, ha->dpc_flags));
			      ha->host_no, __func__, ha->dpc_flags));
@@ -1261,12 +1259,9 @@ static void qla4xxx_relogin_all_devices(struct scsi_qla_host *ha)


void qla4xxx_wake_dpc(struct scsi_qla_host *ha)
void qla4xxx_wake_dpc(struct scsi_qla_host *ha)
{
{
	if (ha->dpc_thread &&
	if (ha->dpc_thread)
	    !test_bit(AF_DPC_SCHEDULED, &ha->flags)) {
		set_bit(AF_DPC_SCHEDULED, &ha->flags);
		queue_work(ha->dpc_thread, &ha->dpc_work);
		queue_work(ha->dpc_thread, &ha->dpc_work);
}
}
}


/**
/**
 * qla4xxx_do_dpc - dpc routine
 * qla4xxx_do_dpc - dpc routine
@@ -1292,12 +1287,12 @@ static void qla4xxx_do_dpc(struct work_struct *work)


	/* Initialization not yet finished. Don't do anything yet. */
	/* Initialization not yet finished. Don't do anything yet. */
	if (!test_bit(AF_INIT_DONE, &ha->flags))
	if (!test_bit(AF_INIT_DONE, &ha->flags))
		goto do_dpc_exit;
		return;


	if (test_bit(AF_EEH_BUSY, &ha->flags)) {
	if (test_bit(AF_EEH_BUSY, &ha->flags)) {
		DEBUG2(printk(KERN_INFO "scsi%ld: %s: flags = %lx\n",
		DEBUG2(printk(KERN_INFO "scsi%ld: %s: flags = %lx\n",
		    ha->host_no, __func__, ha->flags));
		    ha->host_no, __func__, ha->flags));
		goto do_dpc_exit;
		return;
	}
	}


	if (is_qla8022(ha)) {
	if (is_qla8022(ha)) {
@@ -1404,8 +1399,6 @@ static void qla4xxx_do_dpc(struct work_struct *work)
		}
		}
	}
	}


do_dpc_exit:
	clear_bit(AF_DPC_SCHEDULED, &ha->flags);
}
}


/**
/**