.. | .. |
---|
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; |
---|