|
@@ -1654,6 +1654,10 @@ static int bnx2fc_map_sg(struct bnx2fc_cmd *io_req)
|
|
|
u64 addr;
|
|
|
int i;
|
|
|
|
|
|
+ /*
|
|
|
+ * Use dma_map_sg directly to ensure we're using the correct
|
|
|
+ * dev struct off of pcidev.
|
|
|
+ */
|
|
|
sg_count = dma_map_sg(&hba->pcidev->dev, scsi_sglist(sc),
|
|
|
scsi_sg_count(sc), sc->sc_data_direction);
|
|
|
scsi_for_each_sg(sc, sg, sg_count, i) {
|
|
@@ -1703,9 +1707,16 @@ static int bnx2fc_build_bd_list_from_sg(struct bnx2fc_cmd *io_req)
|
|
|
static void bnx2fc_unmap_sg_list(struct bnx2fc_cmd *io_req)
|
|
|
{
|
|
|
struct scsi_cmnd *sc = io_req->sc_cmd;
|
|
|
+ struct bnx2fc_interface *interface = io_req->port->priv;
|
|
|
+ struct bnx2fc_hba *hba = interface->hba;
|
|
|
|
|
|
- if (io_req->bd_tbl->bd_valid && sc) {
|
|
|
- scsi_dma_unmap(sc);
|
|
|
+ /*
|
|
|
+ * Use dma_unmap_sg directly to ensure we're using the correct
|
|
|
+ * dev struct off of pcidev.
|
|
|
+ */
|
|
|
+ if (io_req->bd_tbl->bd_valid && sc && scsi_sg_count(sc)) {
|
|
|
+ dma_unmap_sg(&hba->pcidev->dev, scsi_sglist(sc),
|
|
|
+ scsi_sg_count(sc), sc->sc_data_direction);
|
|
|
io_req->bd_tbl->bd_valid = 0;
|
|
|
}
|
|
|
}
|