patch-2.4.3 linux/drivers/scsi/qlogicfc.c
Next file: linux/drivers/scsi/qlogicisp.c
Previous file: linux/drivers/scsi/qla1280.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Tue Mar 20 15:05:46 2001
- Orig file:
v2.4.2/linux/drivers/scsi/qlogicfc.c
- Orig date:
Mon Sep 18 13:36:25 2000
diff -u --recursive --new-file v2.4.2/linux/drivers/scsi/qlogicfc.c linux/drivers/scsi/qlogicfc.c
@@ -732,7 +732,7 @@
int wait_time;
struct Scsi_Host *host = NULL;
struct isp2x00_hostdata *hostdata;
- struct pci_dev *pdev = NULL;
+ struct pci_dev *pdev;
unsigned short device_ids[2];
dma64_addr_t busaddr;
int i;
@@ -751,6 +751,7 @@
}
for (i=0; i<2; i++){
+ pdev = NULL;
while ((pdev = pci_find_device(PCI_VENDOR_ID_QLOGIC, device_ids[i], pdev))) {
if (pci_enable_device(pdev))
continue;
@@ -1428,7 +1429,22 @@
for (i = 0; i < QLOGICFC_REQ_QUEUE_LEN; i++){
if (hostdata->handle_ptrs[i] && (hostdata->port_db[hostdata->handle_ptrs[i]->target].loop_id > QLOGICFC_MAX_LOOP_ID || hostdata->adapter_state & AS_REDO_LOOP_PORTDB)){
if (hostdata->port_db[hostdata->handle_ptrs[i]->target].loop_id != hostdata->port_db[0].loop_id){
+ Scsi_Cmnd *Cmnd = hostdata->handle_ptrs[i];
+
+ if (Cmnd->use_sg)
+ pci64_unmap_sg(hostdata->pci_dev,
+ (struct scatterlist *)Cmnd->buffer,
+ Cmnd->use_sg,
+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction));
+ else if (Cmnd->request_bufflen &&
+ Cmnd->sc_data_direction != PCI_DMA_NONE)
+ pci64_unmap_single(hostdata->pci_dev,
+ *(dma64_addr_t *)&Cmnd->SCp,
+ Cmnd->request_bufflen,
+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction));
+
hostdata->handle_ptrs[i]->result = DID_SOFT_ERROR << 16;
+
if (hostdata->handle_ptrs[i]->scsi_done){
(*hostdata->handle_ptrs[i]->scsi_done) (hostdata->handle_ptrs[i]);
}
@@ -1521,6 +1537,17 @@
hostdata->handle_serials[handle] = 0;
hostdata->queued--;
if (Cmnd != NULL) {
+ if (Cmnd->use_sg)
+ pci64_unmap_sg(hostdata->pci_dev,
+ (struct scatterlist *)Cmnd->buffer,
+ Cmnd->use_sg,
+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction));
+ else if (Cmnd->request_bufflen &&
+ Cmnd->sc_data_direction != PCI_DMA_NONE)
+ pci64_unmap_single(hostdata->pci_dev,
+ *(dma64_addr_t *)&Cmnd->SCp,
+ Cmnd->request_bufflen,
+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction));
Cmnd->result = 0x0;
(*Cmnd->scsi_done) (Cmnd);
} else
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)