HBA Configuration Properties

When attaching an instance of an HBA device, scsi_hba_attach_setup(9F) creates a
number of SCSI configuration properties for that HBA instance. A particular property is
created only if no existing property of the same name is already attached
to the HBA instance. This restriction avoids overriding any default property values in
an HBA configuration file.

An HBA driver must use ddi_prop_get_int(9F) to retrieve each property. The HBA
driver then modifies or accepts the default value of the properties to configure
its specific operation.

scsi-reset-delay Property

The scsi-reset-delay property is an integer specifying the recovery time in milliseconds for
a reset delay by either a SCSI bus or SCSI device.

scsi-options Property

The scsi-options property is an integer specifying a number of options through individually
defined bits:

SCSI_OPTIONS_DR (0x008) – If not set, the HBA should not grant disconnect privileges to a target device.

SCSI_OPTIONS_LINK (0x010) – If not set, the HBA should not enable linked commands.

SCSI_OPTIONS_SYNC (0x020) – If not set, the HBA driver must not negotiate synchronous data transfer. The driver should reject any attempt to negotiate synchronous data transfer initiated by a target.

SCSI_OPTIONS_PARITY (0x040) – If not set, the HBA should run the SCSI bus without parity.

SCSI_OPTIONS_TAG (0x080) – If not set, the HBA should not operate in Command Tagged Queuing mode.

SCSI_OPTIONS_FAST (0x100) – If not set, the HBA should not operate the bus in FAST SCSI mode.

SCSI_OPTIONS_WIDE (0x200) – If not set, the HBA should not operate the bus in WIDE SCSI mode.

Per-Target scsi-options

An HBA driver might support a per-target scsi-options feature in the following
format:

target<n>-scsi-options=<hex value>

In this example, < n> is the target ID. If the per-target scsi-options
property is defined, the HBA driver uses that value rather than the
per-HBA driver instance scsi-options property. This approach can provide more precise control if,
for example, synchronous data transfer needs to be disabled for just one particular
target device. The per-target scsi-options property can be defined in the driver.conf(4) file.

x86 Target Driver Configuration Properties

Some x86 SCSI target drivers, such as the driver for cmdk disk, use
the following configuration properties:

disk

queue

flow_control

If you use the cmdk sample driver to write an HBA driver for
an x86 platform, any appropriate properties must be defined in the driver.conf(4) file.

Note - These property definitions should appear only in an HBA driver's driver.conf(4) file.
The HBA driver itself should not inspect or attempt to interpret these properties in
any way. These properties are advisory only and serve as an adjunct
to the cmdk driver. The properties should not be relied upon in any way.
The property definitions might not be used in future releases.

The disk property can be used to define the type of disk supported
by cmdk. For a SCSI HBA, the only possible value for the disk
property is:

disk="scdk" – Disk type is a SCSI disk

The queue property defines how the disk driver sorts the queue of incoming
requests during strategy(9E). Two values are possible:

flow_control="duplx" – The HBA can support separate read and write queues, with multiple commands per queue. FIFO ordering is used for the write queue. The queuing model that is used for the read queue is described by the queue property. When an HBA queue is full, the driver returns TRAN_BUSY

The following example is a driver.conf(4) file for use with an x86
HBA PCI device that has been designed for use with the cmdk sample driver: