patch-1.3.11 linux/drivers/scsi/eata_dma.c
Next file: linux/drivers/scsi/eata_dma.h
Previous file: linux/drivers/scsi/aic7xxx_asm.c
Back to the patch index
Back to the overall index
- Lines: 599
- Date:
Sun Jul 16 21:45:00 1995
- Orig file:
v1.3.10/linux/drivers/scsi/eata_dma.c
- Orig date:
Fri Jun 30 16:22:29 1995
diff -u --recursive --new-file v1.3.10/linux/drivers/scsi/eata_dma.c linux/drivers/scsi/eata_dma.c
@@ -1,52 +1,54 @@
/************************************************************
- * *
- * Linux EATA SCSI driver *
- * *
- * based on the CAM document CAM/89-004 rev. 2.0c, *
+ * *
+ * Linux EATA SCSI driver *
+ * *
+ * based on the CAM document CAM/89-004 rev. 2.0c, *
* DPT's driver kit, some internal documents and source, *
* and several other Linux scsi drivers and kernel docs. *
- * *
- * The driver currently: *
- * -supports all ISA based EATA-DMA boards *
- * -supports all EISA based EATA-DMA boards *
- * -supports all PCI based EATA-DMA boards *
- * -supports multiple HBAs with & without IRQ sharing *
- * -supports all SCSI channels on multi channel boards *
- * -can be loaded as module *
- * -displays statistical and hardware information *
- * in /proc/scsi/eata_dma *
- * -needs identical HBA ids on all channels *
- * *
- * (c)1993,94,95 Michael Neuffer *
- * neuffer@goofy.zdv.uni-mainz.de *
- * *
+ * *
+ * The driver currently: *
+ * -supports all ISA based EATA-DMA boards *
+ * -supports all EISA based EATA-DMA boards *
+ * -supports all PCI based EATA-DMA boards *
+ * -supports multiple HBAs with & without IRQ sharing *
+ * -supports all SCSI channels on multi channel boards *
+ * -needs identical IDs on all channels of a HBA *
+ * -can be loaded as module *
+ * -displays statistical and hardware information *
+ * in /proc/scsi/eata_dma *
+ * -provides rudimentary latency measurement *
+ * possibilities via /proc/scsi/eata_dma/<hostnum> *
+ * *
+ * (c)1993,94,95 Michael Neuffer *
+ * neuffer@goofy.zdv.uni-mainz.de *
+ * *
* This program is free software; you can redistribute it *
- * and/or modify it under the terms of the GNU General *
- * Public License as published by the Free Software *
- * Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
+ * and/or modify it under the terms of the GNU General *
+ * Public License as published by the Free Software *
+ * Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
* This program is distributed in the hope that it will be *
- * useful, but WITHOUT ANY WARRANTY; without even the *
+ * useful, but WITHOUT ANY WARRANTY; without even the *
* implied warranty of MERCHANTABILITY or FITNESS FOR A *
- * PARTICULAR PURPOSE. See the GNU General Public License *
- * for more details. *
- * *
- * You should have received a copy of the GNU General *
+ * PARTICULAR PURPOSE. See the GNU General Public License *
+ * for more details. *
+ * *
+ * You should have received a copy of the GNU General *
* Public License along with this kernel; if not, write to *
- * the Free Software Foundation, Inc., 675 Mass Ave, *
- * Cambridge, MA 02139, USA. *
- * *
+ * the Free Software Foundation, Inc., 675 Mass Ave, *
+ * Cambridge, MA 02139, USA. *
+ * *
* I have to thank DPT for their excellent support. I took *
* me almost a year and a stopover at their HQ, on my first *
* trip to the USA, to get it, but since then they've been *
- * very helpful and tried to give me all the infos and *
- * support I need. *
- * *
+ * very helpful and tried to give me all the infos and *
+ * support I need. *
+ * *
* Thanks also to Greg Hosler who did a lot of testing and *
- * found quite a number of bugs during the development. *
+ * found quite a number of bugs during the development. *
************************************************************
- * last change: 95/06/28 OS: Linux 1.3.4 + pre1.3 SCSI pat.*
+ * last change: 95/07/11 OS: Linux 1.3.9 *
************************************************************/
/* Look in eata_dma.h for configuration and revision information */
@@ -205,13 +207,33 @@
eata_stat, hba_stat));
switch (hba_stat) {
- case HA_NO_ERROR: /* NO Error */
+ case HA_NO_ERROR: /* NO Error */
if (scsi_stat == CONDITION_GOOD
&& cmd->device->type == TYPE_DISK
&& (HD(cmd)->t_state[cp->cp_channel][cp->cp_id] == RESET))
- result = DID_BUS_BUSY << 16;
- else if (scsi_stat == GOOD)
+ result = DID_BUS_BUSY << 16;
+ else if (scsi_stat == GOOD) {
HD(cmd)->t_state[cp->cp_channel][cp->cp_id] = OK;
+ if(HD(cmd)->do_latency == TRUE && cp->timestamp) {
+ uint time;
+ time = jiffies - cp->timestamp;
+ if((cp->rw_latency) == TRUE) { /* was WRITE */
+ if(HD(cmd)->writes_lat[cp->sizeindex][1] > time)
+ HD(cmd)->writes_lat[cp->sizeindex][1] = time;
+ if(HD(cmd)->writes_lat[cp->sizeindex][2] < time)
+ HD(cmd)->writes_lat[cp->sizeindex][2] = time;
+ HD(cmd)->writes_lat[cp->sizeindex][3] += time;
+ HD(cmd)->writes_lat[cp->sizeindex][0]++;
+ } else {
+ if(HD(cmd)->reads_lat[cp->sizeindex][1] > time)
+ HD(cmd)->reads_lat[cp->sizeindex][1] = time;
+ if(HD(cmd)->reads_lat[cp->sizeindex][2] < time)
+ HD(cmd)->reads_lat[cp->sizeindex][2] = time;
+ HD(cmd)->reads_lat[cp->sizeindex][3] += time;
+ HD(cmd)->reads_lat[cp->sizeindex][0]++;
+ }
+ }
+ }
else if (scsi_stat == CHECK_CONDITION
&& cmd->device->type == TYPE_DISK
&& (cmd->sense_buffer[2] & 0xf) == RECOVERED_ERROR)
@@ -220,10 +242,10 @@
result = DID_OK << 16;
HD(cmd)->t_timeout[cp->cp_channel][cp->cp_id] = OK;
break;
- case HA_ERR_SEL_TO: /* Selection Timeout */
+ case HA_ERR_SEL_TO: /* Selection Timeout */
result = DID_BAD_TARGET << 16;
break;
- case HA_ERR_CMD_TO: /* Command Timeout */
+ case HA_ERR_CMD_TO: /* Command Timeout */
if (HD(cmd)->t_timeout[cp->cp_channel][cp->cp_id] > 1)
result = DID_ERROR << 16;
else {
@@ -231,8 +253,8 @@
HD(cmd)->t_timeout[cp->cp_channel][cp->cp_id]++;
}
break;
- case HA_ERR_RESET: /* SCSI Bus Reset Received */
- case HA_INIT_POWERUP: /* Initial Controller Power-up */
+ case HA_ERR_RESET: /* SCSI Bus Reset Received */
+ case HA_INIT_POWERUP: /* Initial Controller Power-up */
if (cmd->device->type != TYPE_TAPE)
result = DID_BUS_BUSY << 16;
else
@@ -241,14 +263,14 @@
for (i = 0; i < MAXTARGET; i++)
HD(cmd)->t_state[cp->cp_channel][i] = RESET;
break;
- case HA_UNX_BUSPHASE: /* Unexpected Bus Phase */
- case HA_UNX_BUS_FREE: /* Unexpected Bus Free */
- case HA_BUS_PARITY: /* Bus Parity Error */
- case HA_SCSI_HUNG: /* SCSI Hung */
- case HA_UNX_MSGRJCT: /* Unexpected Message Reject */
- case HA_RESET_STUCK: /* SCSI Bus Reset Stuck */
- case HA_RSENSE_FAIL: /* Auto Request-Sense Failed */
- case HA_PARITY_ERR: /* Controller Ram Parity */
+ case HA_UNX_BUSPHASE: /* Unexpected Bus Phase */
+ case HA_UNX_BUS_FREE: /* Unexpected Bus Free */
+ case HA_BUS_PARITY: /* Bus Parity Error */
+ case HA_SCSI_HUNG: /* SCSI Hung */
+ case HA_UNX_MSGRJCT: /* Unexpected Message Reject */
+ case HA_RESET_STUCK: /* SCSI Bus Reset Stuck */
+ case HA_RSENSE_FAIL: /* Auto Request-Sense Failed */
+ case HA_PARITY_ERR: /* Controller Ram Parity */
default:
result = DID_ERROR << 16;
break;
@@ -267,7 +289,7 @@
DBG(DBG_INTR&&DBG_DELAY,DEL2(800));
#endif
- cp->status = FREE; /* now we can release the slot */
+ cp->status = FREE; /* now we can release the slot */
restore_flags(flags);
if(cmd->scsi_done != eata_scsi_done) cmd->scsi_done(cmd);
@@ -291,7 +313,7 @@
if (--loop == 0)
return(FALSE);
- outb( addr & 0x000000ff, base + HA_WDMAADDR);
+ outb( addr & 0x000000ff, base + HA_WDMAADDR);
outb((addr & 0x0000ff00) >> 8, base + HA_WDMAADDR + 1);
outb((addr & 0x00ff0000) >> 16, base + HA_WDMAADDR + 2);
outb((addr & 0xff000000) >> 24, base + HA_WDMAADDR + 3);
@@ -304,8 +326,8 @@
u8 lun)
{
if(addr){
- outb( addr & 0x000000ff, base + HA_WDMAADDR);
- outb((addr & 0x0000ff00) >> 8, base + HA_WDMAADDR + 1);
+ outb( addr & 0x000000ff, base + HA_WDMAADDR);
+ outb((addr & 0x0000ff00) >> 8, base + HA_WDMAADDR + 1);
outb((addr & 0x00ff0000) >> 16, base + HA_WDMAADDR + 2);
outb((addr & 0xff000000) >> 24, base + HA_WDMAADDR + 3);
} else {
@@ -314,7 +336,7 @@
}
outb(cmnd2, base + HA_WCOMMAND2);
- outb(cmnd, base + HA_WCOMMAND);
+ outb(cmnd, base + HA_WCOMMAND);
return(TRUE);
}
#endif
@@ -327,10 +349,10 @@
struct Scsi_Host *sh;
struct eata_ccb *cp;
struct scatterlist *sl;
-
+
save_flags(flags);
cli();
-
+
queue_counter++;
if (done == (void *)eata_scsi_done) {
@@ -354,61 +376,93 @@
hd->last_ccb = y;
if (x == sh->can_queue) {
-
DBG(DBG_QUEUE, printk("can_queue %d, x %d, y %d\n",
sh->can_queue, x, y));
-#if DEBUG_EATA
+
panic("eata_dma: run out of queue slots cmdno:%ld intrno: %ld\n",
queue_counter, int_counter);
-#else
- panic("eata_dma: run out of queue slots....\n");
-#endif
}
cp = &hd->ccb[y];
memset(cp, 0, sizeof(struct eata_ccb) - sizeof(struct eata_sg_list *));
- cp->status = USED; /* claim free slot */
+ cp->status = USED; /* claim free slot */
DBG(DBG_QUEUE, printk("eata_queue pid %ld, target: %x, lun: %x, y %d\n",
cmd->pid, cmd->target, cmd->lun, y));
DBG(DBG_QUEUE && DBG_DELAY, DEL2(250));
+
+ if(hd->do_latency == TRUE) {
+ int x, z;
+ short *sho;
+ long *lon;
+ x = 0; /* just to keep GCC quiet */
+ if (cmd->cmnd[0] == WRITE_6 || cmd->cmnd[0] == WRITE_10 ||
+ cmd->cmnd[0] == WRITE_12 || cmd->cmnd[0] == READ_6 ||
+ cmd->cmnd[0] == READ_10 || cmd->cmnd[0] == READ_12) {
+
+ cp->timestamp = jiffies; /* For latency measurements */
+ switch(cmd->cmnd[0]) {
+ case WRITE_6:
+ case READ_6:
+ x = cmd->cmnd[4]/2;
+ break;
+ case WRITE_10:
+ case READ_10:
+ sho = (short *) &cmd->cmnd[7];
+ x = ntohs(*sho)/2;
+ break;
+ case WRITE_12:
+ case READ_12:
+ lon = (long *) &cmd->cmnd[6];
+ x = ntohl(*lon)/2;
+ break;
+ }
+ for(z = 0; z <= 11, x > (1 << z); z++)
+ /* nothing */;
+ cp->sizeindex = z;
+ if (cmd->cmnd[0] == WRITE_6 || cmd->cmnd[0] == WRITE_10 ||
+ cmd->cmnd[0] == WRITE_12){
+ cp->rw_latency = TRUE;
+ }
+ }
+ }
cmd->scsi_done = (void *)done;
switch (cmd->cmnd[0]) {
- case CHANGE_DEFINITION: case COMPARE: case COPY:
- case COPY_VERIFY: case LOG_SELECT: case MODE_SELECT:
+ case CHANGE_DEFINITION: case COMPARE: case COPY:
+ case COPY_VERIFY: case LOG_SELECT: case MODE_SELECT:
case MODE_SELECT_10: case SEND_DIAGNOSTIC: case WRITE_BUFFER:
- case FORMAT_UNIT: case REASSIGN_BLOCKS: case RESERVE:
- case SEARCH_EQUAL: case SEARCH_HIGH: case SEARCH_LOW:
- case WRITE_6: case WRITE_10: case WRITE_VERIFY:
- case UPDATE_BLOCK: case WRITE_LONG: case WRITE_SAME:
+ case FORMAT_UNIT: case REASSIGN_BLOCKS: case RESERVE:
+ case SEARCH_EQUAL: case SEARCH_HIGH: case SEARCH_LOW:
+ case WRITE_6: case WRITE_10: case WRITE_VERIFY:
+ case UPDATE_BLOCK: case WRITE_LONG: case WRITE_SAME:
case SEARCH_HIGH_12: case SEARCH_EQUAL_12: case SEARCH_LOW_12:
- case WRITE_12: case WRITE_VERIFY_12: case SET_WINDOW:
- case MEDIUM_SCAN: case SEND_VOLUME_TAG:
- case 0xea: /* alternate number for WRITE LONG */
- cp->DataOut = TRUE; /* Output mode */
+ case WRITE_12: case WRITE_VERIFY_12: case SET_WINDOW:
+ case MEDIUM_SCAN: case SEND_VOLUME_TAG:
+ case 0xea: /* alternate number for WRITE LONG */
+ cp->DataOut = TRUE; /* Output mode */
break;
case TEST_UNIT_READY:
default:
- cp->DataIn = TRUE; /* Input mode */
+ cp->DataIn = TRUE; /* Input mode */
}
if ((done == (void *) eata_scsi_done && HBA_interpret == TRUE)
|| cmd->target == sh->this_id)
- cp->Interpret = TRUE; /* Interpret command */
+ cp->Interpret = TRUE; /* Interpret command */
if (cmd->use_sg) {
- cp->scatter = TRUE; /* SG mode */
+ cp->scatter = TRUE; /* SG mode */
if (cp->sg_list == NULL) {
cp->sg_list = kmalloc(SG_SIZE_BIG*sizeof(struct eata_sg_list),
- GFP_ATOMIC | GFP_DMA);
+ GFP_ATOMIC | GFP_DMA);
}
cp->cp_dataDMA = htonl((ulong)cp->sg_list);
if (cp->cp_dataDMA == 0)
panic("eata_dma: Run out of DMA memory for SG lists !\n");
-
+
cp->cp_datalen = htonl(cmd->use_sg * sizeof(struct eata_sg_list));
sl=(struct scatterlist *)cmd->request_buffer;
for(i = 0; i < cmd->use_sg; i++, sl++){
@@ -436,7 +490,7 @@
cp->cp_viraddr = cp;
cp->cmd = cmd;
- cmd->host_scribble = (char *)&hd->ccb[y];
+ cmd->host_scribble = (char *)&hd->ccb[y];
if(eata_send_command((u32) cp, (u32) sh->base, EATA_CMD_DMA_SEND_CP) == FALSE) {
cmd->result = DID_ERROR << 16;
@@ -563,7 +617,7 @@
}
/* hard reset the HBA */
- inb((u32) (cmd->host->base) + HA_RSTATUS); /* This might cause trouble */
+ inb((u32) (cmd->host->base) + HA_RSTATUS); /* This might cause trouble */
eata_send_command(0, (u32) cmd->host->base, EATA_CMD_RESET);
DBG(DBG_ABNORM, printk("eata_reset: board reset done, enabling interrupts.\n"));
@@ -572,7 +626,7 @@
restore_flags(flags);
time = jiffies;
- while (jiffies < (time + 300) && limit++ < 10000000)
+ while (jiffies < (time + (3 * HZ)) && limit++ < 10000000)
/* nothing */;
save_flags(flags);
@@ -635,7 +689,7 @@
memset(sp, 0, sizeof(struct eata_sp));
memset(buff, 0, 256);
- cp->DataIn = TRUE;
+ cp->DataIn = TRUE;
cp->Interpret = TRUE; /* Interpret command */
cp->cp_datalen = htonl(255);
@@ -659,7 +713,7 @@
eata_send_command((u32) cp, (u32) base, EATA_CMD_DMA_SEND_CP);
- i = jiffies + 300;
+ i = jiffies + (3 * HZ) ;
while (fake_int_result == FALSE && jiffies <= i)
barrier();
@@ -676,7 +730,7 @@
inb((u32) (base) + HA_RSTATUS);
eata_send_command(0, base, EATA_CMD_RESET);
i = jiffies;
- while (jiffies < (i + 300) && limit++ < 10000000)
+ while (jiffies < (i + (3 * HZ)) && limit++ < 10000000)
barrier();
return (NULL);
} else
@@ -734,7 +788,7 @@
*p = inw(base + HA_RDATA);
}
- if (!(inb(base + HA_RSTATUS) & HA_SERROR)) { /* Error ? */
+ if (!(inb(base + HA_RSTATUS) & HA_SERROR)) { /* Error ? */
if (htonl(EATA_SIGNATURE) == buf->signature) {
DBG(DBG_PIO&&DBG_PROBE, printk("EATA Controller found at %x "
"EATA Level: %x\n", (uint) base,
@@ -767,7 +821,7 @@
gc->SG_64K, gc->SG_UAE, gc->MAX_ID, gc->MAX_CHAN, gc->MAX_LUN);
printk("RIDQ:%d PCI:%d EISA:%d\n",
gc->ID_qest, gc->is_PCI, gc->is_EISA);
- DBG(DPT_DEBUG, DELAY(1400));
+ DBG(DPT_DEBUG, DELAY(14));
}
short register_HBA(u32 base, struct get_conf *gc, Scsi_Host_Template * tpnt,
@@ -779,6 +833,7 @@
unchar bugs = 0;
struct Scsi_Host *sh;
hostdata *hd;
+ int x;
DBG(DBG_REGISTER, print_config(gc));
@@ -792,7 +847,7 @@
if(gc->HAA_valid == FALSE || ntohl(gc->len) < 0x22)
gc->MAX_CHAN = 0;
- if (reg_IRQ[gc->IRQ] == FALSE) { /* Interrupt already registered ? */
+ if (reg_IRQ[gc->IRQ] == FALSE) { /* Interrupt already registered ? */
if (!request_irq(gc->IRQ, (void *) eata_fake_int_handler, SA_INTERRUPT,
"eata_dma")){
reg_IRQ[gc->IRQ]++;
@@ -802,7 +857,7 @@
printk("Couldn't allocate IRQ %d, Sorry.", gc->IRQ);
return (FALSE);
}
- } else { /* More than one HBA on this IRQ */
+ } else { /* More than one HBA on this IRQ */
if (reg_IRQL[gc->IRQ] == TRUE) {
printk("Can't support more than one HBA on this IRQ,\n"
" if the IRQ is edge triggered. Sorry.\n");
@@ -861,7 +916,7 @@
if(ntohs(gc->queuesiz) == 0) {
gc->queuesiz = ntohs(64);
printk("Warning: Queue size has to be corrected. Assuming 64 queueslots\n"
- " This might be a PM2012B with a defective Firmware\n");
+ " This might be a PM2012B with a defective Firmware\n");
}
size = sizeof(hostdata) + ((sizeof(struct eata_ccb) + sizeof(long))
@@ -883,7 +938,7 @@
return (FALSE);
}
- hd = SD(sh);
+ hd = SD(sh);
memset(hd->ccb, 0, sizeof(struct eata_ccb) * ntohs(gc->queuesiz));
memset(hd->reads, 0, sizeof(u32) * 26);
@@ -894,7 +949,7 @@
strcpy(SD(sh)->vendor, "DPT");
strcpy(SD(sh)->name, "??????????");
strcpy(SD(sh)->revision, "???.?");
- } else {
+ } else {
strncpy(SD(sh)->vendor, &buff[8], 8);
SD(sh)->vendor[8] = 0;
strncpy(SD(sh)->name, &buff[16], 17);
@@ -918,7 +973,7 @@
SD(sh)->EATA_revision = 'c';
break;
case 0x24:
- SD(sh)->EATA_revision = 'z';
+ SD(sh)->EATA_revision = 'z';
default:
SD(sh)->EATA_revision = '?';
}
@@ -948,7 +1003,7 @@
sh->max_lun = 8;
}
- hd->channel = gc->MAX_CHAN;
+ hd->channel = gc->MAX_CHAN;
sh->max_channel = gc->MAX_CHAN;
sh->base = (char *) base;
sh->io_port = (u16) base;
@@ -960,7 +1015,7 @@
* SCSI midlevel code should support different HBA ids on every channel
*/
sh->this_id = gc->scsi_id[3];
- sh->can_queue = ntohs(gc->queuesiz);
+ sh->can_queue = ntohs(gc->queuesiz) - 1; /* Keep one free for internals */
if (gc->OCS_enabled == TRUE)
if(hd->bustype != IS_ISA)
@@ -997,15 +1052,20 @@
else
hd->primary = TRUE;
- sh->wish_block = FALSE;
+ sh->wish_block = FALSE;
if (hd->bustype != IS_ISA) {
sh->unchecked_isa_dma = FALSE;
} else {
- sh->unchecked_isa_dma = TRUE; /* We're doing ISA DMA */
+ sh->unchecked_isa_dma = TRUE; /* We're doing ISA DMA */
}
- hd->next = NULL; /* build a linked list of all HBAs */
+ for(x = 0; x <= 11; x++){ /* Initialize min. latency */
+ hd->writes_lat[x][1] = 0xffffffff;
+ hd->reads_lat[x][1] = 0xffffffff;
+ }
+
+ hd->next = NULL; /* build a linked list of all HBAs */
hd->prev = last_HBA;
if(hd->prev != NULL)
SD(hd->prev)->next = sh;
@@ -1028,7 +1088,7 @@
#endif
for (i = 0; i < MAXEISA; i++) {
- if (EISAbases[i] == TRUE) { /* Still a possibility ? */
+ if (EISAbases[i] == TRUE) { /* Still a possibility ? */
base = 0x1c88 + (i * 0x1000);
#if CHECKPAL
@@ -1090,7 +1150,7 @@
#else
u8 pci_bus, pci_device_fn;
- static s16 pci_index = 0; /* Device index to PCI BIOS calls */
+ static s16 pci_index = 0; /* Device index to PCI BIOS calls */
u32 base = 0;
u16 com_adr;
u16 rev_device;
@@ -1142,8 +1202,8 @@
if (base != 0x1f8) {
/* We didn't find it in the primary search */
if (get_conf_PIO(base, buf) == TRUE) {
- if (buf->FORCADR) /* If the address is forced */
- continue; /* we'll find it later */
+ if (buf->FORCADR) /* If the address is forced */
+ continue; /* we'll find it later */
/* OK. We made it till here, so we can go now
* and register it. We only have to check and
@@ -1177,7 +1237,7 @@
} else
printk("eata_dma: No BIOS32 extensions present. This driver release "
"still depends on it.\n"
- " Skipping scan for PCI HBAs. \n");
+ " Skipping scan for PCI HBAs. \n");
#endif /* #ifndef CONFIG_PCI */
return;
}
@@ -1210,14 +1270,14 @@
if (registered_HBAs != 0) {
printk("EATA (Extended Attachment) driver version: %d.%d%s\n"
- "developed in co-operation with DPT\n"
+ "developed in co-operation with DPT\n"
"(c) 1993-95 Michael Neuffer, neuffer@goofy.zdv.uni-mainz.de\n",
VER_MAJOR, VER_MINOR, VER_SUB);
printk("Registered HBAs:");
printk("\nHBA no. Boardtype: Revis: EATA: Bus: BaseIO: IRQ: DMA: Ch: "
"ID: Pr: QS: SG: CPL:\n");
for (i = 1; i <= registered_HBAs; i++) {
- printk("scsi%-2d: %.10s v%s 2.0%c %s %#.4x %2d",
+ printk("scsi%-2d: %.10s v%s 2.0%c %s %#.4x %2d",
HBA_ptr->host_no, SD(HBA_ptr)->name, SD(HBA_ptr)->revision,
SD(HBA_ptr)->EATA_revision, (SD(HBA_ptr)->bustype == 'P')?
"PCI ":(SD(HBA_ptr)->bustype == 'E')?"EISA":"ISA ",
@@ -1226,7 +1286,7 @@
printk(" %2x ", HBA_ptr->dma_channel);
else
printk(" %s", "BMST");
- printk(" %d %d %c %2d %2d %2d\n", SD(HBA_ptr)->channel,
+ printk(" %d %d %c %2d %2d %2d\n", SD(HBA_ptr)->channel,
HBA_ptr->this_id, (SD(HBA_ptr)->primary == TRUE)?'Y':'N',
HBA_ptr->can_queue, HBA_ptr->sg_tablesize, HBA_ptr->cmd_per_lun);
HBA_ptr = SD(HBA_ptr)->next;
@@ -1237,7 +1297,7 @@
scsi_init_free((void *)dma_scratch, 512);
- DBG(DPT_DEBUG, DELAY(1200));
+ DBG(DPT_DEBUG, DELAY(12));
return(registered_HBAs);
}
@@ -1262,7 +1322,6 @@
* c-label-offset: -4
* c-continued-statement-offset: 4
* c-continued-brace-offset: 0
- * indent-tabs-mode: nil
* tab-width: 8
* End:
*/
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this