OSDN Git Service

scsi: qla2xxx: Add appropriate debug info for invalid RX_ID
authorQuinn Tran <quinn.tran@cavium.com>
Tue, 4 Sep 2018 21:19:11 +0000 (14:19 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 12 Sep 2018 00:28:08 +0000 (20:28 -0400)
When driver detect CTIO_INVALID_RX_ID status for CTIO, print message with
correct information to help with debugging.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_target.c
drivers/scsi/qla2xxx/qla_target.h

index 29fbb0a..3796525 100644 (file)
@@ -3291,6 +3291,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
 
        cmd->state = QLA_TGT_STATE_PROCESSED; /* Mid-level is done processing */
        cmd->cmd_sent_to_fw = 1;
+       cmd->ctio_flags = le16_to_cpu(pkt->u.status0.flags);
 
        /* Memory Barrier */
        wmb();
@@ -3369,6 +3370,7 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd)
 
        cmd->state = QLA_TGT_STATE_NEED_DATA;
        cmd->cmd_sent_to_fw = 1;
+       cmd->ctio_flags = le16_to_cpu(pkt->u.status0.flags);
 
        /* Memory Barrier */
        wmb();
@@ -3942,12 +3944,20 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha,
 
        if (unlikely(status != CTIO_SUCCESS)) {
                switch (status & 0xFFFF) {
+               case CTIO_INVALID_RX_ID:
+                       if (printk_ratelimit())
+                               dev_info(&vha->hw->pdev->dev,
+                                   "qla_target(%d): CTIO with INVALID_RX_ID ATIO attr %x CTIO Flags %x|%x\n",
+                                   vha->vp_idx, cmd->atio.u.isp24.attr,
+                                   ((cmd->ctio_flags >> 9) & 0xf),
+                                   cmd->ctio_flags);
+
+                       break;
                case CTIO_LIP_RESET:
                case CTIO_TARGET_RESET:
                case CTIO_ABORTED:
                        /* driver request abort via Terminate exchange */
                case CTIO_TIMEOUT:
-               case CTIO_INVALID_RX_ID:
                        /* They are OK */
                        ql_dbg(ql_dbg_tgt_mgt, vha, 0xf058,
                            "qla_target(%d): CTIO with "
index fecf96f..cda41f2 100644 (file)
@@ -908,6 +908,7 @@ struct qla_tgt_cmd {
        u64 unpacked_lun;
        enum dma_data_direction dma_data_direction;
 
+       uint16_t ctio_flags;
        uint16_t vp_idx;
        uint16_t loop_id;       /* to save extra sess dereferences */
        struct qla_tgt *tgt;    /* to save extra sess dereferences */