scsi_dma_unmap(scsi_cmd);
        pmcraid_return_cmd(cmd);
-       scsi_cmd->scsi_done(scsi_cmd);
+       scsi_done(scsi_cmd);
 }
 
 /**
                                     le32_to_cpu(resp) >> 2,
                                     cmd->ioa_cb->ioarcb.cdb[0],
                                     scsi_cmd->result);
-                       scsi_cmd->scsi_done(scsi_cmd);
+                       scsi_done(scsi_cmd);
                } else if (cmd->cmd_done == pmcraid_internal_done ||
                           cmd->cmd_done == pmcraid_erp_done) {
                        cmd->cmd_done(cmd);
 
        if (rc == 0) {
                scsi_dma_unmap(scsi_cmd);
-               scsi_cmd->scsi_done(scsi_cmd);
+               scsi_done(scsi_cmd);
        }
 
        return rc;
        pinstance =
                (struct pmcraid_instance *)scsi_cmd->device->host->hostdata;
        fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
-       scsi_cmd->scsi_done = done;
        res = scsi_cmd->device->hostdata;
        scsi_cmd->result = (DID_OK << 16);
 
        if (pinstance->ioa_state == IOA_STATE_DEAD) {
                pmcraid_info("IOA is dead, but queuecommand is scheduled\n");
                scsi_cmd->result = (DID_NO_CONNECT << 16);
-               scsi_cmd->scsi_done(scsi_cmd);
+               scsi_done(scsi_cmd);
                return 0;
        }
 
         */
        if (scsi_cmd->cmnd[0] == SYNCHRONIZE_CACHE) {
                pmcraid_info("SYNC_CACHE(0x35), completing in driver itself\n");
-               scsi_cmd->scsi_done(scsi_cmd);
+               scsi_done(scsi_cmd);
                return 0;
        }