From bccf2b3732f6091bf8a9be7db318a6947bd5da73 Mon Sep 17 00:00:00 2001 From: Manish Rangankar Date: Fri, 7 Oct 2011 16:55:47 -0700 Subject: [PATCH] --- yaml --- r: 271115 b: refs/heads/master c: 98270ab45c0a5e533f253f04e0b617c98b5a6259 h: refs/heads/master i: 271113: 14019aee135ff156679c49b0643508fa165704ef 271111: 8796c3b176b4dcba48d71d659617ad6e03d94b94 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/qla4xxx/ql4_init.c | 16 ++++++++++++++++ trunk/drivers/scsi/qla4xxx/ql4_os.c | 6 +++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e42a675d1d58..838e3778ea01 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 736cf369c9a514a9ed596e97375c49ef1fdf920a +refs/heads/master: 98270ab45c0a5e533f253f04e0b617c98b5a6259 diff --git a/trunk/drivers/scsi/qla4xxx/ql4_init.c b/trunk/drivers/scsi/qla4xxx/ql4_init.c index ca155bb9fd0a..cc10bacd1e18 100644 --- a/trunk/drivers/scsi/qla4xxx/ql4_init.c +++ b/trunk/drivers/scsi/qla4xxx/ql4_init.c @@ -931,6 +931,22 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index, break; } break; + case DDB_DS_SESSION_FAILED: + switch (state) { + case DDB_DS_SESSION_ACTIVE: + case DDB_DS_DISCOVERY: + iscsi_conn_login_event(ddb_entry->conn, + ISCSI_CONN_STATE_LOGGED_IN); + qla4xxx_update_session_conn_param(ha, ddb_entry); + status = QLA_SUCCESS; + break; + case DDB_DS_SESSION_FAILED: + iscsi_session_failure(ddb_entry->sess->dd_data, + ISCSI_ERR_CONN_FAILED); + status = QLA_SUCCESS; + break; + } + break; default: DEBUG2(ql4_printk(KERN_INFO, ha, "%s: Unknown Event\n", __func__)); diff --git a/trunk/drivers/scsi/qla4xxx/ql4_os.c b/trunk/drivers/scsi/qla4xxx/ql4_os.c index bea78a7f6bc1..af83e6f3fe6f 100644 --- a/trunk/drivers/scsi/qla4xxx/ql4_os.c +++ b/trunk/drivers/scsi/qla4xxx/ql4_os.c @@ -1158,7 +1158,11 @@ static int qla4xxx_conn_start(struct iscsi_cls_conn *cls_conn) goto exit_conn_start; } - ddb_entry->fw_ddb_device_state = DDB_DS_LOGIN_IN_PROCESS; + if (ddb_entry->fw_ddb_device_state == DDB_DS_NO_CONNECTION_ACTIVE) + ddb_entry->fw_ddb_device_state = DDB_DS_LOGIN_IN_PROCESS; + + DEBUG2(printk(KERN_INFO "%s: DDB state [%d]\n", __func__, + ddb_entry->fw_ddb_device_state)); exit_set_param: iscsi_conn_start(cls_conn);