diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
commit | bbb20089a3275a19e475dbc21320c3742e3ca423 (patch) | |
tree | 216fdc1cbef450ca688135c5b8969169482d9a48 /drivers/scsi/mpt2sas/mpt2sas_transport.c | |
parent | 3e48e656903e9fd8bc805c6a2c4264d7808d315b (diff) | |
parent | 657a77fa7284d8ae28dfa48f1dc5d919bf5b2843 (diff) |
Merge branch 'dmaengine' into async-tx-next
Conflicts:
crypto/async_tx/async_xor.c
drivers/dma/ioat/dma_v2.h
drivers/dma/ioat/pci.c
drivers/md/raid5.c
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_transport.c')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_transport.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index e03dc0b1e1a0..686695b155c7 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c | |||
@@ -264,7 +264,7 @@ struct rep_manu_reply{ | |||
264 | }; | 264 | }; |
265 | 265 | ||
266 | /** | 266 | /** |
267 | * transport_expander_report_manufacture - obtain SMP report_manufacture | 267 | * _transport_expander_report_manufacture - obtain SMP report_manufacture |
268 | * @ioc: per adapter object | 268 | * @ioc: per adapter object |
269 | * @sas_address: expander sas address | 269 | * @sas_address: expander sas address |
270 | * @edev: the sas_expander_device object | 270 | * @edev: the sas_expander_device object |
@@ -274,7 +274,7 @@ struct rep_manu_reply{ | |||
274 | * Returns 0 for success, non-zero for failure. | 274 | * Returns 0 for success, non-zero for failure. |
275 | */ | 275 | */ |
276 | static int | 276 | static int |
277 | transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, | 277 | _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, |
278 | u64 sas_address, struct sas_expander_device *edev) | 278 | u64 sas_address, struct sas_expander_device *edev) |
279 | { | 279 | { |
280 | Mpi2SmpPassthroughRequest_t *mpi_request; | 280 | Mpi2SmpPassthroughRequest_t *mpi_request; |
@@ -578,7 +578,7 @@ mpt2sas_transport_port_add(struct MPT2SAS_ADAPTER *ioc, u16 handle, | |||
578 | MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER || | 578 | MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER || |
579 | mpt2sas_port->remote_identify.device_type == | 579 | mpt2sas_port->remote_identify.device_type == |
580 | MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER) | 580 | MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER) |
581 | transport_expander_report_manufacture(ioc, | 581 | _transport_expander_report_manufacture(ioc, |
582 | mpt2sas_port->remote_identify.sas_address, | 582 | mpt2sas_port->remote_identify.sas_address, |
583 | rphy_to_expander_device(rphy)); | 583 | rphy_to_expander_device(rphy)); |
584 | 584 | ||
@@ -852,7 +852,7 @@ rphy_to_ioc(struct sas_rphy *rphy) | |||
852 | } | 852 | } |
853 | 853 | ||
854 | /** | 854 | /** |
855 | * transport_get_linkerrors - | 855 | * _transport_get_linkerrors - |
856 | * @phy: The sas phy object | 856 | * @phy: The sas phy object |
857 | * | 857 | * |
858 | * Only support sas_host direct attached phys. | 858 | * Only support sas_host direct attached phys. |
@@ -860,7 +860,7 @@ rphy_to_ioc(struct sas_rphy *rphy) | |||
860 | * | 860 | * |
861 | */ | 861 | */ |
862 | static int | 862 | static int |
863 | transport_get_linkerrors(struct sas_phy *phy) | 863 | _transport_get_linkerrors(struct sas_phy *phy) |
864 | { | 864 | { |
865 | struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); | 865 | struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); |
866 | struct _sas_phy *mpt2sas_phy; | 866 | struct _sas_phy *mpt2sas_phy; |
@@ -903,14 +903,14 @@ transport_get_linkerrors(struct sas_phy *phy) | |||
903 | } | 903 | } |
904 | 904 | ||
905 | /** | 905 | /** |
906 | * transport_get_enclosure_identifier - | 906 | * _transport_get_enclosure_identifier - |
907 | * @phy: The sas phy object | 907 | * @phy: The sas phy object |
908 | * | 908 | * |
909 | * Obtain the enclosure logical id for an expander. | 909 | * Obtain the enclosure logical id for an expander. |
910 | * Returns 0 for success, non-zero for failure. | 910 | * Returns 0 for success, non-zero for failure. |
911 | */ | 911 | */ |
912 | static int | 912 | static int |
913 | transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier) | 913 | _transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier) |
914 | { | 914 | { |
915 | struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); | 915 | struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); |
916 | struct _sas_node *sas_expander; | 916 | struct _sas_node *sas_expander; |
@@ -929,13 +929,13 @@ transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier) | |||
929 | } | 929 | } |
930 | 930 | ||
931 | /** | 931 | /** |
932 | * transport_get_bay_identifier - | 932 | * _transport_get_bay_identifier - |
933 | * @phy: The sas phy object | 933 | * @phy: The sas phy object |
934 | * | 934 | * |
935 | * Returns the slot id for a device that resides inside an enclosure. | 935 | * Returns the slot id for a device that resides inside an enclosure. |
936 | */ | 936 | */ |
937 | static int | 937 | static int |
938 | transport_get_bay_identifier(struct sas_rphy *rphy) | 938 | _transport_get_bay_identifier(struct sas_rphy *rphy) |
939 | { | 939 | { |
940 | struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); | 940 | struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); |
941 | struct _sas_device *sas_device; | 941 | struct _sas_device *sas_device; |
@@ -953,7 +953,7 @@ transport_get_bay_identifier(struct sas_rphy *rphy) | |||
953 | } | 953 | } |
954 | 954 | ||
955 | /** | 955 | /** |
956 | * transport_phy_reset - | 956 | * _transport_phy_reset - |
957 | * @phy: The sas phy object | 957 | * @phy: The sas phy object |
958 | * @hard_reset: | 958 | * @hard_reset: |
959 | * | 959 | * |
@@ -961,7 +961,7 @@ transport_get_bay_identifier(struct sas_rphy *rphy) | |||
961 | * Returns 0 for success, non-zero for failure. | 961 | * Returns 0 for success, non-zero for failure. |
962 | */ | 962 | */ |
963 | static int | 963 | static int |
964 | transport_phy_reset(struct sas_phy *phy, int hard_reset) | 964 | _transport_phy_reset(struct sas_phy *phy, int hard_reset) |
965 | { | 965 | { |
966 | struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); | 966 | struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); |
967 | struct _sas_phy *mpt2sas_phy; | 967 | struct _sas_phy *mpt2sas_phy; |
@@ -1002,7 +1002,7 @@ transport_phy_reset(struct sas_phy *phy, int hard_reset) | |||
1002 | } | 1002 | } |
1003 | 1003 | ||
1004 | /** | 1004 | /** |
1005 | * transport_smp_handler - transport portal for smp passthru | 1005 | * _transport_smp_handler - transport portal for smp passthru |
1006 | * @shost: shost object | 1006 | * @shost: shost object |
1007 | * @rphy: sas transport rphy object | 1007 | * @rphy: sas transport rphy object |
1008 | * @req: | 1008 | * @req: |
@@ -1012,7 +1012,7 @@ transport_phy_reset(struct sas_phy *phy, int hard_reset) | |||
1012 | * smp_rep_general /sys/class/bsg/expander-5:0 | 1012 | * smp_rep_general /sys/class/bsg/expander-5:0 |
1013 | */ | 1013 | */ |
1014 | static int | 1014 | static int |
1015 | transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | 1015 | _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, |
1016 | struct request *req) | 1016 | struct request *req) |
1017 | { | 1017 | { |
1018 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); | 1018 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); |
@@ -1041,7 +1041,7 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1041 | if (req->bio->bi_vcnt > 1 || rsp->bio->bi_vcnt > 1) { | 1041 | if (req->bio->bi_vcnt > 1 || rsp->bio->bi_vcnt > 1) { |
1042 | printk(MPT2SAS_ERR_FMT "%s: multiple segments req %u %u, " | 1042 | printk(MPT2SAS_ERR_FMT "%s: multiple segments req %u %u, " |
1043 | "rsp %u %u\n", ioc->name, __func__, req->bio->bi_vcnt, | 1043 | "rsp %u %u\n", ioc->name, __func__, req->bio->bi_vcnt, |
1044 | req->data_len, rsp->bio->bi_vcnt, rsp->data_len); | 1044 | blk_rq_bytes(req), rsp->bio->bi_vcnt, blk_rq_bytes(rsp)); |
1045 | return -EINVAL; | 1045 | return -EINVAL; |
1046 | } | 1046 | } |
1047 | 1047 | ||
@@ -1104,7 +1104,7 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1104 | *((u64 *)&mpi_request->SASAddress) = (rphy) ? | 1104 | *((u64 *)&mpi_request->SASAddress) = (rphy) ? |
1105 | cpu_to_le64(rphy->identify.sas_address) : | 1105 | cpu_to_le64(rphy->identify.sas_address) : |
1106 | cpu_to_le64(ioc->sas_hba.sas_address); | 1106 | cpu_to_le64(ioc->sas_hba.sas_address); |
1107 | mpi_request->RequestDataLength = cpu_to_le16(req->data_len - 4); | 1107 | mpi_request->RequestDataLength = cpu_to_le16(blk_rq_bytes(req) - 4); |
1108 | psge = &mpi_request->SGL; | 1108 | psge = &mpi_request->SGL; |
1109 | 1109 | ||
1110 | /* WRITE sgel first */ | 1110 | /* WRITE sgel first */ |
@@ -1112,13 +1112,13 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1112 | MPI2_SGE_FLAGS_END_OF_BUFFER | MPI2_SGE_FLAGS_HOST_TO_IOC); | 1112 | MPI2_SGE_FLAGS_END_OF_BUFFER | MPI2_SGE_FLAGS_HOST_TO_IOC); |
1113 | sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; | 1113 | sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; |
1114 | dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), | 1114 | dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), |
1115 | req->data_len, PCI_DMA_BIDIRECTIONAL); | 1115 | blk_rq_bytes(req), PCI_DMA_BIDIRECTIONAL); |
1116 | if (!dma_addr_out) { | 1116 | if (!dma_addr_out) { |
1117 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); | 1117 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); |
1118 | goto unmap; | 1118 | goto unmap; |
1119 | } | 1119 | } |
1120 | 1120 | ||
1121 | ioc->base_add_sg_single(psge, sgl_flags | (req->data_len - 4), | 1121 | ioc->base_add_sg_single(psge, sgl_flags | (blk_rq_bytes(req) - 4), |
1122 | dma_addr_out); | 1122 | dma_addr_out); |
1123 | 1123 | ||
1124 | /* incr sgel */ | 1124 | /* incr sgel */ |
@@ -1129,14 +1129,14 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1129 | MPI2_SGE_FLAGS_LAST_ELEMENT | MPI2_SGE_FLAGS_END_OF_BUFFER | | 1129 | MPI2_SGE_FLAGS_LAST_ELEMENT | MPI2_SGE_FLAGS_END_OF_BUFFER | |
1130 | MPI2_SGE_FLAGS_END_OF_LIST); | 1130 | MPI2_SGE_FLAGS_END_OF_LIST); |
1131 | sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; | 1131 | sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; |
1132 | dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), | 1132 | dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), |
1133 | rsp->data_len, PCI_DMA_BIDIRECTIONAL); | 1133 | blk_rq_bytes(rsp), PCI_DMA_BIDIRECTIONAL); |
1134 | if (!dma_addr_in) { | 1134 | if (!dma_addr_in) { |
1135 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); | 1135 | mpt2sas_base_free_smid(ioc, le16_to_cpu(smid)); |
1136 | goto unmap; | 1136 | goto unmap; |
1137 | } | 1137 | } |
1138 | 1138 | ||
1139 | ioc->base_add_sg_single(psge, sgl_flags | (rsp->data_len + 4), | 1139 | ioc->base_add_sg_single(psge, sgl_flags | (blk_rq_bytes(rsp) + 4), |
1140 | dma_addr_in); | 1140 | dma_addr_in); |
1141 | 1141 | ||
1142 | dtransportprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s - " | 1142 | dtransportprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s - " |
@@ -1170,9 +1170,8 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1170 | 1170 | ||
1171 | memcpy(req->sense, mpi_reply, sizeof(*mpi_reply)); | 1171 | memcpy(req->sense, mpi_reply, sizeof(*mpi_reply)); |
1172 | req->sense_len = sizeof(*mpi_reply); | 1172 | req->sense_len = sizeof(*mpi_reply); |
1173 | req->data_len = 0; | 1173 | req->resid_len = 0; |
1174 | rsp->data_len -= mpi_reply->ResponseDataLength; | 1174 | rsp->resid_len -= mpi_reply->ResponseDataLength; |
1175 | |||
1176 | } else { | 1175 | } else { |
1177 | dtransportprintk(ioc, printk(MPT2SAS_DEBUG_FMT | 1176 | dtransportprintk(ioc, printk(MPT2SAS_DEBUG_FMT |
1178 | "%s - no reply\n", ioc->name, __func__)); | 1177 | "%s - no reply\n", ioc->name, __func__)); |
@@ -1188,10 +1187,10 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1188 | 1187 | ||
1189 | unmap: | 1188 | unmap: |
1190 | if (dma_addr_out) | 1189 | if (dma_addr_out) |
1191 | pci_unmap_single(ioc->pdev, dma_addr_out, req->data_len, | 1190 | pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), |
1192 | PCI_DMA_BIDIRECTIONAL); | 1191 | PCI_DMA_BIDIRECTIONAL); |
1193 | if (dma_addr_in) | 1192 | if (dma_addr_in) |
1194 | pci_unmap_single(ioc->pdev, dma_addr_in, rsp->data_len, | 1193 | pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp), |
1195 | PCI_DMA_BIDIRECTIONAL); | 1194 | PCI_DMA_BIDIRECTIONAL); |
1196 | 1195 | ||
1197 | out: | 1196 | out: |
@@ -1201,11 +1200,11 @@ transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1201 | } | 1200 | } |
1202 | 1201 | ||
1203 | struct sas_function_template mpt2sas_transport_functions = { | 1202 | struct sas_function_template mpt2sas_transport_functions = { |
1204 | .get_linkerrors = transport_get_linkerrors, | 1203 | .get_linkerrors = _transport_get_linkerrors, |
1205 | .get_enclosure_identifier = transport_get_enclosure_identifier, | 1204 | .get_enclosure_identifier = _transport_get_enclosure_identifier, |
1206 | .get_bay_identifier = transport_get_bay_identifier, | 1205 | .get_bay_identifier = _transport_get_bay_identifier, |
1207 | .phy_reset = transport_phy_reset, | 1206 | .phy_reset = _transport_phy_reset, |
1208 | .smp_handler = transport_smp_handler, | 1207 | .smp_handler = _transport_smp_handler, |
1209 | }; | 1208 | }; |
1210 | 1209 | ||
1211 | struct scsi_transport_template *mpt2sas_transport_template; | 1210 | struct scsi_transport_template *mpt2sas_transport_template; |