[1841] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

Tekram driver vs. 53C8XX driver for DC-390/8XX boards.

daemon@ATHENA.MIT.EDU (Gerard Roudier)
Sun May 11 08:32:04 1997

Date: 	Sun, 11 May 1997 14:28:15 +0000 (GMT)
From: Gerard Roudier <groudier@club-internet.fr>
To: linux-scsi@vger.rutgers.edu, ncr53c810@colorado.edu


I looked into the Tekram driver for Tekram 825A/875 based SCSI 
controller and I have found the following strangeness.

In order to execute a scsi command, this driver uses severall programmed 
interrupts. I just applied 'on paper' the case of a SCSI transfer with 
tagged command queuing enabled, and assuming that the device will 
disconnect once and that we will get a phase mismatch.


Tekram weirdness:
-----------------

Step                        Programing interrupt number from Tekram C source
----                        ------------------------------------------------
Start a SCSI command                 __SIGNAL
Phase mismatch                       Phase mismatch interrupt
Save data pointer                    Hmmm..., I ask me some questions about.
Disconnect message received          __DISCONNECTED
Device reselect the chip+identify    __RESELECTED1 (restart to grab the tag)
Tag gotten                           __RESELECTEDT
Restore data pointer                 Hmmm..., I ask me some questions about.
Message complete received            __COMPLETE

The question about data pointer is: Are they just disgarded?

On the other hand this driver does not use INT_FLY. That means that 
each time an interrupt is raised, the script processor is stopped until 
the service routine restarts it.

In the same situation, you will get with with the ncr53c8xx driver:
- 1 Phase mismatch interrupt
- 1 INT_FLY for command completion signaling.

If we exclude tagged command queuing, you will get the same number of 
interrupts with the 53c7,8xx driver using a supported 53c8xx chip.

The Tekram driver looks like some transcription of a driver for 
AMD53C974 chip, in my opinion.

On a UNIX system used for real work, the average of disk IO request 
data size is less than 16k. It is about 4k if you just do compilations.
On the other hand, disks donnot disconnect for each transfer.

So, we generally get for each SCSI transfer request:

- 2 programmed interrupts that stops the chip until the service 
  routine restarts it with the Tekram 53C875 driver (derived from some 
  AMD53C974 driver, in my opinion)

- 1 interrupt ON THE FLY that does not interrupt the SCRIPTS execution by  
  the chip, allowing it to start some other job while the CPU is servicing 
  the interrupt, with native NCR53C8XX drivers.


Gerard.


home help back first fref pref prev next nref lref last post