aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorSeokmann Ju <seokmann.ju@qlogic.com>2008-01-31 15:33:51 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-02-07 19:02:39 -0500
commit99363ef81cc7d0bab275304b8d34cf71d189cdcc (patch)
treeda56bd24924a5f8eb2b8a911273bb994f2facc5e /drivers/scsi
parent963b0fdd3a4aa68e6e65e0967ec0adcca0736fde (diff)
[SCSI] qla2xxx: Correct issue where vport-state was not updated during an ISP_ABORT_NEEDED requst.
While running IO simultaneously through physical port and virtual port, if user changes Data Rate (from scli utility), IO through virtual port fails. It failed because the vport had not received the ISP_ABORT_NEEDED notification. Signed-Off-by: Seokmann Ju <seokmann.ju@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 6285c9c2eaf0..3c1b43356adb 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2227,6 +2227,9 @@ qla2x00_do_dpc(void *data)
2227 fc_port_t *fcport; 2227 fc_port_t *fcport;
2228 uint8_t status; 2228 uint8_t status;
2229 uint16_t next_loopid; 2229 uint16_t next_loopid;
2230 struct scsi_qla_host *vha;
2231 int i;
2232
2230 2233
2231 ha = (scsi_qla_host_t *)data; 2234 ha = (scsi_qla_host_t *)data;
2232 2235
@@ -2269,6 +2272,18 @@ qla2x00_do_dpc(void *data)
2269 } 2272 }
2270 clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags); 2273 clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
2271 } 2274 }
2275
2276 for_each_mapped_vp_idx(ha, i) {
2277 list_for_each_entry(vha, &ha->vp_list,
2278 vp_list) {
2279 if (i == vha->vp_idx) {
2280 set_bit(ISP_ABORT_NEEDED,
2281 &vha->dpc_flags);
2282 break;
2283 }
2284 }
2285 }
2286
2272 DEBUG(printk("scsi(%ld): dpc: qla2x00_abort_isp end\n", 2287 DEBUG(printk("scsi(%ld): dpc: qla2x00_abort_isp end\n",
2273 ha->host_no)); 2288 ha->host_no));
2274 } 2289 }