SCSI disks capped at 40 MB/s

I have a batch of SCSI disks and a controller; the drives are HP 72,8GB 10k RPM Ultra320 SCSI (model number BD07296B44), the controller is an Adaptec AIC-7892A U160/m, the issue is that I can't get more than 40 MB/s out of any of them.

/proc/scsi/scsi :

Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: COMPAQ   Model: BD07296B44       Rev: HPB6
  Type:   Direct-Access                    ANSI  SCSI revision: 03
Host: scsi2 Channel: 00 Id: 01 Lun: 00
  Vendor: COMPAQ   Model: BD07296B44       Rev: HPB6
  Type:   Direct-Access                    ANSI  SCSI revision: 03
Host: scsi2 Channel: 00 Id: 02 Lun: 00
  Vendor: COMPAQ   Model: BD07296B44       Rev: HPB6
  Type:   Direct-Access                    ANSI  SCSI revision: 03

/proc/scsi/aic7xxx :

Adaptec AIC7xxx driver version: 7.0
Adaptec (Compaq OEM) 29160 Ultra160 SCSI adapter
aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
Allocated SCBs: 36, SG List Length: 128

Serial EEPROM:
0xcb3a 0xcb3a ...

Target 0 Negotiation Settings
        User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
        Goal: 40.000MB/s transfers (40.000MHz, offset 63)
        Curr: 40.000MB/s transfers (40.000MHz, offset 63)
        Channel A Target 0 Lun 0 Settings
                Commands Queued 170636
                Commands Active 1
                Command Openings 31
                Max Tagged Openings 32
                Device Queue Frozen Count 0
Target 1 Negotiation Settings
        User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
        Goal: 40.000MB/s transfers (40.000MHz, offset 63)
        Curr: 40.000MB/s transfers (40.000MHz, offset 63)
        Channel A Target 1 Lun 0 Settings
                Commands Queued 147132
                Commands Active 0
                Command Openings 32
                Max Tagged Openings 32
                Device Queue Frozen Count 0
Target 2 Negotiation Settings
        User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
        Goal: 40.000MB/s transfers (40.000MHz, offset 63)
        Curr: 40.000MB/s transfers (40.000MHz, offset 63)
        Channel A Target 2 Lun 0 Settings
                Commands Queued 146405
                Commands Active 0
                Command Openings 32
                Max Tagged Openings 32
                Device Queue Frozen Count 0

dmesg | grep scsi :

scsi host2: Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 7.0
scsi 2:0:0:0: Direct-Access     COMPAQ   BD07296B44       HPB6 PQ: 0 ANSI: 3
scsi2:A:0:0: Tagged Queuing enabled.  Depth 32
scsi target2:0:0: Beginning Domain Validation
scsi target2:0:0: FAST-40 SCSI 40.0 MB/s ST (25 ns, offset 63)
scsi target2:0:0: Domain Validation skipping write tests
scsi target2:0:0: Ending Domain Validation
scsi 2:0:1:0: Direct-Access     COMPAQ   BD07296B44       HPB6 PQ: 0 ANSI: 3
scsi2:A:1:0: Tagged Queuing enabled.  Depth 32
scsi target2:0:1: Beginning Domain Validation
scsi target2:0:1: FAST-40 SCSI 40.0 MB/s ST (25 ns, offset 63)
scsi target2:0:1: Domain Validation skipping write tests
scsi target2:0:1: Ending Domain Validation
scsi 2:0:2:0: Direct-Access     COMPAQ   BD07296B44       HPB6 PQ: 0 ANSI: 3
scsi2:A:2:0: Tagged Queuing enabled.  Depth 32
scsi target2:0:2: Beginning Domain Validation
scsi target2:0:2: FAST-40 SCSI 40.0 MB/s ST (25 ns, offset 63)
scsi target2:0:2: Domain Validation skipping write tests
scsi target2:0:2: Ending Domain Validation

The cable is an LVD Ultra320 cable with a terminator at the end, I already replaced it and the issue persists; the jumper configuration is irrelevant since the issue persists with only a single drive connected to the controller no matter how the jumper is positioned.

There are also pins on the drive's PCB for some "advanced" settings, there was a "narrow/wide" setting with a jumper on it, if I remove it the drive defaults to an even lower speed of 10 MB/s.

The controller is plugged into a standard PCI slot so I can only get a quarter of the bandwidth I'd get on a 64-bit 66 Mhz PCI interface according to the documentation, but that's still 133 MB/s and I'm not even close to that.

Some posts related to similar issues tell to tinker with the settings in the card's option ROM, except this one is an OEM part without any ROM chip on it and the kernel module's options don't have anything that would help solving the issue like disabling auto detection and forcing a particular link speed.

I've searched quite a bit and didn't find anything probing, this old e-mail shows that the controller is at least capable of 80 MB/s, and this recent post shows logs of this controller running at full 160 MB/s, but other than that I didn't find anything that would help me solve this mysterious problem.

Is there anything I can do to improve performance (at least 80 MB/s, but more is even better) besides replacing the hardware ?


Note: I understand that this is old hardware, but as long as it works I'd rather not change it since the cost caused by a failure is basically zero.


They're only negotiating at 40MBps. It's probably hardware.

Do they negotiate to the same speed in the BIOS? Check your hardware.

Better, replace that ancient rustpile.


Are your drives SCA (80-pin)? I see that your drive model BD07296B44 may come in 80- and 68-pin varieties. If they are SCA and you are using SCA to 68-pin adapters, then the adapters are almost certainly your problem. I just had this problem recently. My U160 drives and 29160 HBA were all running at 40MB/s. I looked at my setup and one drive was using a 80/68 adapter. I took that drive out and my entire bus suddenly ran at 160MB/s. Problem solved.

If all your drives are SCA, then short of replacing all the drives the only way you'll get >40MB/s is by buying a setup that has native SCA/80-pin, i.e. something with a backplane.

It looks like there are 80/68 adapters that claim to be "Ultra", though the two adapters I tried didn't do more than fast/wide. If you find an adapter that does allow for Ultra (>40MB/s) speed, please let me know.