@@ -1909,6 +1909,10 @@ static void qlt_24xx_retry_term_exchange(struct scsi_qla_host *vha,
19091909 * ABTS response. So, in it ID fields are reversed.
19101910 */
19111911
1912+ ql_dbg (ql_dbg_tgt_mgt , vha , 0xe082 ,
1913+ "qla_target(%d): tag %u: Sending TERM EXCH CTIO for ABTS\n" ,
1914+ vha -> vp_idx , le32_to_cpu (entry -> exchange_addr_to_abort ));
1915+
19121916 ctio -> entry_type = CTIO_TYPE7 ;
19131917 ctio -> entry_count = 1 ;
19141918 ctio -> nport_handle = entry -> nport_handle ;
@@ -3620,16 +3624,24 @@ static int __qlt_send_term_exchange(struct qla_qpair *qpair,
36203624{
36213625 struct scsi_qla_host * vha = qpair -> vha ;
36223626 struct ctio7_to_24xx * ctio24 ;
3623- struct qla_hw_data * ha = vha -> hw ;
36243627 request_t * pkt ;
36253628 int ret = 0 ;
36263629 uint16_t temp ;
36273630
3628- ql_dbg (ql_dbg_tgt , vha , 0xe009 , "Sending TERM EXCH CTIO (ha=%p)\n" , ha );
3629-
36303631 if (cmd )
36313632 vha = cmd -> vha ;
36323633
3634+ if (cmd ) {
3635+ ql_dbg (ql_dbg_tgt_mgt , vha , 0xe009 ,
3636+ "qla_target(%d): tag %lld: Sending TERM EXCH CTIO state %d cmd_sent_to_fw %u\n" ,
3637+ vha -> vp_idx , cmd -> se_cmd .tag , cmd -> state ,
3638+ cmd -> cmd_sent_to_fw );
3639+ } else {
3640+ ql_dbg (ql_dbg_tgt_mgt , vha , 0xe009 ,
3641+ "qla_target(%d): tag %u: Sending TERM EXCH CTIO (no cmd)\n" ,
3642+ vha -> vp_idx , le32_to_cpu (atio -> u .isp24 .exchange_addr ));
3643+ }
3644+
36333645 pkt = (request_t * )qla2x00_alloc_iocbs_ready (qpair , NULL );
36343646 if (pkt == NULL ) {
36353647 ql_dbg (ql_dbg_tgt , vha , 0xe050 ,
@@ -3920,6 +3932,7 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha,
39203932 struct se_cmd * se_cmd ;
39213933 struct qla_tgt_cmd * cmd ;
39223934 struct qla_qpair * qpair = rsp -> qpair ;
3935+ uint16_t ctio_flags ;
39233936
39243937 if (handle & CTIO_INTERMEDIATE_HANDLE_MARK ) {
39253938 /* That could happen only in case of an error/reset/abort */
@@ -3931,11 +3944,28 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha,
39313944 return ;
39323945 }
39333946
3947+ ctio_flags = le16_to_cpu (ctio -> flags );
3948+
39343949 cmd = qlt_ctio_to_cmd (vha , rsp , handle , ctio );
3935- if (cmd == NULL )
3950+ if (unlikely (cmd == NULL )) {
3951+ if ((handle & ~QLA_TGT_HANDLE_MASK ) == QLA_TGT_SKIP_HANDLE &&
3952+ (ctio_flags & 0xe1ff ) == (CTIO7_FLAGS_STATUS_MODE_1 |
3953+ CTIO7_FLAGS_TERMINATE )) {
3954+ u32 tag = le32_to_cpu (ctio -> exchange_address );
3955+
3956+ if (status == CTIO_SUCCESS )
3957+ ql_dbg (ql_dbg_tgt_mgt , vha , 0xe083 ,
3958+ "qla_target(%d): tag %u: term exchange successful\n" ,
3959+ vha -> vp_idx , tag );
3960+ else
3961+ ql_dbg (ql_dbg_tgt_mgt , vha , 0xe084 ,
3962+ "qla_target(%d): tag %u: term exchange failed; status = 0x%x\n" ,
3963+ vha -> vp_idx , tag , status );
3964+ }
39363965 return ;
3966+ }
39373967
3938- if ((le16_to_cpu ( ctio -> flags ) & CTIO7_FLAGS_DATA_OUT ) && cmd -> sess )
3968+ if ((ctio_flags & CTIO7_FLAGS_DATA_OUT ) && cmd -> sess )
39393969 qlt_chk_edif_rx_sa_delete_pending (vha , cmd -> sess , ctio );
39403970
39413971 se_cmd = & cmd -> se_cmd ;
0 commit comments