mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 10:41:26 +00:00
- Minor external interface change: now target drivers should set for aborted commands SCST_CMD_DELIVERY_ABORTED status via scst_set_delivery_status(). In-tree drivers updated. - Fixed broken compilation if put_page_callback patch not applied to the kernel. Reported by Erez Zilber <erezz@Voltaire.COM> - Fixed several minor problems reported by David Berton <davidbrt@yahoo.com> - Fixed __exit misuse, when such functions called from __init functions. - Docs updated. - Other minor changes and cleanups. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@364 d57e44dd-8a1f-0410-8b47-8ef2f437770f
159 lines
5.4 KiB
Plaintext
159 lines
5.4 KiB
Plaintext
WARNING
|
|
|
|
This driver is in beta stages, you may want to use it in production, but you
|
|
need test it for your hardware configuration.
|
|
|
|
INTRODUCTION
|
|
|
|
This is an SCST driver for ISP Qlogic chipsets commonly used in many SCSI and
|
|
FC host bus adapters. Supported chipsets are listed in the README file; an
|
|
incomplete list of supported HBAs can be found in doc/Hardware.txt .
|
|
|
|
It is based on Matthew Jacob's multiplatform driver for ISP chipsets,
|
|
which has its own page at http://www.feral.com/isp.html . The update for SCST
|
|
was made by Stanislaw Gruszka <stf_xl@wp.pl> for Open-E Inc.
|
|
|
|
Driver operates on the same hardware as qla2x00t, but has one notable
|
|
adventage over it: support of 24xx series of Qlogic adapters.
|
|
|
|
INSTALLATION: QUICK START
|
|
|
|
Build driver with the following command
|
|
$ make
|
|
|
|
Copy the firmware image appropriate for your HBA from the Qlogic FTP server
|
|
ftp://ftp.qlogic.com/outgoing/linux/firmware/ to one of the Linux firmware
|
|
loader directories (e.g. /lib/firmware, see the udev/hotplug documentation
|
|
for your distribution).
|
|
|
|
The next step depends on whether you have other QLA modules installed. Note
|
|
that you can't load an ISP driver when you build other Qlogic drivers in the
|
|
kernel (kerel oops may occur). Other QLA modules are acceptable, but extra
|
|
care is needed, first copy modules to a directory, e.g.:
|
|
|
|
$ mkdir /root/qla_isp
|
|
$ cp linux-2.6/build/*.ko /root/qla_isp
|
|
|
|
Each time you want to run qla_isp, unload all other qla modules
|
|
|
|
$ rmmod qla2x00tgt
|
|
$ rmmod qla2400
|
|
$ rmmod qla2300
|
|
$ rmmod qla2200
|
|
$ rmmod qla2xxx
|
|
|
|
and load ISP modules directly from the created directory, e.g.:
|
|
|
|
$ insmod /root/qla_isp/isp_scst.ko
|
|
$ insmod /root/qla_isp/isp_mod.ko
|
|
|
|
If you have neither other QLA drivers from SCST (qla2x00tgt) nor kernel
|
|
(qla2xxx and friends) you can install in the standard /lib/modules directory:
|
|
|
|
$ make install
|
|
$ depmod -ea
|
|
|
|
Then load the drivers manually the first time :
|
|
|
|
$ modprobe isp_scst
|
|
$ modprobe isp_mod
|
|
|
|
Now whenever the system is booted and a QLA card is plugged, modules will load
|
|
automatically.
|
|
|
|
When the driver is loaded, enable all channels for each HBA to work in target
|
|
mode. For Fibre Channel adapters you need to write the "enable all" string
|
|
into the procfs configuration file, e.g.:
|
|
|
|
$ echo "enable all" > /proc/scsi_tgt/qla_isp/3
|
|
|
|
To unload the isp_mod.ko module you must disable target mode for all cards,
|
|
e.g.:
|
|
|
|
$ echo "disable all" > /proc/scsi_tgt/qla_isp/3
|
|
$ echo "disable all" > /proc/scsi_tgt/qla_isp/4
|
|
|
|
To attach logical units continue with normal SCST setup.
|
|
|
|
SELECTING FIRMWARE
|
|
|
|
The firmware loading interface allows for choosing the appropriate firmware.
|
|
However, some firmware images are not available from the Qlogic site, e.g.
|
|
firmware with multichannel support. That is why you can build a firmware
|
|
image into the isp_mod module. At the beginning of the isp_linux.h file you
|
|
need to comment out the following line:
|
|
|
|
#define DISABLE_FW_LOADER 1
|
|
|
|
Firmware from sources for 24xx supports multichannel (NPIV)
|
|
|
|
SUPPORTED DEVICES
|
|
|
|
You can disable support for selected chipsets by editing the isp_linux.h file.
|
|
In the following example, only the 2400 chipset is enabled:
|
|
|
|
#define ISP_DISABLE_1080_SUPPORT 1
|
|
#define ISP_DISABLE_12160_SUPPORT 1
|
|
#define ISP_DISABLE_2100_SUPPORT 1
|
|
#define ISP_DISABLE_2200_SUPPORT 1
|
|
#define ISP_DISABLE_2300_SUPPORT 1
|
|
#define ISP_DISABLE_2322_SUPPORT 1
|
|
//#define ISP_DISABLE_2400_SUPPORT 1
|
|
|
|
TARGET/INITIATOR ROLES
|
|
|
|
The driver can work as either a target or an initiator. Prior to performing
|
|
the compilation you can establish the default mode the driver will work in
|
|
by editing the file linux-2.6/build/Makefile - you need to set one of the
|
|
following values instead of ISP_ROLE_NONE
|
|
in -DISP_DEFAULT_ROLES=ISP_ROLE_NONE
|
|
|
|
ISP_ROLE_TARGET
|
|
ISP_ROLE_INITIATOR
|
|
ISP_ROLE_BOTH
|
|
|
|
You can also establish the driver role during module initialization using the
|
|
isp_roles option, e.g:
|
|
|
|
$ modprobe isp_mod isp_roles="b0300=initiator"
|
|
|
|
Number "b0300" is a DEVID value based on an address on the PCI bus, which you
|
|
can find in /proc/scsi/isp/N. Target role will be enabled automatically when
|
|
activating channels/LUNs in /proc/scsi_tgt/qla_isp/N .
|
|
|
|
The driver can also work as both a target and an initiator simultaneously, but
|
|
this will probably only function for P2P connections. To make the driver work
|
|
as a target/initator on one port with a FC switch, you can use N_PORT ID
|
|
virtualization, as seen below.
|
|
|
|
N_PORT ID VIRTUALIZATION
|
|
|
|
You can add an isp_vports option to the ISP module. It denotes the number of
|
|
ports(channels) and cannot be greater than 127. Each vport has its own WWN.
|
|
From the driver point of view each vport is a separate channel. You can define
|
|
separate role for each of the channels.
|
|
|
|
PROCFS INTERFACE
|
|
|
|
Target configuration interface is located in the following file:
|
|
/proc/scsi_tgt/qla_isp/N ; where N is the Linux SCSI host number and
|
|
is the same as for proc/scsi/isp/N and /sys/class/scsi_host/hostN files.
|
|
|
|
The process for enabling options for this file is different for FC and SPI
|
|
devices. For FC it is enabling/disabling channels, while SPI it is
|
|
enabling/disabling channels and logical units. For example:
|
|
FC:
|
|
$ echo "enable 5" > /proc/scsi_tgt/qla_isp/4
|
|
|
|
SPI:
|
|
$ echo "enable 0 1" > /proc/scsi_tgt/qla_isp/5
|
|
|
|
You may use the string "all" instead of a number e.g.:
|
|
|
|
$echo "disable all all" > /proc/scsi_tgt/qla_isp/5
|
|
|
|
When all LUNs and channels are disabled, the target role will also become
|
|
inactive. For N_PORT ID virtualization, when enabling channels, you need to
|
|
first enable channel 0; when disabling channels, you need to disable channel
|
|
0 last.
|