listing for E
emx - Device Driver for the Emulex Fibre Channel Host Adapter
bus emx0 at pci? controller scsiX at emx0
bus emx1 at pci? controller scsiY at emx1
bus emxN at pci? controller scsiZ at emxN
The emx driver controls and manages the Emulex Fibre Channel Host Adapter.
The emx driver is fully integrated with the CAM SCSI I/O subsystem to
provide connectivity to FCP (Fibre Channel Protocol, such as SCSI) devices
attached via the Fibre Channel adapter. In addition to acting as an FCP
initiator, the emx driver also functions as an FCP target. CAM target mode
peripheral drivers are also supported.
The emx driver currently provides Class 3 operation in a switch-based
Tuning the EMX Driver
Some Fibre Channel configurations become busy dealing with QUEUE FULL
responses that are generated by busy devices. When this occurs, not enough
I/O requests are completed successfully and the host CPU can fail the busy
If such problems occur, you can tune the performance of the emx driver by
manipulating the values of the following kernel configuration attributes,
which are part of the I/O subsystem:
· NPort_Max_IOs (default value 256)
· NPort_Min_IOs (default value 20)
· NPort_IORamp_Delay (default value 1)
· NPort_IORamp_Percent (default value 10)
Configure these attributes at run time, without rebooting the system by
using the /sbin/sysconfig -r command. If you want custom settings to
persist across a reboot, ensure that the values are written in the system
configuration file. To write the values into the system configuration file,
create a stanza file and use the /sbin/sysconfigdb command.
These system configuration attributes enable you to limit I/O via an
N_Port. An N_Port is a hardware entity attached to the end of a Fibre
Channel link. It manages the transmission and reception of Fibre Channel
I/O in the form of primitives and frames. Each N_Port is identified by a
64-bit worldwide name (WWN) known as the port name. In a Point-to-Point
topology, an N_Port connects to another N_Port via a link. In a fabric
topology, the N_Port connects to an F_Port via a link.
The attributes enable an I/O limiting feature, allowing you to tune I/O
when devices become too busy to cope with the I/O rate. When I/O is
limited to the correct rate, the emx driver allows only the value of
NPort_Max_IOs commands to be outstanding to an N_Port at one time during
normal use. If the device becomes too busy to accept commands the host
responds with a QUEUE FULL status message. The QUEUE FULL response
triggers an internal temporary maximum I/O limit. This limit is equal to
the volume of commands presently outstanding to the N_Port to which the
device is attached.
The internal temporary maximum I/O limit is never less than the value that
you specify for NPort_Min_IOs. The limit increases by the percentage value
specified for NPort_IORamp_Percent. This percentage increase repeats for
the time value (in seconds) that you specify for NPort_IORamp_Delay. The
process continues until the internal temporary maximum I/O limit is
equivalent to the value of NPort_Max_IOs or when another QUEUE FULL
response is received from the device. This logic limits the volume of
commands sent to a busy device while maximizing the volume of I/O in a busy
system. See the EXAMPLES section for some typical usage scenarios.
Do not attempt to set the value of NPort_Max_IOs to less than the
value of NPort_Min_IOs.
Due to the way sense data is handled in FCP, CAM SCSI I/O CCBs that have
AUTOSENSE disabled (CAM_DIS_AUTOSENSE) will be rejected with a
Direct connections without an intervening switch or hub are not supported.
Due to the SCSI-2 limitations inherent in the design of target mode
operation in the CAM specification, specifically in the area of sense data
handling, tagged command queuing is not supported in the target mode
portion of the emx driver.
To turn off I/O limiting, use the following run-time configuration command:
# /sbin/sysconfig -r io NPort_Max_IOs = 0xFFFFFFFF
Using the default values of the attributes, assume the emx driver has 30
commands outstanding to an N_Port. When the driver tries to send another
command, the command is rejected with QUEUE FULL status from the device.
This event triggers the emx driver to decrease the internal I/O limit from
NPort_Max_IOs to a value of 30. The decreased limit prevents the emx driver
from sending new commands until an outstanding command completes
successfully. The emx driver continues to send and receive commands with
only 30 commands outstanding to the N_Port at one time. This status
continues until the time value of NPort_IORamp_Delay (by default, one
second) has elapsed. At this point the internal I/O limit increases by the
absolute value calculated from the following equation:
(NPort_Max_IOs * NPort_IORamp_Percent)/100
(256 * 10)/100 = 25
The value of the internal I/O limit then becomes 30 + 25 = 55. In this
scenario, the internal I/O limit increases every one second, which is the
current time value set for the NPort_IORamp_Delay attribute. The procedure
repeats until the internal I/O limit is equivalent to 256, the current
value of NPort_Max_IOs.
Assume that the emx driver has only five commands outstanding to an N_Port
and it receives a QUEUE FULL response from one of the outstanding I/Os.
The emx driver automatically decreases its internal I/O limit from the
value of NPort_Max_IOs to be equivalent to 20, the current value of
NPort_Min_IOs. This decrease occurs because the emx driver cannot limit
the outstanding I/Os to less than the current value of NPort_Min_IOs.
The device driver module
hwmgr(8), sys_attrs_io(5), sysconfig(8), sysconfigdb(8)
listing for E