You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge remote-tracking branch 'scsi-queue/drivers-for-3.16' into for-linus
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2003-2013 QLogic Corporation
|
||||
Copyright (c) 2003-2014 QLogic Corporation
|
||||
QLogic Linux FC-FCoE Driver
|
||||
|
||||
This program includes a device driver for Linux 3.x.
|
||||
|
||||
+33
-5
@@ -4366,7 +4366,7 @@ S: Supported
|
||||
F: drivers/crypto/nx/
|
||||
|
||||
IBM Power 842 compression accelerator
|
||||
M: Robert Jennings <rcj@linux.vnet.ibm.com>
|
||||
M: Nathan Fontenot <nfont@linux.vnet.ibm.com>
|
||||
S: Supported
|
||||
F: drivers/crypto/nx/nx-842.c
|
||||
F: include/linux/nx842.h
|
||||
@@ -4382,12 +4382,18 @@ L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/ethernet/ibm/ibmveth.*
|
||||
|
||||
IBM Power Virtual SCSI/FC Device Drivers
|
||||
M: Robert Jennings <rcj@linux.vnet.ibm.com>
|
||||
IBM Power Virtual SCSI Device Drivers
|
||||
M: Nathan Fontenot <nfont@linux.vnet.ibm.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/scsi/ibmvscsi/
|
||||
X: drivers/scsi/ibmvscsi/ibmvstgt.c
|
||||
F: drivers/scsi/ibmvscsi/ibmvscsi*
|
||||
F: drivers/scsi/ibmvscsi/viosrp.h
|
||||
|
||||
IBM Power Virtual FC Device Drivers
|
||||
M: Brian King <brking@linux.vnet.ibm.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/scsi/ibmvscsi/ibmvfc*
|
||||
|
||||
IBM ServeRAID RAID DRIVER
|
||||
P: Jack Hammer
|
||||
@@ -6007,6 +6013,28 @@ M: Petr Vandrovec <petr@vandrovec.name>
|
||||
S: Odd Fixes
|
||||
F: fs/ncpfs/
|
||||
|
||||
NCR 5380 SCSI DRIVERS
|
||||
M: Finn Thain <fthain@telegraphics.com.au>
|
||||
M: Michael Schmitz <schmitzmic@gmail.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/scsi/g_NCR5380.txt
|
||||
F: drivers/scsi/NCR5380.*
|
||||
F: drivers/scsi/arm/cumana_1.c
|
||||
F: drivers/scsi/arm/oak.c
|
||||
F: drivers/scsi/atari_NCR5380.c
|
||||
F: drivers/scsi/atari_scsi.*
|
||||
F: drivers/scsi/dmx3191d.c
|
||||
F: drivers/scsi/dtc.*
|
||||
F: drivers/scsi/g_NCR5380.*
|
||||
F: drivers/scsi/g_NCR5380_mmio.c
|
||||
F: drivers/scsi/mac_scsi.*
|
||||
F: drivers/scsi/pas16.*
|
||||
F: drivers/scsi/sun3_NCR5380.c
|
||||
F: drivers/scsi/sun3_scsi.*
|
||||
F: drivers/scsi/sun3_scsi_vme.c
|
||||
F: drivers/scsi/t128.*
|
||||
|
||||
NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
|
||||
M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
|
||||
@@ -1037,7 +1037,7 @@ mpt_free_msg_frame(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
|
||||
goto out;
|
||||
/* signature to know if this mf is freed */
|
||||
mf->u.frame.linkage.arg1 = cpu_to_le32(0xdeadbeaf);
|
||||
list_add_tail(&mf->u.frame.linkage.list, &ioc->FreeQ);
|
||||
list_add(&mf->u.frame.linkage.list, &ioc->FreeQ);
|
||||
#ifdef MFCNT
|
||||
ioc->mfcnt--;
|
||||
#endif
|
||||
|
||||
@@ -2432,9 +2432,9 @@ mptctl_hp_hostinfo(unsigned long arg, unsigned int data_size)
|
||||
int rc, cim_rev;
|
||||
ToolboxIstwiReadWriteRequest_t *IstwiRWRequest;
|
||||
MPT_FRAME_HDR *mf = NULL;
|
||||
MPIHeader_t *mpi_hdr;
|
||||
unsigned long timeleft;
|
||||
int retval;
|
||||
u32 msgcontext;
|
||||
|
||||
/* Reset long to int. Should affect IA64 and SPARC only
|
||||
*/
|
||||
@@ -2581,11 +2581,11 @@ mptctl_hp_hostinfo(unsigned long arg, unsigned int data_size)
|
||||
}
|
||||
|
||||
IstwiRWRequest = (ToolboxIstwiReadWriteRequest_t *)mf;
|
||||
mpi_hdr = (MPIHeader_t *) mf;
|
||||
msgcontext = IstwiRWRequest->MsgContext;
|
||||
memset(IstwiRWRequest,0,sizeof(ToolboxIstwiReadWriteRequest_t));
|
||||
IstwiRWRequest->MsgContext = msgcontext;
|
||||
IstwiRWRequest->Function = MPI_FUNCTION_TOOLBOX;
|
||||
IstwiRWRequest->Tool = MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL;
|
||||
IstwiRWRequest->MsgContext = mpi_hdr->MsgContext;
|
||||
IstwiRWRequest->Flags = MPI_TB_ISTWI_FLAGS_READ;
|
||||
IstwiRWRequest->NumAddressBytes = 0x01;
|
||||
IstwiRWRequest->DataLength = cpu_to_le16(0x04);
|
||||
|
||||
@@ -649,7 +649,7 @@ mptfc_slave_alloc(struct scsi_device *sdev)
|
||||
}
|
||||
|
||||
static int
|
||||
mptfc_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
mptfc_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
struct mptfc_rport_info *ri;
|
||||
struct fc_rport *rport = starget_to_rport(scsi_target(SCpnt->device));
|
||||
@@ -658,14 +658,14 @@ mptfc_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
|
||||
if (!vdevice || !vdevice->vtarget) {
|
||||
SCpnt->result = DID_NO_CONNECT << 16;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
err = fc_remote_port_chkready(rport);
|
||||
if (unlikely(err)) {
|
||||
SCpnt->result = err;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -673,15 +673,13 @@ mptfc_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
ri = *((struct mptfc_rport_info **)rport->dd_data);
|
||||
if (unlikely(!ri)) {
|
||||
SCpnt->result = DID_IMM_RETRY << 16;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mptscsih_qcmd(SCpnt,done);
|
||||
return mptscsih_qcmd(SCpnt);
|
||||
}
|
||||
|
||||
static DEF_SCSI_QCMD(mptfc_qcmd)
|
||||
|
||||
/*
|
||||
* mptfc_display_port_link_speed - displaying link speed
|
||||
* @ioc: Pointer to MPT_ADAPTER structure
|
||||
|
||||
@@ -1896,7 +1896,7 @@ mptsas_slave_alloc(struct scsi_device *sdev)
|
||||
}
|
||||
|
||||
static int
|
||||
mptsas_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
mptsas_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_ADAPTER *ioc;
|
||||
@@ -1904,11 +1904,11 @@ mptsas_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
|
||||
if (!vdevice || !vdevice->vtarget || vdevice->vtarget->deleted) {
|
||||
SCpnt->result = DID_NO_CONNECT << 16;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hd = shost_priv(SCpnt->device->host);
|
||||
hd = shost_priv(shost);
|
||||
ioc = hd->ioc;
|
||||
|
||||
if (ioc->sas_discovery_quiesce_io)
|
||||
@@ -1917,11 +1917,9 @@ mptsas_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
if (ioc->debug_level & MPT_DEBUG_SCSI)
|
||||
scsi_print_command(SCpnt);
|
||||
|
||||
return mptscsih_qcmd(SCpnt,done);
|
||||
return mptscsih_qcmd(SCpnt);
|
||||
}
|
||||
|
||||
static DEF_SCSI_QCMD(mptsas_qcmd)
|
||||
|
||||
/**
|
||||
* mptsas_mptsas_eh_timed_out - resets the scsi_cmnd timeout
|
||||
* if the device under question is currently in the
|
||||
|
||||
@@ -1304,7 +1304,6 @@ int mptscsih_show_info(struct seq_file *m, struct Scsi_Host *host)
|
||||
/**
|
||||
* mptscsih_qcmd - Primary Fusion MPT SCSI initiator IO start routine.
|
||||
* @SCpnt: Pointer to scsi_cmnd structure
|
||||
* @done: Pointer SCSI mid-layer IO completion function
|
||||
*
|
||||
* (linux scsi_host_template.queuecommand routine)
|
||||
* This is the primary SCSI IO start routine. Create a MPI SCSIIORequest
|
||||
@@ -1313,7 +1312,7 @@ int mptscsih_show_info(struct seq_file *m, struct Scsi_Host *host)
|
||||
* Returns 0. (rtn value discarded by linux scsi mid-layer)
|
||||
*/
|
||||
int
|
||||
mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
mptscsih_qcmd(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_FRAME_HDR *mf;
|
||||
@@ -1329,10 +1328,9 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
|
||||
hd = shost_priv(SCpnt->device->host);
|
||||
ioc = hd->ioc;
|
||||
SCpnt->scsi_done = done;
|
||||
|
||||
dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "qcmd: SCpnt=%p, done()=%p\n",
|
||||
ioc->name, SCpnt, done));
|
||||
dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "qcmd: SCpnt=%p\n",
|
||||
ioc->name, SCpnt));
|
||||
|
||||
if (ioc->taskmgmt_quiesce_io)
|
||||
return SCSI_MLQUEUE_HOST_BUSY;
|
||||
|
||||
@@ -113,7 +113,7 @@ extern int mptscsih_resume(struct pci_dev *pdev);
|
||||
#endif
|
||||
extern int mptscsih_show_info(struct seq_file *, struct Scsi_Host *);
|
||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
||||
extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
|
||||
u8 id, int lun, int ctx2abort, ulong timeout);
|
||||
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
||||
|
||||
@@ -780,33 +780,31 @@ static int mptspi_slave_configure(struct scsi_device *sdev)
|
||||
}
|
||||
|
||||
static int
|
||||
mptspi_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
mptspi_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
struct _MPT_SCSI_HOST *hd = shost_priv(SCpnt->device->host);
|
||||
struct _MPT_SCSI_HOST *hd = shost_priv(shost);
|
||||
VirtDevice *vdevice = SCpnt->device->hostdata;
|
||||
MPT_ADAPTER *ioc = hd->ioc;
|
||||
|
||||
if (!vdevice || !vdevice->vtarget) {
|
||||
SCpnt->result = DID_NO_CONNECT << 16;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (SCpnt->device->channel == 1 &&
|
||||
mptscsih_is_phys_disk(ioc, 0, SCpnt->device->id) == 0) {
|
||||
SCpnt->result = DID_NO_CONNECT << 16;
|
||||
done(SCpnt);
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (spi_dv_pending(scsi_target(SCpnt->device)))
|
||||
ddvprintk(ioc, scsi_print_command(SCpnt));
|
||||
|
||||
return mptscsih_qcmd(SCpnt,done);
|
||||
return mptscsih_qcmd(SCpnt);
|
||||
}
|
||||
|
||||
static DEF_SCSI_QCMD(mptspi_qcmd)
|
||||
|
||||
static void mptspi_slave_destroy(struct scsi_device *sdev)
|
||||
{
|
||||
struct scsi_target *starget = scsi_target(sdev);
|
||||
|
||||
+64
-73
@@ -27,8 +27,6 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Log: NCR5380.c,v $
|
||||
|
||||
* Revision 1.10 1998/9/2 Alan Cox
|
||||
* (alan@lxorguk.ukuu.org.uk)
|
||||
* Fixed up the timer lockups reported so far. Things still suck. Looking
|
||||
@@ -89,13 +87,6 @@
|
||||
#include <scsi/scsi_dbg.h>
|
||||
#include <scsi/scsi_transport_spi.h>
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define NDEBUG 0
|
||||
#endif
|
||||
#ifndef NDEBUG_ABORT
|
||||
#define NDEBUG_ABORT 0
|
||||
#endif
|
||||
|
||||
#if (NDEBUG & NDEBUG_LISTS)
|
||||
#define LIST(x,y) {printk("LINE:%d Adding %p to %p\n", __LINE__, (void*)(x), (void*)(y)); if ((x)==(y)) udelay(5); }
|
||||
#define REMOVE(w,x,y,z) {printk("LINE:%d Removing: %p->%p %p->%p \n", __LINE__, (void*)(w), (void*)(x), (void*)(y), (void*)(z)); if ((x)==(y)) udelay(5); }
|
||||
@@ -1005,7 +996,7 @@ static int NCR5380_queue_command_lck(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)
|
||||
LIST(cmd, tmp);
|
||||
tmp->host_scribble = (unsigned char *) cmd;
|
||||
}
|
||||
dprintk(NDEBUG_QUEUES, ("scsi%d : command added to %s of queue\n", instance->host_no, (cmd->cmnd[0] == REQUEST_SENSE) ? "head" : "tail"));
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command added to %s of queue\n", instance->host_no, (cmd->cmnd[0] == REQUEST_SENSE) ? "head" : "tail");
|
||||
|
||||
/* Run the coroutine if it isn't already running. */
|
||||
/* Kick off command processing */
|
||||
@@ -1040,7 +1031,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
/* Lock held here */
|
||||
done = 1;
|
||||
if (!hostdata->connected && !hostdata->selecting) {
|
||||
dprintk(NDEBUG_MAIN, ("scsi%d : not connected\n", instance->host_no));
|
||||
dprintk(NDEBUG_MAIN, "scsi%d : not connected\n", instance->host_no);
|
||||
/*
|
||||
* Search through the issue_queue for a command destined
|
||||
* for a target that's not busy.
|
||||
@@ -1048,7 +1039,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||
{
|
||||
if (prev != tmp)
|
||||
dprintk(NDEBUG_LISTS, ("MAIN tmp=%p target=%d busy=%d lun=%d\n", tmp, tmp->target, hostdata->busy[tmp->target], tmp->lun));
|
||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%d\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||
/* When we find one, remove it from the issue queue. */
|
||||
if (!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))) {
|
||||
if (prev) {
|
||||
@@ -1066,7 +1057,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
* On failure, we must add the command back to the
|
||||
* issue queue so we can keep trying.
|
||||
*/
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, ("scsi%d : main() : command for target %d lun %d removed from issue_queue\n", instance->host_no, tmp->target, tmp->lun));
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main() : command for target %d lun %d removed from issue_queue\n", instance->host_no, tmp->device->id, tmp->device->lun);
|
||||
|
||||
/*
|
||||
* A successful selection is defined as one that
|
||||
@@ -1095,7 +1086,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
tmp->host_scribble = (unsigned char *) hostdata->issue_queue;
|
||||
hostdata->issue_queue = tmp;
|
||||
done = 0;
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, ("scsi%d : main(): select() failed, returned to issue_queue\n", instance->host_no));
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main(): select() failed, returned to issue_queue\n", instance->host_no);
|
||||
}
|
||||
/* lock held here still */
|
||||
} /* if target/lun is not busy */
|
||||
@@ -1125,9 +1116,9 @@ static void NCR5380_main(struct work_struct *work)
|
||||
#endif
|
||||
&& (!hostdata->time_expires || time_before_eq(hostdata->time_expires, jiffies))
|
||||
) {
|
||||
dprintk(NDEBUG_MAIN, ("scsi%d : main() : performing information transfer\n", instance->host_no));
|
||||
dprintk(NDEBUG_MAIN, "scsi%d : main() : performing information transfer\n", instance->host_no);
|
||||
NCR5380_information_transfer(instance);
|
||||
dprintk(NDEBUG_MAIN, ("scsi%d : main() : done set false\n", instance->host_no));
|
||||
dprintk(NDEBUG_MAIN, "scsi%d : main() : done set false\n", instance->host_no);
|
||||
done = 0;
|
||||
} else
|
||||
break;
|
||||
@@ -1159,8 +1150,8 @@ static irqreturn_t NCR5380_intr(int dummy, void *dev_id)
|
||||
unsigned char basr;
|
||||
unsigned long flags;
|
||||
|
||||
dprintk(NDEBUG_INTR, ("scsi : NCR5380 irq %d triggered\n",
|
||||
instance->irq));
|
||||
dprintk(NDEBUG_INTR, "scsi : NCR5380 irq %d triggered\n",
|
||||
instance->irq);
|
||||
|
||||
do {
|
||||
done = 1;
|
||||
@@ -1173,14 +1164,14 @@ static irqreturn_t NCR5380_intr(int dummy, void *dev_id)
|
||||
NCR5380_dprint(NDEBUG_INTR, instance);
|
||||
if ((NCR5380_read(STATUS_REG) & (SR_SEL | SR_IO)) == (SR_SEL | SR_IO)) {
|
||||
done = 0;
|
||||
dprintk(NDEBUG_INTR, ("scsi%d : SEL interrupt\n", instance->host_no));
|
||||
dprintk(NDEBUG_INTR, "scsi%d : SEL interrupt\n", instance->host_no);
|
||||
NCR5380_reselect(instance);
|
||||
(void) NCR5380_read(RESET_PARITY_INTERRUPT_REG);
|
||||
} else if (basr & BASR_PARITY_ERROR) {
|
||||
dprintk(NDEBUG_INTR, ("scsi%d : PARITY interrupt\n", instance->host_no));
|
||||
dprintk(NDEBUG_INTR, "scsi%d : PARITY interrupt\n", instance->host_no);
|
||||
(void) NCR5380_read(RESET_PARITY_INTERRUPT_REG);
|
||||
} else if ((NCR5380_read(STATUS_REG) & SR_RST) == SR_RST) {
|
||||
dprintk(NDEBUG_INTR, ("scsi%d : RESET interrupt\n", instance->host_no));
|
||||
dprintk(NDEBUG_INTR, "scsi%d : RESET interrupt\n", instance->host_no);
|
||||
(void) NCR5380_read(RESET_PARITY_INTERRUPT_REG);
|
||||
} else {
|
||||
#if defined(REAL_DMA)
|
||||
@@ -1210,7 +1201,7 @@ static irqreturn_t NCR5380_intr(int dummy, void *dev_id)
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
}
|
||||
#else
|
||||
dprintk(NDEBUG_INTR, ("scsi : unknown interrupt, BASR 0x%X, MR 0x%X, SR 0x%x\n", basr, NCR5380_read(MODE_REG), NCR5380_read(STATUS_REG)));
|
||||
dprintk(NDEBUG_INTR, "scsi : unknown interrupt, BASR 0x%X, MR 0x%X, SR 0x%x\n", basr, NCR5380_read(MODE_REG), NCR5380_read(STATUS_REG));
|
||||
(void) NCR5380_read(RESET_PARITY_INTERRUPT_REG);
|
||||
#endif
|
||||
}
|
||||
@@ -1304,7 +1295,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
hostdata->restart_select = 0;
|
||||
|
||||
NCR5380_dprint(NDEBUG_ARBITRATION, instance);
|
||||
dprintk(NDEBUG_ARBITRATION, ("scsi%d : starting arbitration, id = %d\n", instance->host_no, instance->this_id));
|
||||
dprintk(NDEBUG_ARBITRATION, "scsi%d : starting arbitration, id = %d\n", instance->host_no, instance->this_id);
|
||||
|
||||
/*
|
||||
* Set the phase bits to 0, otherwise the NCR5380 won't drive the
|
||||
@@ -1333,7 +1324,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
dprintk(NDEBUG_ARBITRATION, ("scsi%d : arbitration complete\n", instance->host_no));
|
||||
dprintk(NDEBUG_ARBITRATION, "scsi%d : arbitration complete\n", instance->host_no);
|
||||
|
||||
/*
|
||||
* The arbitration delay is 2.2us, but this is a minimum and there is
|
||||
@@ -1347,7 +1338,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
/* Check for lost arbitration */
|
||||
if ((NCR5380_read(INITIATOR_COMMAND_REG) & ICR_ARBITRATION_LOST) || (NCR5380_read(CURRENT_SCSI_DATA_REG) & hostdata->id_higher_mask) || (NCR5380_read(INITIATOR_COMMAND_REG) & ICR_ARBITRATION_LOST)) {
|
||||
NCR5380_write(MODE_REG, MR_BASE);
|
||||
dprintk(NDEBUG_ARBITRATION, ("scsi%d : lost arbitration, deasserting MR_ARBITRATE\n", instance->host_no));
|
||||
dprintk(NDEBUG_ARBITRATION, "scsi%d : lost arbitration, deasserting MR_ARBITRATE\n", instance->host_no);
|
||||
goto failed;
|
||||
}
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE | ICR_ASSERT_SEL);
|
||||
@@ -1360,7 +1351,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
(NCR5380_read(INITIATOR_COMMAND_REG) & ICR_ARBITRATION_LOST)) {
|
||||
NCR5380_write(MODE_REG, MR_BASE);
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
dprintk(NDEBUG_ARBITRATION, ("scsi%d : lost arbitration, deasserting ICR_ASSERT_SEL\n", instance->host_no));
|
||||
dprintk(NDEBUG_ARBITRATION, "scsi%d : lost arbitration, deasserting ICR_ASSERT_SEL\n", instance->host_no);
|
||||
goto failed;
|
||||
}
|
||||
/*
|
||||
@@ -1370,7 +1361,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
|
||||
udelay(2);
|
||||
|
||||
dprintk(NDEBUG_ARBITRATION, ("scsi%d : won arbitration\n", instance->host_no));
|
||||
dprintk(NDEBUG_ARBITRATION, "scsi%d : won arbitration\n", instance->host_no);
|
||||
|
||||
/*
|
||||
* Now that we have won arbitration, start Selection process, asserting
|
||||
@@ -1422,7 +1413,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||
|
||||
udelay(1);
|
||||
|
||||
dprintk(NDEBUG_SELECTION, ("scsi%d : selecting target %d\n", instance->host_no, scmd_id(cmd)));
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : selecting target %d\n", instance->host_no, scmd_id(cmd));
|
||||
|
||||
/*
|
||||
* The SCSI specification calls for a 250 ms timeout for the actual
|
||||
@@ -1487,7 +1478,7 @@ part2:
|
||||
collect_stats(hostdata, cmd);
|
||||
cmd->scsi_done(cmd);
|
||||
NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
|
||||
dprintk(NDEBUG_SELECTION, ("scsi%d : target did not respond within 250ms\n", instance->host_no));
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : target did not respond within 250ms\n", instance->host_no);
|
||||
NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
|
||||
return 0;
|
||||
}
|
||||
@@ -1520,7 +1511,7 @@ part2:
|
||||
goto failed;
|
||||
}
|
||||
|
||||
dprintk(NDEBUG_SELECTION, ("scsi%d : target %d selected, going into MESSAGE OUT phase.\n", instance->host_no, cmd->device->id));
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : target %d selected, going into MESSAGE OUT phase.\n", instance->host_no, cmd->device->id);
|
||||
tmp[0] = IDENTIFY(((instance->irq == SCSI_IRQ_NONE) ? 0 : 1), cmd->device->lun);
|
||||
|
||||
len = 1;
|
||||
@@ -1530,7 +1521,7 @@ part2:
|
||||
data = tmp;
|
||||
phase = PHASE_MSGOUT;
|
||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||
dprintk(NDEBUG_SELECTION, ("scsi%d : nexus established.\n", instance->host_no));
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : nexus established.\n", instance->host_no);
|
||||
/* XXX need to handle errors here */
|
||||
hostdata->connected = cmd;
|
||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||
@@ -1583,9 +1574,9 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase
|
||||
NCR5380_setup(instance);
|
||||
|
||||
if (!(p & SR_IO))
|
||||
dprintk(NDEBUG_PIO, ("scsi%d : pio write %d bytes\n", instance->host_no, c));
|
||||
dprintk(NDEBUG_PIO, "scsi%d : pio write %d bytes\n", instance->host_no, c);
|
||||
else
|
||||
dprintk(NDEBUG_PIO, ("scsi%d : pio read %d bytes\n", instance->host_no, c));
|
||||
dprintk(NDEBUG_PIO, "scsi%d : pio read %d bytes\n", instance->host_no, c);
|
||||
|
||||
/*
|
||||
* The NCR5380 chip will only drive the SCSI bus when the
|
||||
@@ -1620,11 +1611,11 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase
|
||||
break;
|
||||
}
|
||||
|
||||
dprintk(NDEBUG_HANDSHAKE, ("scsi%d : REQ detected\n", instance->host_no));
|
||||
dprintk(NDEBUG_HANDSHAKE, "scsi%d : REQ detected\n", instance->host_no);
|
||||
|
||||
/* Check for phase mismatch */
|
||||
if ((tmp & PHASE_MASK) != p) {
|
||||
dprintk(NDEBUG_HANDSHAKE, ("scsi%d : phase mismatch\n", instance->host_no));
|
||||
dprintk(NDEBUG_HANDSHAKE, "scsi%d : phase mismatch\n", instance->host_no);
|
||||
NCR5380_dprint_phase(NDEBUG_HANDSHAKE, instance);
|
||||
break;
|
||||
}
|
||||
@@ -1660,7 +1651,7 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase
|
||||
|
||||
/* FIXME - if this fails bus reset ?? */
|
||||
NCR5380_poll_politely(instance, STATUS_REG, SR_REQ, 0, 5*HZ);
|
||||
dprintk(NDEBUG_HANDSHAKE, ("scsi%d : req false, handshake complete\n", instance->host_no));
|
||||
dprintk(NDEBUG_HANDSHAKE, "scsi%d : req false, handshake complete\n", instance->host_no);
|
||||
|
||||
/*
|
||||
* We have several special cases to consider during REQ/ACK handshaking :
|
||||
@@ -1681,7 +1672,7 @@ static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase
|
||||
}
|
||||
} while (--c);
|
||||
|
||||
dprintk(NDEBUG_PIO, ("scsi%d : residual %d\n", instance->host_no, c));
|
||||
dprintk(NDEBUG_PIO, "scsi%d : residual %d\n", instance->host_no, c);
|
||||
|
||||
*count = c;
|
||||
*data = d;
|
||||
@@ -1828,7 +1819,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
c -= 2;
|
||||
}
|
||||
#endif
|
||||
dprintk(NDEBUG_DMA, ("scsi%d : initializing DMA channel %d for %s, %d bytes %s %0x\n", instance->host_no, instance->dma_channel, (p & SR_IO) ? "reading" : "writing", c, (p & SR_IO) ? "to" : "from", (unsigned) d));
|
||||
dprintk(NDEBUG_DMA, "scsi%d : initializing DMA channel %d for %s, %d bytes %s %0x\n", instance->host_no, instance->dma_channel, (p & SR_IO) ? "reading" : "writing", c, (p & SR_IO) ? "to" : "from", (unsigned) d);
|
||||
hostdata->dma_len = (p & SR_IO) ? NCR5380_dma_read_setup(instance, d, c) : NCR5380_dma_write_setup(instance, d, c);
|
||||
#endif
|
||||
|
||||
@@ -1857,7 +1848,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
NCR5380_write(MODE_REG, MR_BASE | MR_DMA_MODE);
|
||||
#endif /* def REAL_DMA */
|
||||
|
||||
dprintk(NDEBUG_DMA, ("scsi%d : mode reg = 0x%X\n", instance->host_no, NCR5380_read(MODE_REG)));
|
||||
dprintk(NDEBUG_DMA, "scsi%d : mode reg = 0x%X\n", instance->host_no, NCR5380_read(MODE_REG));
|
||||
|
||||
/*
|
||||
* On the PAS16 at least I/O recovery delays are not needed here.
|
||||
@@ -1934,7 +1925,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
}
|
||||
}
|
||||
|
||||
dprintk(NDEBUG_DMA, ("scsi%d : polled DMA transfer complete, basr 0x%X, sr 0x%X\n", instance->host_no, tmp, NCR5380_read(STATUS_REG)));
|
||||
dprintk(NDEBUG_DMA, "scsi%d : polled DMA transfer complete, basr 0x%X, sr 0x%X\n", instance->host_no, tmp, NCR5380_read(STATUS_REG));
|
||||
|
||||
NCR5380_write(MODE_REG, MR_BASE);
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
@@ -1948,7 +1939,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
#ifdef READ_OVERRUNS
|
||||
if (*phase == p && (p & SR_IO) && residue == 0) {
|
||||
if (overrun) {
|
||||
dprintk(NDEBUG_DMA, ("Got an input overrun, using saved byte\n"));
|
||||
dprintk(NDEBUG_DMA, "Got an input overrun, using saved byte\n");
|
||||
**data = saved_data;
|
||||
*data += 1;
|
||||
*count -= 1;
|
||||
@@ -1957,13 +1948,13 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
printk("No overrun??\n");
|
||||
cnt = toPIO = 2;
|
||||
}
|
||||
dprintk(NDEBUG_DMA, ("Doing %d-byte PIO to 0x%X\n", cnt, *data));
|
||||
dprintk(NDEBUG_DMA, "Doing %d-byte PIO to 0x%X\n", cnt, *data);
|
||||
NCR5380_transfer_pio(instance, phase, &cnt, data);
|
||||
*count -= toPIO - cnt;
|
||||
}
|
||||
#endif
|
||||
|
||||
dprintk(NDEBUG_DMA, ("Return with data ptr = 0x%X, count %d, last 0x%X, next 0x%X\n", *data, *count, *(*data + *count - 1), *(*data + *count)));
|
||||
dprintk(NDEBUG_DMA, "Return with data ptr = 0x%X, count %d, last 0x%X, next 0x%X\n", *data, *count, *(*data + *count - 1), *(*data + *count));
|
||||
return 0;
|
||||
|
||||
#elif defined(REAL_DMA)
|
||||
@@ -2013,7 +2004,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
foo = NCR5380_pwrite(instance, d, c);
|
||||
#else
|
||||
int timeout;
|
||||
dprintk(NDEBUG_C400_PWRITE, ("About to pwrite %d bytes\n", c));
|
||||
dprintk(NDEBUG_C400_PWRITE, "About to pwrite %d bytes\n", c);
|
||||
if (!(foo = NCR5380_pwrite(instance, d, c))) {
|
||||
/*
|
||||
* Wait for the last byte to be sent. If REQ is being asserted for
|
||||
@@ -2024,19 +2015,19 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
while (!(NCR5380_read(BUS_AND_STATUS_REG) & BASR_DRQ) && (NCR5380_read(BUS_AND_STATUS_REG) & BASR_PHASE_MATCH));
|
||||
|
||||
if (!timeout)
|
||||
dprintk(NDEBUG_LAST_BYTE_SENT, ("scsi%d : timed out on last byte\n", instance->host_no));
|
||||
dprintk(NDEBUG_LAST_BYTE_SENT, "scsi%d : timed out on last byte\n", instance->host_no);
|
||||
|
||||
if (hostdata->flags & FLAG_CHECK_LAST_BYTE_SENT) {
|
||||
hostdata->flags &= ~FLAG_CHECK_LAST_BYTE_SENT;
|
||||
if (NCR5380_read(TARGET_COMMAND_REG) & TCR_LAST_BYTE_SENT) {
|
||||
hostdata->flags |= FLAG_HAS_LAST_BYTE_SENT;
|
||||
dprintk(NDEBUG_LAST_WRITE_SENT, ("scsi%d : last bit sent works\n", instance->host_no));
|
||||
dprintk(NDEBUG_LAST_BYTE_SENT, "scsi%d : last byte sent works\n", instance->host_no);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dprintk(NDEBUG_C400_PWRITE, ("Waiting for LASTBYTE\n"));
|
||||
dprintk(NDEBUG_C400_PWRITE, "Waiting for LASTBYTE\n");
|
||||
while (!(NCR5380_read(TARGET_COMMAND_REG) & TCR_LAST_BYTE_SENT));
|
||||
dprintk(NDEBUG_C400_PWRITE, ("Got LASTBYTE\n"));
|
||||
dprintk(NDEBUG_C400_PWRITE, "Got LASTBYTE\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2045,9 +2036,9 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
|
||||
if ((!(p & SR_IO)) && (hostdata->flags & FLAG_NCR53C400)) {
|
||||
dprintk(NDEBUG_C400_PWRITE, ("53C400w: Checking for IRQ\n"));
|
||||
dprintk(NDEBUG_C400_PWRITE, "53C400w: Checking for IRQ\n");
|
||||
if (NCR5380_read(BUS_AND_STATUS_REG) & BASR_IRQ) {
|
||||
dprintk(NDEBUG_C400_PWRITE, ("53C400w: got it, reading reset interrupt reg\n"));
|
||||
dprintk(NDEBUG_C400_PWRITE, "53C400w: got it, reading reset interrupt reg\n");
|
||||
NCR5380_read(RESET_PARITY_INTERRUPT_REG);
|
||||
} else {
|
||||
printk("53C400w: IRQ NOT THERE!\n");
|
||||
@@ -2139,7 +2130,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
--cmd->SCp.buffers_residual;
|
||||
cmd->SCp.this_residual = cmd->SCp.buffer->length;
|
||||
cmd->SCp.ptr = sg_virt(cmd->SCp.buffer);
|
||||
dprintk(NDEBUG_INFORMATION, ("scsi%d : %d bytes and %d buffers left\n", instance->host_no, cmd->SCp.this_residual, cmd->SCp.buffers_residual));
|
||||
dprintk(NDEBUG_INFORMATION, "scsi%d : %d bytes and %d buffers left\n", instance->host_no, cmd->SCp.this_residual, cmd->SCp.buffers_residual);
|
||||
}
|
||||
/*
|
||||
* The preferred transfer method is going to be
|
||||
@@ -2219,7 +2210,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
case LINKED_FLG_CMD_COMPLETE:
|
||||
/* Accept message by clearing ACK */
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
dprintk(NDEBUG_LINKED, ("scsi%d : target %d lun %d linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun));
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
/*
|
||||
* Sanity check : A linked command should only terminate with
|
||||
* one of these messages if there are more linked commands
|
||||
@@ -2235,7 +2226,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
/* The next command is still part of this process */
|
||||
cmd->next_link->tag = cmd->tag;
|
||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
dprintk(NDEBUG_LINKED, ("scsi%d : target %d lun %d linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun));
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
collect_stats(hostdata, cmd);
|
||||
cmd->scsi_done(cmd);
|
||||
cmd = hostdata->connected;
|
||||
@@ -2247,7 +2238,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
sink = 1;
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
hostdata->connected = NULL;
|
||||
dprintk(NDEBUG_QUEUES, ("scsi%d : command for target %d, lun %d completed\n", instance->host_no, cmd->device->id, cmd->device->lun));
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d, lun %d completed\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
||||
|
||||
/*
|
||||
@@ -2281,13 +2272,13 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
if ((cmd->cmnd[0] != REQUEST_SENSE) && (status_byte(cmd->SCp.Status) == CHECK_CONDITION)) {
|
||||
scsi_eh_prep_cmnd(cmd, &hostdata->ses, NULL, 0, ~0);
|
||||
|
||||
dprintk(NDEBUG_AUTOSENSE, ("scsi%d : performing request sense\n", instance->host_no));
|
||||
dprintk(NDEBUG_AUTOSENSE, "scsi%d : performing request sense\n", instance->host_no);
|
||||
|
||||
LIST(cmd, hostdata->issue_queue);
|
||||
cmd->host_scribble = (unsigned char *)
|
||||
hostdata->issue_queue;
|
||||
hostdata->issue_queue = (Scsi_Cmnd *) cmd;
|
||||
dprintk(NDEBUG_QUEUES, ("scsi%d : REQUEST SENSE added to head of issue queue\n", instance->host_no));
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : REQUEST SENSE added to head of issue queue\n", instance->host_no);
|
||||
} else
|
||||
#endif /* def AUTOSENSE */
|
||||
{
|
||||
@@ -2327,7 +2318,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
hostdata->disconnected_queue;
|
||||
hostdata->connected = NULL;
|
||||
hostdata->disconnected_queue = cmd;
|
||||
dprintk(NDEBUG_QUEUES, ("scsi%d : command for target %d lun %d was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun));
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d lun %d was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
/*
|
||||
* Restore phase bits to 0 so an interrupted selection,
|
||||
* arbitration can resume.
|
||||
@@ -2373,14 +2364,14 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
extended_msg[0] = EXTENDED_MESSAGE;
|
||||
/* Accept first byte by clearing ACK */
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
dprintk(NDEBUG_EXTENDED, ("scsi%d : receiving extended message\n", instance->host_no));
|
||||
dprintk(NDEBUG_EXTENDED, "scsi%d : receiving extended message\n", instance->host_no);
|
||||
|
||||
len = 2;
|
||||
data = extended_msg + 1;
|
||||
phase = PHASE_MSGIN;
|
||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||
|
||||
dprintk(NDEBUG_EXTENDED, ("scsi%d : length=%d, code=0x%02x\n", instance->host_no, (int) extended_msg[1], (int) extended_msg[2]));
|
||||
dprintk(NDEBUG_EXTENDED, "scsi%d : length=%d, code=0x%02x\n", instance->host_no, (int) extended_msg[1], (int) extended_msg[2]);
|
||||
|
||||
if (!len && extended_msg[1] <= (sizeof(extended_msg) - 1)) {
|
||||
/* Accept third byte by clearing ACK */
|
||||
@@ -2390,7 +2381,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
phase = PHASE_MSGIN;
|
||||
|
||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||
dprintk(NDEBUG_EXTENDED, ("scsi%d : message received, residual %d\n", instance->host_no, len));
|
||||
dprintk(NDEBUG_EXTENDED, "scsi%d : message received, residual %d\n", instance->host_no, len);
|
||||
|
||||
switch (extended_msg[2]) {
|
||||
case EXTENDED_SDTR:
|
||||
@@ -2456,7 +2447,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||
if (!cmd->device->disconnect && should_disconnect(cmd->cmnd[0])) {
|
||||
NCR5380_set_timer(hostdata, USLEEP_SLEEP);
|
||||
dprintk(NDEBUG_USLEEP, ("scsi%d : issued command, sleeping until %ul\n", instance->host_no, hostdata->time_expires));
|
||||
dprintk(NDEBUG_USLEEP, "scsi%d : issued command, sleeping until %lu\n", instance->host_no, hostdata->time_expires);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@@ -2468,7 +2459,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
break;
|
||||
default:
|
||||
printk("scsi%d : unknown phase\n", instance->host_no);
|
||||
NCR5380_dprint(NDEBUG_ALL, instance);
|
||||
NCR5380_dprint(NDEBUG_ANY, instance);
|
||||
} /* switch(phase) */
|
||||
} /* if (tmp * SR_REQ) */
|
||||
else {
|
||||
@@ -2476,7 +2467,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
*/
|
||||
if (!cmd->device->disconnect && time_after_eq(jiffies, poll_time)) {
|
||||
NCR5380_set_timer(hostdata, USLEEP_SLEEP);
|
||||
dprintk(NDEBUG_USLEEP, ("scsi%d : poll timed out, sleeping until %ul\n", instance->host_no, hostdata->time_expires));
|
||||
dprintk(NDEBUG_USLEEP, "scsi%d : poll timed out, sleeping until %lu\n", instance->host_no, hostdata->time_expires);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2517,7 +2508,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||
hostdata->restart_select = 1;
|
||||
|
||||
target_mask = NCR5380_read(CURRENT_SCSI_DATA_REG) & ~(hostdata->id_mask);
|
||||
dprintk(NDEBUG_SELECTION, ("scsi%d : reselect\n", instance->host_no));
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : reselect\n", instance->host_no);
|
||||
|
||||
/*
|
||||
* At this point, we have detected that our SCSI ID is on the bus,
|
||||
@@ -2597,7 +2588,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||
do_abort(instance);
|
||||
} else {
|
||||
hostdata->connected = tmp;
|
||||
dprintk(NDEBUG_RESELECTION, ("scsi%d : nexus established, target = %d, lun = %d, tag = %d\n", instance->host_no, tmp->target, tmp->lun, tmp->tag));
|
||||
dprintk(NDEBUG_RESELECTION, "scsi%d : nexus established, target = %d, lun = %d, tag = %d\n", instance->host_no, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2682,8 +2673,8 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||
|
||||
NCR5380_setup(instance);
|
||||
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : abort called\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, (" basr 0x%X, sr 0x%X\n", NCR5380_read(BUS_AND_STATUS_REG), NCR5380_read(STATUS_REG)));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : abort called\n", instance->host_no);
|
||||
dprintk(NDEBUG_ABORT, " basr 0x%X, sr 0x%X\n", NCR5380_read(BUS_AND_STATUS_REG), NCR5380_read(STATUS_REG));
|
||||
|
||||
#if 0
|
||||
/*
|
||||
@@ -2693,7 +2684,7 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||
*/
|
||||
|
||||
if (hostdata->connected == cmd) {
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : aborting connected command\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : aborting connected command\n", instance->host_no);
|
||||
hostdata->aborted = 1;
|
||||
/*
|
||||
* We should perform BSY checking, and make sure we haven't slipped
|
||||
@@ -2721,14 +2712,14 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||
* from the issue queue.
|
||||
*/
|
||||
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : abort going into loop.\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : abort going into loop.\n", instance->host_no);
|
||||
for (prev = (Scsi_Cmnd **) & (hostdata->issue_queue), tmp = (Scsi_Cmnd *) hostdata->issue_queue; tmp; prev = (Scsi_Cmnd **) & (tmp->host_scribble), tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||
if (cmd == tmp) {
|
||||
REMOVE(5, *prev, tmp, tmp->host_scribble);
|
||||
(*prev) = (Scsi_Cmnd *) tmp->host_scribble;
|
||||
tmp->host_scribble = NULL;
|
||||
tmp->result = DID_ABORT << 16;
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : abort removed command from issue queue.\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : abort removed command from issue queue.\n", instance->host_no);
|
||||
tmp->scsi_done(tmp);
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -2750,7 +2741,7 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||
*/
|
||||
|
||||
if (hostdata->connected) {
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : abort failed, command connected.\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : abort failed, command connected.\n", instance->host_no);
|
||||
return FAILED;
|
||||
}
|
||||
/*
|
||||
@@ -2780,11 +2771,11 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||
|
||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue; tmp; tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||
if (cmd == tmp) {
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : aborting disconnected command.\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : aborting disconnected command.\n", instance->host_no);
|
||||
|
||||
if (NCR5380_select(instance, cmd, (int) cmd->tag))
|
||||
return FAILED;
|
||||
dprintk(NDEBUG_ABORT, ("scsi%d : nexus reestablished.\n", instance->host_no));
|
||||
dprintk(NDEBUG_ABORT, "scsi%d : nexus reestablished.\n", instance->host_no);
|
||||
|
||||
do_abort(instance);
|
||||
|
||||
|
||||
+21
-11
@@ -21,10 +21,6 @@
|
||||
* 1+ (800) 334-5454
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Log: NCR5380.h,v $
|
||||
*/
|
||||
|
||||
#ifndef NCR5380_H
|
||||
#define NCR5380_H
|
||||
|
||||
@@ -60,6 +56,9 @@
|
||||
#define NDEBUG_C400_PREAD 0x100000
|
||||
#define NDEBUG_C400_PWRITE 0x200000
|
||||
#define NDEBUG_LISTS 0x400000
|
||||
#define NDEBUG_ABORT 0x800000
|
||||
#define NDEBUG_TAGS 0x1000000
|
||||
#define NDEBUG_MERGING 0x2000000
|
||||
|
||||
#define NDEBUG_ANY 0xFFFFFFFFUL
|
||||
|
||||
@@ -292,9 +291,24 @@ struct NCR5380_hostdata {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define dprintk(a,b) do {} while(0)
|
||||
#define NCR5380_dprint(a,b) do {} while(0)
|
||||
#define NCR5380_dprint_phase(a,b) do {} while(0)
|
||||
#ifndef NDEBUG
|
||||
#define NDEBUG (0)
|
||||
#endif
|
||||
|
||||
#define dprintk(flg, fmt, ...) \
|
||||
do { if ((NDEBUG) & (flg)) pr_debug(fmt, ## __VA_ARGS__); } while (0)
|
||||
|
||||
#if NDEBUG
|
||||
#define NCR5380_dprint(flg, arg) \
|
||||
do { if ((NDEBUG) & (flg)) NCR5380_print(arg); } while (0)
|
||||
#define NCR5380_dprint_phase(flg, arg) \
|
||||
do { if ((NDEBUG) & (flg)) NCR5380_print_phase(arg); } while (0)
|
||||
static void NCR5380_print_phase(struct Scsi_Host *instance);
|
||||
static void NCR5380_print(struct Scsi_Host *instance);
|
||||
#else
|
||||
#define NCR5380_dprint(flg, arg) do {} while (0)
|
||||
#define NCR5380_dprint_phase(flg, arg) do {} while (0)
|
||||
#endif
|
||||
|
||||
#if defined(AUTOPROBE_IRQ)
|
||||
static int NCR5380_probe_irq(struct Scsi_Host *instance, int possible);
|
||||
@@ -307,10 +321,6 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id);
|
||||
#endif
|
||||
static void NCR5380_main(struct work_struct *work);
|
||||
static void __maybe_unused NCR5380_print_options(struct Scsi_Host *instance);
|
||||
#ifdef NDEBUG
|
||||
static void NCR5380_print_phase(struct Scsi_Host *instance);
|
||||
static void NCR5380_print(struct Scsi_Host *instance);
|
||||
#endif
|
||||
static int NCR5380_abort(Scsi_Cmnd * cmd);
|
||||
static int NCR5380_bus_reset(Scsi_Cmnd * cmd);
|
||||
static int NCR5380_queue_command(struct Scsi_Host *, struct scsi_cmnd *);
|
||||
|
||||
@@ -827,7 +827,7 @@ ahd_pci_intr(struct ahd_softc *ahd)
|
||||
for (bit = 0; bit < 8; bit++) {
|
||||
|
||||
if ((pci_status[i] & (0x1 << bit)) != 0) {
|
||||
static const char *s;
|
||||
const char *s;
|
||||
|
||||
s = pci_status_strings[bit];
|
||||
if (i == 7/*TARG*/ && bit == 3)
|
||||
@@ -887,23 +887,15 @@ ahd_pci_split_intr(struct ahd_softc *ahd, u_int intstat)
|
||||
|
||||
for (bit = 0; bit < 8; bit++) {
|
||||
|
||||
if ((split_status[i] & (0x1 << bit)) != 0) {
|
||||
static const char *s;
|
||||
|
||||
s = split_status_strings[bit];
|
||||
printk(s, ahd_name(ahd),
|
||||
if ((split_status[i] & (0x1 << bit)) != 0)
|
||||
printk(split_status_strings[bit], ahd_name(ahd),
|
||||
split_status_source[i]);
|
||||
}
|
||||
|
||||
if (i > 1)
|
||||
continue;
|
||||
|
||||
if ((sg_split_status[i] & (0x1 << bit)) != 0) {
|
||||
static const char *s;
|
||||
|
||||
s = split_status_strings[bit];
|
||||
printk(s, ahd_name(ahd), "SG");
|
||||
}
|
||||
if ((sg_split_status[i] & (0x1 << bit)) != 0)
|
||||
printk(split_status_strings[bit], ahd_name(ahd), "SG");
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -61,13 +61,6 @@
|
||||
* comment out the undef.
|
||||
*/
|
||||
#undef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
|
||||
/*
|
||||
* SCSI-II Linked command support.
|
||||
*
|
||||
* The higher level code doesn't support linked commands yet, and so the option
|
||||
* is undef'd here.
|
||||
*/
|
||||
#undef CONFIG_SCSI_ACORNSCSI_LINK
|
||||
/*
|
||||
* SCSI-II Synchronous transfer support.
|
||||
*
|
||||
@@ -160,10 +153,6 @@
|
||||
#error "Yippee! ABORT TAG is now defined! Remove this error!"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_LINK
|
||||
#error SCSI2 LINKed commands not supported (yet)!
|
||||
#endif
|
||||
|
||||
#ifdef USE_DMAC
|
||||
/*
|
||||
* DMAC setup parameters
|
||||
@@ -1668,42 +1657,6 @@ void acornscsi_message(AS_Host *host)
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_LINK
|
||||
case LINKED_CMD_COMPLETE:
|
||||
case LINKED_FLG_CMD_COMPLETE:
|
||||
/*
|
||||
* We don't support linked commands yet
|
||||
*/
|
||||
if (0) {
|
||||
#if (DEBUG & DEBUG_LINK)
|
||||
printk("scsi%d.%c: lun %d tag %d linked command complete\n",
|
||||
host->host->host_no, acornscsi_target(host), host->SCpnt->tag);
|
||||
#endif
|
||||
/*
|
||||
* A linked command should only terminate with one of these messages
|
||||
* if there are more linked commands available.
|
||||
*/
|
||||
if (!host->SCpnt->next_link) {
|
||||
printk(KERN_WARNING "scsi%d.%c: lun %d tag %d linked command complete, but no next_link\n",
|
||||
instance->host_no, acornscsi_target(host), host->SCpnt->tag);
|
||||
acornscsi_sbic_issuecmd(host, CMND_ASSERTATN);
|
||||
msgqueue_addmsg(&host->scsi.msgs, 1, ABORT);
|
||||
} else {
|
||||
struct scsi_cmnd *SCpnt = host->SCpnt;
|
||||
|
||||
acornscsi_dma_cleanup(host);
|
||||
|
||||
host->SCpnt = host->SCpnt->next_link;
|
||||
host->SCpnt->tag = SCpnt->tag;
|
||||
SCpnt->result = DID_OK | host->scsi.SCp.Message << 8 | host->Scsi.SCp.Status;
|
||||
SCpnt->done(SCpnt);
|
||||
|
||||
/* initialise host->SCpnt->SCp */
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
default: /* reject message */
|
||||
printk(KERN_ERR "scsi%d.%c: unrecognised message %02X, rejecting\n",
|
||||
host->host->host_no, acornscsi_target(host),
|
||||
@@ -2825,9 +2778,6 @@ char *acornscsi_info(struct Scsi_Host *host)
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
|
||||
" TAG"
|
||||
#endif
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_LINK
|
||||
" LINK"
|
||||
#endif
|
||||
#if (DEBUG & DEBUG_NO_WRITE)
|
||||
" NOWRITE (" __stringify(NO_WRITE) ")"
|
||||
#endif
|
||||
@@ -2851,9 +2801,6 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
|
||||
" TAG"
|
||||
#endif
|
||||
#ifdef CONFIG_SCSI_ACORNSCSI_LINK
|
||||
" LINK"
|
||||
#endif
|
||||
#if (DEBUG & DEBUG_NO_WRITE)
|
||||
" NOWRITE (" __stringify(NO_WRITE) ")"
|
||||
#endif
|
||||
|
||||
@@ -36,9 +36,6 @@
|
||||
void __iomem *base; \
|
||||
void __iomem *dma
|
||||
|
||||
#define BOARD_NORMAL 0
|
||||
#define BOARD_NCR53C400 1
|
||||
|
||||
#include "../NCR5380.h"
|
||||
|
||||
void cumanascsi_setup(char *str, int *ints)
|
||||
|
||||
@@ -37,9 +37,6 @@
|
||||
#define NCR5380_implementation_fields \
|
||||
void __iomem *base
|
||||
|
||||
#define BOARD_NORMAL 0
|
||||
#define BOARD_NCR53C400 1
|
||||
|
||||
#include "../NCR5380.h"
|
||||
|
||||
#undef START_DMA_INITIATOR_RECEIVE_REG
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -67,12 +67,6 @@
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
#define NDEBUG (0)
|
||||
|
||||
#define NDEBUG_ABORT 0x00100000
|
||||
#define NDEBUG_TAGS 0x00200000
|
||||
#define NDEBUG_MERGING 0x00400000
|
||||
|
||||
#define AUTOSENSE
|
||||
/* For the Atari version, use only polled IO or REAL_DMA */
|
||||
#define REAL_DMA
|
||||
@@ -314,7 +308,7 @@ static irqreturn_t scsi_tt_intr(int irq, void *dummy)
|
||||
|
||||
dma_stat = tt_scsi_dma.dma_ctrl;
|
||||
|
||||
INT_PRINTK("scsi%d: NCR5380 interrupt, DMA status = %02x\n",
|
||||
dprintk(NDEBUG_INTR, "scsi%d: NCR5380 interrupt, DMA status = %02x\n",
|
||||
atari_scsi_host->host_no, dma_stat & 0xff);
|
||||
|
||||
/* Look if it was the DMA that has interrupted: First possibility
|
||||
@@ -340,7 +334,7 @@ static irqreturn_t scsi_tt_intr(int irq, void *dummy)
|
||||
if ((dma_stat & 0x02) && !(dma_stat & 0x40)) {
|
||||
atari_dma_residual = HOSTDATA_DMALEN - (SCSI_DMA_READ_P(dma_addr) - atari_dma_startaddr);
|
||||
|
||||
DMA_PRINTK("SCSI DMA: There are %ld residual bytes.\n",
|
||||
dprintk(NDEBUG_DMA, "SCSI DMA: There are %ld residual bytes.\n",
|
||||
atari_dma_residual);
|
||||
|
||||
if ((signed int)atari_dma_residual < 0)
|
||||
@@ -371,7 +365,7 @@ static irqreturn_t scsi_tt_intr(int irq, void *dummy)
|
||||
* other command. These shouldn't disconnect anyway.
|
||||
*/
|
||||
if (atari_dma_residual & 0x1ff) {
|
||||
DMA_PRINTK("SCSI DMA: DMA bug corrected, "
|
||||
dprintk(NDEBUG_DMA, "SCSI DMA: DMA bug corrected, "
|
||||
"difference %ld bytes\n",
|
||||
512 - (atari_dma_residual & 0x1ff));
|
||||
atari_dma_residual = (atari_dma_residual + 511) & ~0x1ff;
|
||||
@@ -438,7 +432,7 @@ static irqreturn_t scsi_falcon_intr(int irq, void *dummy)
|
||||
"ST-DMA fifo\n", transferred & 15);
|
||||
|
||||
atari_dma_residual = HOSTDATA_DMALEN - transferred;
|
||||
DMA_PRINTK("SCSI DMA: There are %ld residual bytes.\n",
|
||||
dprintk(NDEBUG_DMA, "SCSI DMA: There are %ld residual bytes.\n",
|
||||
atari_dma_residual);
|
||||
} else
|
||||
atari_dma_residual = 0;
|
||||
@@ -474,11 +468,11 @@ static void atari_scsi_fetch_restbytes(void)
|
||||
/* there are 'nr' bytes left for the last long address
|
||||
before the DMA pointer */
|
||||
phys_dst ^= nr;
|
||||
DMA_PRINTK("SCSI DMA: there are %d rest bytes for phys addr 0x%08lx",
|
||||
dprintk(NDEBUG_DMA, "SCSI DMA: there are %d rest bytes for phys addr 0x%08lx",
|
||||
nr, phys_dst);
|
||||
/* The content of the DMA pointer is a physical address! */
|
||||
dst = phys_to_virt(phys_dst);
|
||||
DMA_PRINTK(" = virt addr %p\n", dst);
|
||||
dprintk(NDEBUG_DMA, " = virt addr %p\n", dst);
|
||||
for (src = (char *)&tt_scsi_dma.dma_restdata; nr != 0; --nr)
|
||||
*dst++ = *src++;
|
||||
}
|
||||
@@ -827,7 +821,7 @@ static int atari_scsi_bus_reset(Scsi_Cmnd *cmd)
|
||||
} else {
|
||||
atari_turnon_irq(IRQ_MFP_FSCSI);
|
||||
}
|
||||
if ((rv & SCSI_RESET_ACTION) == SCSI_RESET_SUCCESS)
|
||||
if (rv == SUCCESS)
|
||||
falcon_release_lock_if_possible(hostdata);
|
||||
|
||||
return rv;
|
||||
@@ -883,7 +877,7 @@ static unsigned long atari_scsi_dma_setup(struct Scsi_Host *instance,
|
||||
{
|
||||
unsigned long addr = virt_to_phys(data);
|
||||
|
||||
DMA_PRINTK("scsi%d: setting up dma, data = %p, phys = %lx, count = %ld, "
|
||||
dprintk(NDEBUG_DMA, "scsi%d: setting up dma, data = %p, phys = %lx, count = %ld, "
|
||||
"dir = %d\n", instance->host_no, data, addr, count, dir);
|
||||
|
||||
if (!IS_A_TT() && !STRAM_ADDR(addr)) {
|
||||
@@ -1063,7 +1057,7 @@ static unsigned long atari_dma_xfer_len(unsigned long wanted_len,
|
||||
possible_len = limit;
|
||||
|
||||
if (possible_len != wanted_len)
|
||||
DMA_PRINTK("Sorry, must cut DMA transfer size to %ld bytes "
|
||||
dprintk(NDEBUG_DMA, "Sorry, must cut DMA transfer size to %ld bytes "
|
||||
"instead of %ld\n", possible_len, wanted_len);
|
||||
|
||||
return possible_len;
|
||||
|
||||
@@ -54,125 +54,6 @@
|
||||
#define NCR5380_dma_xfer_len(i,cmd,phase) \
|
||||
atari_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1)
|
||||
|
||||
/* former generic SCSI error handling stuff */
|
||||
|
||||
#define SCSI_ABORT_SNOOZE 0
|
||||
#define SCSI_ABORT_SUCCESS 1
|
||||
#define SCSI_ABORT_PENDING 2
|
||||
#define SCSI_ABORT_BUSY 3
|
||||
#define SCSI_ABORT_NOT_RUNNING 4
|
||||
#define SCSI_ABORT_ERROR 5
|
||||
|
||||
#define SCSI_RESET_SNOOZE 0
|
||||
#define SCSI_RESET_PUNT 1
|
||||
#define SCSI_RESET_SUCCESS 2
|
||||
#define SCSI_RESET_PENDING 3
|
||||
#define SCSI_RESET_WAKEUP 4
|
||||
#define SCSI_RESET_NOT_RUNNING 5
|
||||
#define SCSI_RESET_ERROR 6
|
||||
|
||||
#define SCSI_RESET_SYNCHRONOUS 0x01
|
||||
#define SCSI_RESET_ASYNCHRONOUS 0x02
|
||||
#define SCSI_RESET_SUGGEST_BUS_RESET 0x04
|
||||
#define SCSI_RESET_SUGGEST_HOST_RESET 0x08
|
||||
|
||||
#define SCSI_RESET_BUS_RESET 0x100
|
||||
#define SCSI_RESET_HOST_RESET 0x200
|
||||
#define SCSI_RESET_ACTION 0xff
|
||||
|
||||
/* Debugging printk definitions:
|
||||
*
|
||||
* ARB -> arbitration
|
||||
* ASEN -> auto-sense
|
||||
* DMA -> DMA
|
||||
* HSH -> PIO handshake
|
||||
* INF -> information transfer
|
||||
* INI -> initialization
|
||||
* INT -> interrupt
|
||||
* LNK -> linked commands
|
||||
* MAIN -> NCR5380_main() control flow
|
||||
* NDAT -> no data-out phase
|
||||
* NWR -> no write commands
|
||||
* PIO -> PIO transfers
|
||||
* PDMA -> pseudo DMA (unused on Atari)
|
||||
* QU -> queues
|
||||
* RSL -> reselections
|
||||
* SEL -> selections
|
||||
* USL -> usleep cpde (unused on Atari)
|
||||
* LBS -> last byte sent (unused on Atari)
|
||||
* RSS -> restarting of selections
|
||||
* EXT -> extended messages
|
||||
* ABRT -> aborting and resetting
|
||||
* TAG -> queue tag handling
|
||||
* MER -> merging of consec. buffers
|
||||
*
|
||||
*/
|
||||
|
||||
#define dprint(flg, format...) \
|
||||
({ \
|
||||
if (NDEBUG & (flg)) \
|
||||
printk(KERN_DEBUG format); \
|
||||
})
|
||||
|
||||
#define ARB_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_ARBITRATION, format , ## args)
|
||||
#define ASEN_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_AUTOSENSE, format , ## args)
|
||||
#define DMA_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_DMA, format , ## args)
|
||||
#define HSH_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_HANDSHAKE, format , ## args)
|
||||
#define INF_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_INFORMATION, format , ## args)
|
||||
#define INI_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_INIT, format , ## args)
|
||||
#define INT_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_INTR, format , ## args)
|
||||
#define LNK_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_LINKED, format , ## args)
|
||||
#define MAIN_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_MAIN, format , ## args)
|
||||
#define NDAT_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_NO_DATAOUT, format , ## args)
|
||||
#define NWR_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_NO_WRITE, format , ## args)
|
||||
#define PIO_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_PIO, format , ## args)
|
||||
#define PDMA_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_PSEUDO_DMA, format , ## args)
|
||||
#define QU_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_QUEUES, format , ## args)
|
||||
#define RSL_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_RESELECTION, format , ## args)
|
||||
#define SEL_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_SELECTION, format , ## args)
|
||||
#define USL_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_USLEEP, format , ## args)
|
||||
#define LBS_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_LAST_BYTE_SENT, format , ## args)
|
||||
#define RSS_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_RESTART_SELECT, format , ## args)
|
||||
#define EXT_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_EXTENDED, format , ## args)
|
||||
#define ABRT_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_ABORT, format , ## args)
|
||||
#define TAG_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_TAGS, format , ## args)
|
||||
#define MER_PRINTK(format, args...) \
|
||||
dprint(NDEBUG_MERGING, format , ## args)
|
||||
|
||||
/* conditional macros for NCR5380_print_{,phase,status} */
|
||||
|
||||
#define NCR_PRINT(mask) \
|
||||
((NDEBUG & (mask)) ? NCR5380_print(instance) : (void)0)
|
||||
|
||||
#define NCR_PRINT_PHASE(mask) \
|
||||
((NDEBUG & (mask)) ? NCR5380_print_phase(instance) : (void)0)
|
||||
|
||||
#define NCR_PRINT_STATUS(mask) \
|
||||
((NDEBUG & (mask)) ? NCR5380_print_status(instance) : (void)0)
|
||||
|
||||
|
||||
#endif /* ndef ASM */
|
||||
#endif /* ATARI_SCSI_H */
|
||||
|
||||
|
||||
@@ -83,9 +83,20 @@ static inline void queue_tail_inc(struct be_queue_info *q)
|
||||
|
||||
/*ISCSI */
|
||||
|
||||
struct be_aic_obj { /* Adaptive interrupt coalescing (AIC) info */
|
||||
bool enable;
|
||||
u32 min_eqd; /* in usecs */
|
||||
u32 max_eqd; /* in usecs */
|
||||
u32 prev_eqd; /* in usecs */
|
||||
u32 et_eqd; /* configured val when aic is off */
|
||||
ulong jiffs;
|
||||
u64 eq_prev; /* Used to calculate eqe */
|
||||
};
|
||||
|
||||
struct be_eq_obj {
|
||||
bool todo_mcc_cq;
|
||||
bool todo_cq;
|
||||
u32 cq_count;
|
||||
struct be_queue_info q;
|
||||
struct beiscsi_hba *phba;
|
||||
struct be_queue_info *cq;
|
||||
|
||||
@@ -71,6 +71,7 @@ struct be_mcc_wrb {
|
||||
#define BEISCSI_FW_MBX_TIMEOUT 100
|
||||
|
||||
/* MBOX Command VER */
|
||||
#define MBX_CMD_VER1 0x01
|
||||
#define MBX_CMD_VER2 0x02
|
||||
|
||||
struct be_mcc_compl {
|
||||
@@ -271,6 +272,12 @@ struct be_cmd_resp_eq_create {
|
||||
u16 rsvd0; /* sword */
|
||||
} __packed;
|
||||
|
||||
struct be_set_eqd {
|
||||
u32 eq_id;
|
||||
u32 phase;
|
||||
u32 delay_multiplier;
|
||||
} __packed;
|
||||
|
||||
struct mgmt_chap_format {
|
||||
u32 flags;
|
||||
u8 intr_chap_name[256];
|
||||
@@ -622,7 +629,7 @@ struct be_cmd_req_modify_eq_delay {
|
||||
u32 eq_id;
|
||||
u32 phase;
|
||||
u32 delay_multiplier;
|
||||
} delay[8];
|
||||
} delay[MAX_CPUS];
|
||||
} __packed;
|
||||
|
||||
/******************** Get MAC ADDR *******************/
|
||||
@@ -708,6 +715,8 @@ unsigned int be_cmd_get_port_speed(struct beiscsi_hba *phba);
|
||||
|
||||
void free_mcc_tag(struct be_ctrl_info *ctrl, unsigned int tag);
|
||||
|
||||
int be_cmd_modify_eq_delay(struct beiscsi_hba *phba, struct be_set_eqd *,
|
||||
int num);
|
||||
int beiscsi_mccq_compl(struct beiscsi_hba *phba,
|
||||
uint32_t tag, struct be_mcc_wrb **wrb,
|
||||
struct be_dma_mem *mbx_cmd_mem);
|
||||
@@ -1005,6 +1014,26 @@ struct tcp_connect_and_offload_in {
|
||||
u8 rsvd0[3];
|
||||
} __packed;
|
||||
|
||||
struct tcp_connect_and_offload_in_v1 {
|
||||
struct be_cmd_req_hdr hdr;
|
||||
struct ip_addr_format ip_address;
|
||||
u16 tcp_port;
|
||||
u16 cid;
|
||||
u16 cq_id;
|
||||
u16 defq_id;
|
||||
struct phys_addr dataout_template_pa;
|
||||
u16 hdr_ring_id;
|
||||
u16 data_ring_id;
|
||||
u8 do_offload;
|
||||
u8 ifd_state;
|
||||
u8 rsvd0[2];
|
||||
u16 tcp_window_size;
|
||||
u8 tcp_window_scale_count;
|
||||
u8 rsvd1;
|
||||
u32 tcp_mss:24;
|
||||
u8 rsvd2;
|
||||
} __packed;
|
||||
|
||||
struct tcp_connect_and_offload_out {
|
||||
struct be_cmd_resp_hdr hdr;
|
||||
u32 connection_handle;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user