| .. | .. |
|---|
| 1044 | 1044 | (struct imm_ntfy_from_isp *)sess->iocb, SRB_NACK_LOGO); |
|---|
| 1045 | 1045 | } |
|---|
| 1046 | 1046 | |
|---|
| 1047 | | - spin_lock_irqsave(&vha->work_lock, flags); |
|---|
| 1048 | | - sess->flags &= ~FCF_ASYNC_SENT; |
|---|
| 1049 | | - spin_unlock_irqrestore(&vha->work_lock, flags); |
|---|
| 1050 | | - |
|---|
| 1051 | 1047 | spin_lock_irqsave(&ha->tgt.sess_lock, flags); |
|---|
| 1052 | 1048 | if (sess->se_sess) { |
|---|
| 1053 | 1049 | sess->se_sess = NULL; |
|---|
| .. | .. |
|---|
| 1057 | 1053 | |
|---|
| 1058 | 1054 | qla2x00_set_fcport_disc_state(sess, DSC_DELETED); |
|---|
| 1059 | 1055 | sess->fw_login_state = DSC_LS_PORT_UNAVAIL; |
|---|
| 1060 | | - sess->deleted = QLA_SESS_DELETED; |
|---|
| 1061 | 1056 | |
|---|
| 1062 | 1057 | if (sess->login_succ && !IS_SW_RESV_ADDR(sess->d_id)) { |
|---|
| 1063 | 1058 | vha->fcport_count--; |
|---|
| .. | .. |
|---|
| 1109 | 1104 | |
|---|
| 1110 | 1105 | sess->explicit_logout = 0; |
|---|
| 1111 | 1106 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
|---|
| 1112 | | - sess->free_pending = 0; |
|---|
| 1113 | 1107 | |
|---|
| 1114 | 1108 | qla2x00_dfs_remove_rport(vha, sess); |
|---|
| 1109 | + |
|---|
| 1110 | + spin_lock_irqsave(&vha->work_lock, flags); |
|---|
| 1111 | + sess->flags &= ~FCF_ASYNC_SENT; |
|---|
| 1112 | + sess->deleted = QLA_SESS_DELETED; |
|---|
| 1113 | + sess->free_pending = 0; |
|---|
| 1114 | + spin_unlock_irqrestore(&vha->work_lock, flags); |
|---|
| 1115 | 1115 | |
|---|
| 1116 | 1116 | ql_dbg(ql_dbg_disc, vha, 0xf001, |
|---|
| 1117 | 1117 | "Unregistration of sess %p %8phC finished fcp_cnt %d\n", |
|---|
| .. | .. |
|---|
| 1161 | 1161 | * management from being sent. |
|---|
| 1162 | 1162 | */ |
|---|
| 1163 | 1163 | sess->flags |= FCF_ASYNC_SENT; |
|---|
| 1164 | + sess->deleted = QLA_SESS_DELETION_IN_PROGRESS; |
|---|
| 1164 | 1165 | spin_unlock_irqrestore(&sess->vha->work_lock, flags); |
|---|
| 1165 | 1166 | |
|---|
| 1166 | 1167 | if (sess->se_sess) |
|---|
| 1167 | 1168 | vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess); |
|---|
| 1168 | 1169 | |
|---|
| 1169 | | - sess->deleted = QLA_SESS_DELETION_IN_PROGRESS; |
|---|
| 1170 | 1170 | qla2x00_set_fcport_disc_state(sess, DSC_DELETE_PEND); |
|---|
| 1171 | 1171 | sess->last_rscn_gen = sess->rscn_gen; |
|---|
| 1172 | 1172 | sess->last_login_gen = sess->login_gen; |
|---|