aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-01-17 12:02:12 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-23 12:29:31 -0500
commita4722cf24d7a0dfa0874d49f61b053a6459761bf (patch)
treed4815ab306975e9604805fab5b4a2a14b55c793c /drivers
parentda7429f9ab5ba939cec37d07ef7f6a630fe48421 (diff)
[SCSI] qla2xxx: Don't schedule the DPC routine to perform an issue-lip request.
As the driver depends on the DPC routine to handle bottom-half loop resynchronization in order to recover from the issue-lip request. The issue_lip call is sleeping context capable, so just issue the reset function there. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c3
3 files changed, 4 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index e3bda8f7668c..22b3868e7a1f 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -958,7 +958,7 @@ qla2x00_issue_lip(struct Scsi_Host *shost)
958{ 958{
959 scsi_qla_host_t *ha = shost_priv(shost); 959 scsi_qla_host_t *ha = shost_priv(shost);
960 960
961 set_bit(LOOP_RESET_NEEDED, &ha->dpc_flags); 961 qla2x00_loop_reset(ha);
962 return 0; 962 return 0;
963} 963}
964 964
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 5b381dc8d749..f6917b94701e 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -65,6 +65,8 @@ extern int ql2xextended_error_logging;
65extern int ql2xqfullrampup; 65extern int ql2xqfullrampup;
66extern int num_hosts; 66extern int num_hosts;
67 67
68extern int qla2x00_loop_reset(scsi_qla_host_t *);
69
68/* 70/*
69 * Global Functions in qla_mid.c source file. 71 * Global Functions in qla_mid.c source file.
70 */ 72 */
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index df1694a2f875..0a414c0dd580 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -105,7 +105,6 @@ static int qla2xxx_eh_abort(struct scsi_cmnd *);
105static int qla2xxx_eh_device_reset(struct scsi_cmnd *); 105static int qla2xxx_eh_device_reset(struct scsi_cmnd *);
106static int qla2xxx_eh_bus_reset(struct scsi_cmnd *); 106static int qla2xxx_eh_bus_reset(struct scsi_cmnd *);
107static int qla2xxx_eh_host_reset(struct scsi_cmnd *); 107static int qla2xxx_eh_host_reset(struct scsi_cmnd *);
108static int qla2x00_loop_reset(scsi_qla_host_t *ha);
109static int qla2x00_device_reset(scsi_qla_host_t *, fc_port_t *); 108static int qla2x00_device_reset(scsi_qla_host_t *, fc_port_t *);
110 109
111static int qla2x00_change_queue_depth(struct scsi_device *, int); 110static int qla2x00_change_queue_depth(struct scsi_device *, int);
@@ -1060,7 +1059,7 @@ eh_host_reset_lock:
1060* Returns: 1059* Returns:
1061* 0 = success 1060* 0 = success
1062*/ 1061*/
1063static int 1062int
1064qla2x00_loop_reset(scsi_qla_host_t *ha) 1063qla2x00_loop_reset(scsi_qla_host_t *ha)
1065{ 1064{
1066 int ret; 1065 int ret;