diff options
Diffstat (limited to 'drivers/message/fusion/mptsas.c')
-rw-r--r-- | drivers/message/fusion/mptsas.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c index a9019f081b97..b162f7a1c563 100644 --- a/drivers/message/fusion/mptsas.c +++ b/drivers/message/fusion/mptsas.c | |||
@@ -1319,15 +1319,15 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1319 | /* request */ | 1319 | /* request */ |
1320 | flagsLength = (MPI_SGE_FLAGS_SIMPLE_ELEMENT | | 1320 | flagsLength = (MPI_SGE_FLAGS_SIMPLE_ELEMENT | |
1321 | MPI_SGE_FLAGS_END_OF_BUFFER | | 1321 | MPI_SGE_FLAGS_END_OF_BUFFER | |
1322 | MPI_SGE_FLAGS_DIRECTION | | 1322 | MPI_SGE_FLAGS_DIRECTION) |
1323 | mpt_addr_size()) << MPI_SGE_FLAGS_SHIFT; | 1323 | << MPI_SGE_FLAGS_SHIFT; |
1324 | flagsLength |= (req->data_len - 4); | 1324 | flagsLength |= (req->data_len - 4); |
1325 | 1325 | ||
1326 | dma_addr_out = pci_map_single(ioc->pcidev, bio_data(req->bio), | 1326 | dma_addr_out = pci_map_single(ioc->pcidev, bio_data(req->bio), |
1327 | req->data_len, PCI_DMA_BIDIRECTIONAL); | 1327 | req->data_len, PCI_DMA_BIDIRECTIONAL); |
1328 | if (!dma_addr_out) | 1328 | if (!dma_addr_out) |
1329 | goto put_mf; | 1329 | goto put_mf; |
1330 | mpt_add_sge(psge, flagsLength, dma_addr_out); | 1330 | ioc->add_sge(psge, flagsLength, dma_addr_out); |
1331 | psge += (sizeof(u32) + sizeof(dma_addr_t)); | 1331 | psge += (sizeof(u32) + sizeof(dma_addr_t)); |
1332 | 1332 | ||
1333 | /* response */ | 1333 | /* response */ |
@@ -1337,7 +1337,7 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1337 | rsp->data_len, PCI_DMA_BIDIRECTIONAL); | 1337 | rsp->data_len, PCI_DMA_BIDIRECTIONAL); |
1338 | if (!dma_addr_in) | 1338 | if (!dma_addr_in) |
1339 | goto unmap; | 1339 | goto unmap; |
1340 | mpt_add_sge(psge, flagsLength, dma_addr_in); | 1340 | ioc->add_sge(psge, flagsLength, dma_addr_in); |
1341 | 1341 | ||
1342 | mpt_put_msg_frame(mptsasMgmtCtx, ioc, mf); | 1342 | mpt_put_msg_frame(mptsasMgmtCtx, ioc, mf); |
1343 | 1343 | ||
@@ -3211,17 +3211,15 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
3211 | * A slightly different algorithm is required for | 3211 | * A slightly different algorithm is required for |
3212 | * 64bit SGEs. | 3212 | * 64bit SGEs. |
3213 | */ | 3213 | */ |
3214 | scale = ioc->req_sz/(sizeof(dma_addr_t) + sizeof(u32)); | 3214 | scale = ioc->req_sz/ioc->SGE_size; |
3215 | if (sizeof(dma_addr_t) == sizeof(u64)) { | 3215 | if (ioc->sg_addr_size == sizeof(u64)) { |
3216 | numSGE = (scale - 1) * | 3216 | numSGE = (scale - 1) * |
3217 | (ioc->facts.MaxChainDepth-1) + scale + | 3217 | (ioc->facts.MaxChainDepth-1) + scale + |
3218 | (ioc->req_sz - 60) / (sizeof(dma_addr_t) + | 3218 | (ioc->req_sz - 60) / ioc->SGE_size; |
3219 | sizeof(u32)); | ||
3220 | } else { | 3219 | } else { |
3221 | numSGE = 1 + (scale - 1) * | 3220 | numSGE = 1 + (scale - 1) * |
3222 | (ioc->facts.MaxChainDepth-1) + scale + | 3221 | (ioc->facts.MaxChainDepth-1) + scale + |
3223 | (ioc->req_sz - 64) / (sizeof(dma_addr_t) + | 3222 | (ioc->req_sz - 64) / ioc->SGE_size; |
3224 | sizeof(u32)); | ||
3225 | } | 3223 | } |
3226 | 3224 | ||
3227 | if (numSGE < sh->sg_tablesize) { | 3225 | if (numSGE < sh->sg_tablesize) { |