aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorandrew.vasquez@qlogic.com <andrew.vasquez@qlogic.com>2006-01-20 17:53:19 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2006-01-26 08:17:00 -0500
commit052c40c83b4ca37be226112049b60097cb9961e1 (patch)
treefc6a030f7df137575160dfb8274991a854c3a14d /drivers/scsi/qla2xxx/qla_os.c
parentd97994dc1fddcbb8212b745d9c9c9ce96262155c (diff)
[SCSI] qla2xxx: Correct issue where the rport's upcall was not being made after relogin.
A target can LOGO an initiator at any time (i.e. during I/O, due to a controller hicup, or as a simple authentication mechanism after an initial CDB command), when this occurs, the driver attempts to relogin (PLOGI) to the device via the DPC thread. Add code to make the appropriate upcall to the FC transport layer (fc_remote_port_add()) upon successful completion of the PLOGI. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 089e0f500363..5866a7c706a8 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2250,13 +2250,8 @@ qla2x00_do_dpc(void *data)
2250 DEBUG(printk("scsi(%ld): port login OK: logged in ID 0x%x\n", 2250 DEBUG(printk("scsi(%ld): port login OK: logged in ID 0x%x\n",
2251 ha->host_no, fcport->loop_id)); 2251 ha->host_no, fcport->loop_id));
2252 2252
2253 fcport->port_login_retry_count = 2253 qla2x00_update_fcport(ha,
2254 ha->port_down_retry_count * PORT_RETRY_TIME; 2254 fcport);
2255 atomic_set(&fcport->state, FCS_ONLINE);
2256 atomic_set(&fcport->port_down_timer,
2257 ha->port_down_retry_count * PORT_RETRY_TIME);
2258
2259 fcport->login_retry = 0;
2260 } else if (status == 1) { 2255 } else if (status == 1) {
2261 set_bit(RELOGIN_NEEDED, &ha->dpc_flags); 2256 set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
2262 /* retry the login again */ 2257 /* retry the login again */