ipr: don't log error messages when applications issues illegal requests
authorwenxiong@linux.vnet.ibm.com <wenxiong@linux.vnet.ibm.com>
Wed, 24 Sep 2014 21:25:47 +0000 (16:25 -0500)
committerChristoph Hellwig <hch@lst.de>
Thu, 25 Sep 2014 12:23:18 +0000 (14:23 +0200)
Failing Device information are logged when IOA firmware detected these
illegal request such as IOA firmware doesn't support inquiry with page
code 2. The patch fixes the issue.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Tested-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/ipr.c
drivers/scsi/ipr.h

index 924b0ba74dfea7aceadbf19673fa72ba6c82b10a..2a9578c116b7a8f879b386a58c937bdf2b4d1fc1 100644 (file)
@@ -2440,6 +2440,7 @@ static void ipr_handle_log_data(struct ipr_ioa_cfg *ioa_cfg,
 {
        u32 ioasc;
        int error_index;
+       struct ipr_hostrcb_type_21_error *error;
 
        if (hostrcb->hcam.notify_type != IPR_HOST_RCB_NOTIF_TYPE_ERROR_LOG_ENTRY)
                return;
@@ -2464,6 +2465,15 @@ static void ipr_handle_log_data(struct ipr_ioa_cfg *ioa_cfg,
        if (!ipr_error_table[error_index].log_hcam)
                return;
 
+       if (ioasc == IPR_IOASC_HW_CMD_FAILED &&
+           hostrcb->hcam.overlay_id == IPR_HOST_RCB_OVERLAY_ID_21) {
+               error = &hostrcb->hcam.u.error64.u.type_21_error;
+
+               if (((be32_to_cpu(error->sense_data[0]) & 0x0000ff00) >> 8) == ILLEGAL_REQUEST &&
+                       ioa_cfg->log_level <= IPR_DEFAULT_LOG_LEVEL)
+                               return;
+       }
+
        ipr_hcam_err(hostrcb, "%s\n", ipr_error_table[error_index].error);
 
        /* Set indication we have logged an error */
index 31ed126f714382fc15001d0277835d9c399df919..8f8960d0bd7312547a6fa9e9728b3ec44da251f4 100644 (file)
 #define IPR_IOASC_HW_DEV_BUS_STATUS                    0x04448500
 #define        IPR_IOASC_IOASC_MASK                    0xFFFFFF00
 #define        IPR_IOASC_SCSI_STATUS_MASK              0x000000FF
+#define IPR_IOASC_HW_CMD_FAILEd                        0x046E0000
 #define IPR_IOASC_IR_INVALID_REQ_TYPE_OR_PKT   0x05240000
 #define IPR_IOASC_IR_RESOURCE_HANDLE           0x05250000
 #define IPR_IOASC_IR_NO_CMDS_TO_2ND_IOA                0x05258100