alad(HW)
alad --
Adaptec AHA-294x SCSI host adapter driver
Description
The alad driver
directly supports the following host adapters:
AHA-2910
AHA-2930P
AHA-2940
AHA-2940AU
AHA-2940W
AHA-2940UW
AHA-2944UW
AHA-2944W
AHA-3940
AHA-3940U
AHA-3940UW
AHA-3940UWD
AHA-3940W
AHA-3944UWD
AHA-4940W
This driver also supports the AIC-7850,
AIC-7860, AIC-7870,
AIC-7880, and AIC-7895
chips.
To determine the support status of your host adapter,
contact your system supplier or
refer to the
Compatible Hardware Web Pages.
Adaptec 3940 notes
The AHA-3940 is, in fact,
two host adapters on one board.
This is unlike the AHA-2740,
which is a single host adapter
with two SCSI buses.
On the AHA-3940,
the IRQ on each of the two chips
are wired to INTA and INTB respectively.
This allows increased performance
by using separate IRQs.
However, on systems that are PCI 2.1 compliant
(supports PCI-to-PCI bridge),
and depending on the system motherboard and BIOS,
it is sometimes possible to share IRQs.
Configuring the alad driver
You can configure the alad driver using entries in
/etc/conf/cf.d/mdevice and /etc/conf/sdevice.d/alad.
See
mdevice(F)
and
sdevice(F).
Changes to these files
take effect once you relink the kernel using
link_unix(ADM)
and reboot the system.
Configure alad driver-specific characteristics
by editing the /etc/conf/pack.d/alad/space.c file,
which controls parameters such as the SCSI ID,
I/O port address, scatter/gather, tag queuing and
connect/disconnect.
Interrupt distribution-
If set to 1, interrupts are handled only on the base CPU.
If set to DRIVER_CPU_DEFAULT,
interrupt handling is distributed
across all CPUs on a multiprocessing configuration.
int alad_processor = 1;
SCSI ID-
Set the SCSI ID for the host adapter.
aha_change alad_hba_id[ha_number]={1,1};
This ID must be changed
if another device (such as another host adapter)
already exists on this ID.
Bus release timing-
Specifies the number of PCI PCLKs
the host adapter will continue transferring
after being preempted and before releasing the bus.
The range is decimal 2 to 60.
aha_change alad_bus_release[ha_number]={1,8};
Parity option-
If set to 1, parity checking is enabled
for incoming SCSI data;
if set to 0, parity checking is disabled.
Parity is always generated on outbound SCSI data.
aha_change alad_parity[ha_number]={0,1};
Parity checking ensures that minor errors in transmission
are caught so the transfer can be retransmitted.
If, however, a device generates an incorect parity signal,
parity checking should be disabled.
Symptoms of incorrect parity include
frequent system panics,
read/write errors,
and bus resets
when the device(s) in question are accessed.
Time selection-
Specifies the length of time, in milliseconds,
the host adapter will wait
for a target to respond to selection
before aborting the selection procedure.
aha_change alad_sel_timeout[ha_number];
The supported values are:
ALAD_SEL_256-
256 milliseconds
ALAD_SEL_128-
128 milliseconds
ALAD_SEL_64-
64 millseconds
ALAD_SEL_32-
32 milliseconds
For example, the following line
sets the selection timeout on the
first host adapter to 128 milliseconds:
aha_change alad_sel_timeout[ha_number]={1,ALAD_SEL_128};
Allow disconnection-
Specifies whether disconnection is allowed
for the corresponding target ID.
This is a 16-bit field where each bit
corresponds to a target ID.
If set to 1, disconnection is allowed;
if set to 0, disconnection is not allowed.
aha_change alad_disconnect[ha_number]={1,1};
Disconnection allows one device
to be logically disconnected from the host adapter
while it processes a request.
This should be allowed in most cases
because it improves I/O throughput
by allowing the host adapter to service
multiple commands to different devices
at the same time.
Some overhead is associated with disconnecting and reconnecting,
so when the host adapter issues
a comparitively large number of commands
to a single device
or when only the host adapter and one other device
are configured on the SCSI bus,
not allowing disconnection
may result in better performance.
You can set up your system so that this value
can be changed through SCSI Select
without having to rebuild the kernel.
To do this, modify the line shown above to:
aha_change alad_disconnect[ha_number]={1,0xFFFF};
NOTE:
If disconnection is not allowed,
tag queuing must also be turned off.
SCSI option-
Sets a 16-byte array that specifies negotiation options.
When used for an 8-bit data channel,
only the first 8 bytes are examined.
Byte 0 represents target 0, byte 1 represents target 1,
and so forth.
Synchronous negotiation is a method of transferring data
that is, in general, much faster than asychronous transfer.
A fast synchronous speed of 5-10 MHz
is preferred.
Some devices, however, such as older tape
and CD-ROM devices,
support only asynchronous transfer.
The system might hang when
the BIOS or driver scans such a device
or when the device is accessed.
If this occurs, disable synchronous negotiation.
Each byte must define SYNC_MODE,
SYNC_RATE, and WIDE_MODE:
SYNC_MODE-
Determine whether the host adapter
will initiate synchronous transfer.
Valid values are:
SYNC_ENABLE-
will attempt to initiate synchronous negotiation
SYNC_DISABLE-
will not initiate synchronous negotiation,
but will respond to negotiation
that is initiated by the target.
SYNC_RATE-
Valid values are:
ALAD_SYNC_10_0-
10.0 MHz
ALAD_SYNC_8_0-
8.0 MHz
ALAD_SYNC_6_7-
6.7 MHz
ALAD_SYNC_5_7-
5.7 MHz
ALAD_SYNC_5_0-
5.0 MHz
ALAD_SYNC_4_4-
4.4 MHz
ALAD_SYNC_4_0-
4.0 MHz
ALAD_SYNC_3_6-
3.6 MHz
WIDE_MODE-
determines whether the host adapter
will attempt to negotiate for
wide (16-bit) SCSI data transfers.
If set to 1, the host adapter will attempt to negotiate for
wide SCSI data transfers;
if set to 0, it will not initiate wide negotiation
although it will respond to negotiation
that is initiated by the target.
The supported values for WIDE_MODE are:
ALAD_WIDE_ENABLE-
negotiate for 16-bit SCSI data transfer
ALAD_WIDE_DISABLE-
will not initiate wide negotiation.
NOTE:
Changing the SCSI option value will cause
a SCSI bus reset.
aha_change alad_scsi_opt[ha_number];
For example, to set wide negotiation for target ID 16:
alad_scsi_opt[ha_number][16]={1,ALAD_WIDE_ENABLE};
Ignore underrun-
If set to 1, ignore underrun as an error.
If set to 0, report underrun as an error.
Default is 1, to ignore underrun as an error.
aha_change alad_underrun[ha_number][16] = {1,0};
An underrun condition occurs when
less than the requested amount of data
has been transmitted;
and overrun condition is when
more than the requested amount of data
has been transmitted.
Some devices transfer more or larger blocks
than what was actually requested;
for such devices,
an underrun condition is not an error condition,
so this parameter should be set to ``1''
to avoid spurious error notifications.
For devices that conform strictly to the SCSI specification,
an underrun is a real error condition.
If all configured devices are SCSI compliant,
set this parameter to ``0''
so that you receive notification of the error condition.
Tag queuing-
If set to 1, driver will perform tag queuing.
Default is 0 to disable.
int alad_do_tagged = 0;
Tag queuing is a provision of the SCSI specification
that improves I/O throughput
by allowing multiple commands
to be queued up in the device's memory for processing.
Some devices do not handle such commands properly,
and so tag queuing should be disabled
when they are configured.
Maximum tag queue-
Defines the maximum number of tag queuing SCBs
the driver will send to each SCSI device
when tag queuing is used.
The valid values are 1 to 32,
with 8 as the default.
aha_change alad_MaxTagScbs[ha_number] = {1,4};
Scanning for LUN-
During system initialization,
the driver scans all devices, but not the LUN,
to obtain negotiation information.
Setting this to 1 causes the LUN to also be scanned.
aha_change alad_scan_lun[ha_number];
For example, to have no LUN scanning
on host adapter 0
and to enable LUN scanning on host adapter 1:
alad_scan_lun[1]={1,1}
Enable instrumentation-
Set to 1 to enable instrumentation for that host adapter;
default is 0 to disable instrumentation.
aha_change alad_instr_enable[ha_number] = {1,1};
Normally CIO software enables instrumentation,
so it is not necessary to enable instrumentation here.
Enabling provides more accurate instrumentation information
although it degrades performance slightly.
For example, to enable instrumentation
on the first and third channels or host adapters,
set this as follows:
aha_change alad_instru_enable[ha_number]={1,1, 0,0, 1,1};
Maximum entries in instrumentation error log-
Specifies the maximum number of entries
in the error log when instrumentation is enabled.
By default, this is set to 32;
1 is the minimum value,
or set to max when no instrumentation is enabled.
Each entry is approximately 40 bytes long.
unsigned short alad_instru_errlogsz = 32;
Boot time configuration of SCSI
Use the
bootstring(HW)
parameters to override
the default hardware configuration information.
Of special interest are the adapter= parameter
that specifies information for
the host adapter card
that plugs into or is part of the motherboard,
and the periph= parameter
that specifies information about the host adapter
being used by one of the generic peripheral interfaces
(Sdsk, Srom, or Stp).
ioctl commands
The alad driver
supports all standard SCSI ioctls
that are defined in the <sys/scsicmd.h> header file
and documented on the
scsi(HW)
manual page.
Limitations
The alad driver may not talk to some tape devices,
especially those designed to the SCSI-1 specification.
For these devices,
if a
tape(C)
command or data transfer is attempted on a
SCSI tape device at any time after power up,
the command hangs and all access
to the SCSI bus is denied.
In other words,
you cannot access any other device
on the SCSI bus the tape is on.
This happens because
the tape is holding the SCSI bus
BUSY waiting for an acknowledgement of data
it has previously sent.
The adapter driver has become confused
about the Synchronous Transfer parameters negotiated previously
and does not realize it needs to send an acknowledgement.
To avoid this problem, disable Synchronous Negotiation for the tape
device in the Adaptec SCSI-Select BIOS.
The data transfer rate to the tape device might decrease slightly.
This problem has only been observed on Apricot machines with
Tandberg 4200c and Archive Viper 525 tape drives.
Diagnostics
These error messages associated with alad may display on the console.
See
messages(M)
for general information about kernel error messages,
including a list of generic device driver errors.
WARNING: alad: Adapter diagnostic failure 0x%x: bus 0
-
alad was unable to initialize the hardware
that it found.
This often indicates a hardware error.
Contact Adaptec technical support
or your system vendor for assistance.
WARNING: alad: Cannot initialize drive ID:0
-
alad was unable to perform
SCSI commands on the boot drive
to determine its drive geometry.
This might indicate that not enough memory was available
to perform the operation.
WARNING: alad: CONFLICT-Disconnection must be enabled in order for tag-queuing to work
-
By definition, tag queuing requires that disconnection be enabled.
If tag queuing is enabled but disconnect is disabled,
this message appears.
The solution is to either enable disconnection
or disable tag queuing in the driver's space.c file
or SCSI Select.
WARNING: alad: spurious interrupt alad_name.
-
An interrupt occurred, but there was no pending command.
The source could be another driver,
such as a video driver,
that is sharing the same interrupt.
From the standpoint of the host adapter driver,
this message can be ignored.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Command Aborted by Host Adapter
No response required.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Selection Timeout
Device is not ready, malfunctioned,
or is no longer connected to the SCSI bus.
Make sure that the device is connected.
Also check the cabling and power connector.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Data Overrun or Underrun occurred
For CD-ROM drives, no response is required.
Otherwise, check the hardware or software for errors.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Unexpected Bus Free Occurred
Almost anything can cause this message,
including device firmware, the SCSI driver,
and bus resets.
Usually no user response is possible.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Target Bus Phase Sequence Error
An error occurred in the SCSI phase.
Anything can cause this message,
including device firmware, the SCSI driver,
and bus resets.
Usually no user response is possible,
although you may want to avoid issuing the commands
that resulted in this error.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Invalid SCSI Linking Operation
No response required.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Auto-Request Sense Failed
When a check condition occurs,
the host adapter automatically performs a request sense
to obtain the sense key.
If that process also fails,
this message is displayed.
No user response required.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Tagged Queuing Rejected by Target
Target rejected a tagged command.
The solution is to disable tagged queuing.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Host Adapter Hardware Error
Check the adapter and cabling.
Be sure that the host adapter is firmly seated in the slot.
The host adapter might be malfunctioning;
contact the host adapter manufacturer for assistance.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
Target Didn't Respond to ATN (RESET)
If no other error is visible,
no user response is required.
Otherwise, contact the device manufacturer.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
-
SCSI bus reset by host adapter
If no other error is visible,
no user response is required.
WARNING: alad: adapter 0 Error: alad (ha=0 bus=0 id=0 lun=0
)-
SCSI bus reset by other device
If no other error is visible,
no user response is required.
Files
/usr/include/sys/scsicmd.h-
SCSI interface header files-
See also
boot(HW),
link_unix(ADM),
mdevice(F),
mkdev(ADM),
sconf(ADM),
scsi(HW),
sdevice(F)
``Adding SCSI host adapters and peripherals'' in the SCO OpenServer Handbook
SCO OpenServer System Administration Guide
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003