diff options
Diffstat (limited to 'drivers/scsi/mpt2sas')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.c | 4 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.c | 11 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 17 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_transport.c | 14 |
4 files changed, 24 insertions, 22 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index db5e36735e72..6422e258fd52 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | |||
@@ -2949,6 +2949,7 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
2949 | Mpi2IOCInitReply_t mpi_reply; | 2949 | Mpi2IOCInitReply_t mpi_reply; |
2950 | int r; | 2950 | int r; |
2951 | struct timeval current_time; | 2951 | struct timeval current_time; |
2952 | u16 ioc_status; | ||
2952 | 2953 | ||
2953 | dinitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name, | 2954 | dinitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name, |
2954 | __func__)); | 2955 | __func__)); |
@@ -3028,7 +3029,8 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
3028 | return r; | 3029 | return r; |
3029 | } | 3030 | } |
3030 | 3031 | ||
3031 | if (mpi_reply.IOCStatus != MPI2_IOCSTATUS_SUCCESS || | 3032 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; |
3033 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS || | ||
3032 | mpi_reply.IOCLogInfo) { | 3034 | mpi_reply.IOCLogInfo) { |
3033 | printk(MPT2SAS_ERR_FMT "%s: failed\n", ioc->name, __func__); | 3035 | printk(MPT2SAS_ERR_FMT "%s: failed\n", ioc->name, __func__); |
3034 | r = -EIO; | 3036 | r = -EIO; |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c index afdb4f36c30d..84a124f8e21f 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c +++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c | |||
@@ -848,8 +848,9 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc, | |||
848 | printk(MPT2SAS_DEBUG_FMT "TASK_MGMT: " | 848 | printk(MPT2SAS_DEBUG_FMT "TASK_MGMT: " |
849 | "IOCStatus(0x%04x), IOCLogInfo(0x%08x), " | 849 | "IOCStatus(0x%04x), IOCLogInfo(0x%08x), " |
850 | "TerminationCount(0x%08x)\n", ioc->name, | 850 | "TerminationCount(0x%08x)\n", ioc->name, |
851 | tm_reply->IOCStatus, tm_reply->IOCLogInfo, | 851 | le16_to_cpu(tm_reply->IOCStatus), |
852 | tm_reply->TerminationCount); | 852 | le32_to_cpu(tm_reply->IOCLogInfo), |
853 | le32_to_cpu(tm_reply->TerminationCount)); | ||
853 | } | 854 | } |
854 | #endif | 855 | #endif |
855 | /* copy out xdata to user */ | 856 | /* copy out xdata to user */ |
@@ -1411,7 +1412,7 @@ _ctl_diag_register_2(struct MPT2SAS_ADAPTER *ioc, | |||
1411 | } else { | 1412 | } else { |
1412 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " | 1413 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " |
1413 | "log_info(0x%08x)\n", ioc->name, __func__, | 1414 | "log_info(0x%08x)\n", ioc->name, __func__, |
1414 | ioc_status, mpi_reply->IOCLogInfo); | 1415 | ioc_status, le32_to_cpu(mpi_reply->IOCLogInfo)); |
1415 | rc = -EFAULT; | 1416 | rc = -EFAULT; |
1416 | } | 1417 | } |
1417 | 1418 | ||
@@ -1756,7 +1757,7 @@ _ctl_send_release(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type, u8 *issue_reset) | |||
1756 | } else { | 1757 | } else { |
1757 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " | 1758 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " |
1758 | "log_info(0x%08x)\n", ioc->name, __func__, | 1759 | "log_info(0x%08x)\n", ioc->name, __func__, |
1759 | ioc_status, mpi_reply->IOCLogInfo); | 1760 | ioc_status, le32_to_cpu(mpi_reply->IOCLogInfo)); |
1760 | rc = -EFAULT; | 1761 | rc = -EFAULT; |
1761 | } | 1762 | } |
1762 | 1763 | ||
@@ -2017,7 +2018,7 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state) | |||
2017 | } else { | 2018 | } else { |
2018 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " | 2019 | printk(MPT2SAS_DEBUG_FMT "%s: ioc_status(0x%04x) " |
2019 | "log_info(0x%08x)\n", ioc->name, __func__, | 2020 | "log_info(0x%08x)\n", ioc->name, __func__, |
2020 | ioc_status, mpi_reply->IOCLogInfo); | 2021 | ioc_status, le32_to_cpu(mpi_reply->IOCLogInfo)); |
2021 | rc = -EFAULT; | 2022 | rc = -EFAULT; |
2022 | } | 2023 | } |
2023 | 2024 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 6f5e2e471b48..d0d66726ff69 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -2775,8 +2775,6 @@ _scsih_setup_eedp(struct scsi_cmnd *scmd, Mpi2SCSIIORequest_t *mpi_request) | |||
2775 | else | 2775 | else |
2776 | return; | 2776 | return; |
2777 | 2777 | ||
2778 | mpi_request->EEDPBlockSize = scmd->device->sector_size; | ||
2779 | |||
2780 | switch (prot_type) { | 2778 | switch (prot_type) { |
2781 | case SCSI_PROT_DIF_TYPE1: | 2779 | case SCSI_PROT_DIF_TYPE1: |
2782 | 2780 | ||
@@ -2784,8 +2782,7 @@ _scsih_setup_eedp(struct scsi_cmnd *scmd, Mpi2SCSIIORequest_t *mpi_request) | |||
2784 | * enable ref/guard checking | 2782 | * enable ref/guard checking |
2785 | * auto increment ref tag | 2783 | * auto increment ref tag |
2786 | */ | 2784 | */ |
2787 | mpi_request->EEDPFlags = eedp_flags | | 2785 | eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG | |
2788 | MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG | | ||
2789 | MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG | | 2786 | MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG | |
2790 | MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD; | 2787 | MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD; |
2791 | mpi_request->CDB.EEDP32.PrimaryReferenceTag = | 2788 | mpi_request->CDB.EEDP32.PrimaryReferenceTag = |
@@ -2798,11 +2795,11 @@ _scsih_setup_eedp(struct scsi_cmnd *scmd, Mpi2SCSIIORequest_t *mpi_request) | |||
2798 | /* | 2795 | /* |
2799 | * enable guard checking | 2796 | * enable guard checking |
2800 | */ | 2797 | */ |
2801 | mpi_request->EEDPFlags = eedp_flags | | 2798 | eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD; |
2802 | MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD; | ||
2803 | |||
2804 | break; | 2799 | break; |
2805 | } | 2800 | } |
2801 | mpi_request->EEDPBlockSize = cpu_to_le32(scmd->device->sector_size); | ||
2802 | mpi_request->EEDPFlags = cpu_to_le16(eedp_flags); | ||
2806 | } | 2803 | } |
2807 | 2804 | ||
2808 | /** | 2805 | /** |
@@ -4395,6 +4392,7 @@ _scsih_sas_broadcast_primative_event(struct MPT2SAS_ADAPTER *ioc, | |||
4395 | #ifdef CONFIG_SCSI_MPT2SAS_LOGGING | 4392 | #ifdef CONFIG_SCSI_MPT2SAS_LOGGING |
4396 | Mpi2EventDataSasBroadcastPrimitive_t *event_data = fw_event->event_data; | 4393 | Mpi2EventDataSasBroadcastPrimitive_t *event_data = fw_event->event_data; |
4397 | #endif | 4394 | #endif |
4395 | u16 ioc_status; | ||
4398 | dewtprintk(ioc, printk(MPT2SAS_DEBUG_FMT "broadcast primative: " | 4396 | dewtprintk(ioc, printk(MPT2SAS_DEBUG_FMT "broadcast primative: " |
4399 | "phy number(%d), width(%d)\n", ioc->name, event_data->PhyNum, | 4397 | "phy number(%d), width(%d)\n", ioc->name, event_data->PhyNum, |
4400 | event_data->PortWidth)); | 4398 | event_data->PortWidth)); |
@@ -4428,8 +4426,9 @@ _scsih_sas_broadcast_primative_event(struct MPT2SAS_ADAPTER *ioc, | |||
4428 | mpt2sas_scsih_issue_tm(ioc, handle, lun, | 4426 | mpt2sas_scsih_issue_tm(ioc, handle, lun, |
4429 | MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30); | 4427 | MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30); |
4430 | ioc->tm_cmds.status = MPT2_CMD_NOT_USED; | 4428 | ioc->tm_cmds.status = MPT2_CMD_NOT_USED; |
4431 | 4429 | ioc_status = le16_to_cpu(mpi_reply->IOCStatus) | |
4432 | if ((mpi_reply->IOCStatus == MPI2_IOCSTATUS_SUCCESS) && | 4430 | & MPI2_IOCSTATUS_MASK; |
4431 | if ((ioc_status == MPI2_IOCSTATUS_SUCCESS) && | ||
4433 | (mpi_reply->ResponseCode == | 4432 | (mpi_reply->ResponseCode == |
4434 | MPI2_SCSITASKMGMT_RSP_TM_SUCCEEDED || | 4433 | MPI2_SCSITASKMGMT_RSP_TM_SUCCEEDED || |
4435 | mpi_reply->ResponseCode == | 4434 | mpi_reply->ResponseCode == |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index 8030bc2774c8..3a82872bad44 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c | |||
@@ -258,8 +258,7 @@ struct rep_manu_reply{ | |||
258 | u8 response_length; | 258 | u8 response_length; |
259 | u16 expander_change_count; | 259 | u16 expander_change_count; |
260 | u8 reserved0[2]; | 260 | u8 reserved0[2]; |
261 | u8 sas_format:1; | 261 | u8 sas_format; |
262 | u8 reserved1:7; | ||
263 | u8 reserved2[3]; | 262 | u8 reserved2[3]; |
264 | u8 vendor_id[SAS_EXPANDER_VENDOR_ID_LEN]; | 263 | u8 vendor_id[SAS_EXPANDER_VENDOR_ID_LEN]; |
265 | u8 product_id[SAS_EXPANDER_PRODUCT_ID_LEN]; | 264 | u8 product_id[SAS_EXPANDER_PRODUCT_ID_LEN]; |
@@ -374,7 +373,8 @@ _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, | |||
374 | mpi_request->VP_ID = 0; | 373 | mpi_request->VP_ID = 0; |
375 | sas_address_le = (u64 *)&mpi_request->SASAddress; | 374 | sas_address_le = (u64 *)&mpi_request->SASAddress; |
376 | *sas_address_le = cpu_to_le64(sas_address); | 375 | *sas_address_le = cpu_to_le64(sas_address); |
377 | mpi_request->RequestDataLength = sizeof(struct rep_manu_request); | 376 | mpi_request->RequestDataLength = |
377 | cpu_to_le16(sizeof(struct rep_manu_request)); | ||
378 | psge = &mpi_request->SGL; | 378 | psge = &mpi_request->SGL; |
379 | 379 | ||
380 | /* WRITE sgel first */ | 380 | /* WRITE sgel first */ |
@@ -437,8 +437,8 @@ _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, | |||
437 | SAS_EXPANDER_PRODUCT_ID_LEN); | 437 | SAS_EXPANDER_PRODUCT_ID_LEN); |
438 | strncpy(edev->product_rev, manufacture_reply->product_rev, | 438 | strncpy(edev->product_rev, manufacture_reply->product_rev, |
439 | SAS_EXPANDER_PRODUCT_REV_LEN); | 439 | SAS_EXPANDER_PRODUCT_REV_LEN); |
440 | edev->level = manufacture_reply->sas_format; | 440 | edev->level = manufacture_reply->sas_format & 1; |
441 | if (manufacture_reply->sas_format) { | 441 | if (edev->level) { |
442 | strncpy(edev->component_vendor_id, | 442 | strncpy(edev->component_vendor_id, |
443 | manufacture_reply->component_vendor_id, | 443 | manufacture_reply->component_vendor_id, |
444 | SAS_EXPANDER_COMPONENT_VENDOR_ID_LEN); | 444 | SAS_EXPANDER_COMPONENT_VENDOR_ID_LEN); |
@@ -1116,7 +1116,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1116 | dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), | 1116 | dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), |
1117 | blk_rq_bytes(req), PCI_DMA_BIDIRECTIONAL); | 1117 | blk_rq_bytes(req), PCI_DMA_BIDIRECTIONAL); |
1118 | if (!dma_addr_out) { | 1118 | if (!dma_addr_out) { |
1119 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); | 1119 | mpt2sas_base_free_smid(ioc, smid); |
1120 | goto unmap; | 1120 | goto unmap; |
1121 | } | 1121 | } |
1122 | 1122 | ||
@@ -1134,7 +1134,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1134 | dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), | 1134 | dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), |
1135 | blk_rq_bytes(rsp), PCI_DMA_BIDIRECTIONAL); | 1135 | blk_rq_bytes(rsp), PCI_DMA_BIDIRECTIONAL); |
1136 | if (!dma_addr_in) { | 1136 | if (!dma_addr_in) { |
1137 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); | 1137 | mpt2sas_base_free_smid(ioc, smid); |
1138 | goto unmap; | 1138 | goto unmap; |
1139 | } | 1139 | } |
1140 | 1140 | ||