Embed
Email

Deadline

Document Sample

Shared by: wuzhenguang
Categories
Tags
Stats
views:
5
posted:
11/26/2011
language:
English
pages:
37
Lpfc - LightPulse Linux HBA Driver

Version 4.10n



Chapter 1 - Introduction

Audience

This document provides the information needed to use the Emulex LightPulse Fibre

Channel host bus adapter (HBA) device driver, known as lpfcdd. For system

administrators, this document includes information about the configuration files, how to

install the driver and how to boot the system with the driver installed.



At the very least, system administrators should be familiar with Linux and have access to

standard system documentation. Anyone working with this product should have some

familiarity with the nature and use of Fibre Channel.



Typographic Conventions

Bold face is used to highlight cautions and other important points.



Italics are used to mark the first occurrences of words that will subsequently be explained

or defined.



Cross-references are underlined.



Command syntax, file names, command output, and similar items are placed in

courier font.



Fibre Channel, In Brief

Fibre Channel is a general-purpose, high-throughput, low-latency interconnect. It

employs serial bit transmission over copper media, short-wave and long-wave optical

media. Cable distances may range up to 30 meters for copper media and up to 10

kilometers for optical media. Transmission speeds currently range up to 2 gigabaud, or

roughly 200 megabytes per second. Fibre Channel transmission protocols provide high

reliability, with bit error rates less than 1 in 10-12. Interconnects may be configured as

point-to-point, loop, or fabric (network switch).



The Fibre Channel specifications provide for the emulation of two traditional protocols:

SCSI and IP. For storage, Fibre Channel provides an emulation of SCSI; this emulation

is dubbed FCP, short for Fibre Channel Protocol – a confusing acronym, in that it refers

specifically to SCSI-on-Fibre Channel rather than to the lower-level protocols by which

Fibre Channel itself operates. Throughout this document, we generally refer to FCP;

when we mention SCSI, we are referring to the particular SCSI properties within FCP, or

to the original SCSI protocol. For networking, Fibre Channel provides an encapsulation

of IP (Internet Protocol), referred to in this document simply as IP.

General Description of the Device Driver

A device driver acts as a translator between an operating system and the hardware so that

the operating system‟s kernel need not know the specifics of the device it uses. A device

driver contains all of the code specific to operating a device and provides an input/output

(I/O) interface to the rest of the system.



The Emulex LightPulse HBA device drivers for Linux (lpfcdd lpfndd and lpfcdfc),

simultaneously support three functions: FCP and IP over Fibre Channel and a diagnostic

interface. The FCP function provides access to Fibre Channel disk and tape drives. The

IP function provides peer-to-peer networking, such as TCP or UDP, between Fibre

Channel hosts. The diagnostic function provides an interface to the lputil utility for

adapter maitenance. The section of the driver that handles FCP is lpfcdd; the section that

handles IP is lpfndd; the section that handles diagnostics is lpfcdfc. In this document,

unless otherwise specified, lpfcdd also refers to the driver as a whole.



Both the IP and FCP functions sit on top of common code in the driver that interfaces to

the LightPulse adapter and handles Fibre Channel issues. The driver can be loaded

dynamically, at any time (with insmod), although typically the driver is loaded when the

host boots. The IP and FCP functions can be loaded separately.



The following diagram shows the software stack for network operations and SCSI

operations from the standpoint of a Linux host.



Application Application



Kernel Kernel



Protocol Stack Linux Common SCSI

(TCP/IP) Framework for HBAs





Network interface - lpfn SCSI target driver



LightPulse IP HBA LightPulse FCP/SCSI

driver, lpfndd HBA Driver, lpfcdd





Common Driver

Code

lpfcdd



Emulex LightPulse Host

Bus Adapter (HBA)





Fibre Channel Interconnect

The FCP part of the driver is implemented within the Linux common SCSI framework,

which defines the driver‟s expected behaviors and entry points from Linux. (Recall that

FCP emulates SCSI.) The SCSI target driver generates SCSI commands for each device

in use, sending those commands to the lpfcdd HBA driver, which in turn has the job of

transporting those commands to the device itself.



The IP part of the driver, lpfndd, uses the Linux Network driver interface which defines

the driver‟s expected behaviors, entry points from Linux and allows multiple processes

to open the device. The lpfndd driver is dependent on the lpfcdd driver being loaded first.



The diagnostic part of the driver, lpfcdfc, uses the Linux ioctl interface which defines the

entry points from Linux and allows multiple processes to open the device through a

special file /dev/lpfcdfc. The lpfcdfc functionality is integrated into the lpfcdd driver.

Chapter 2 - Specifics of the Device Driver

This chapter lays out the specifics of the device driver: what operating systems it

supports, what hardware it supports, and what files and variables you may need to

modify. It also discusses aspects of the driver‟s behavior that you must consider to

successfully install and boot the system with the driver included.



Supported Operating Systems

The lpfcdd device driver supports an open source release that should run on any version

version of the LINUX kernel after 2.2.14.



Supported Hardware

On the hardware side, the lpfcdd driver supports Intel x86 platforms with Peripheral

Component Interconnect (PCI) host bus subsystems.



The lpfcdd driver supports the Emulex LightPulse Family of Fibre Channel PCI host

adapters, including the LightPulse 7000, LightPulse 8000, LightPulse 850, LightPulse

9000, and LightPulse950.



On all platforms, lpfcdd should be run with a minimum of 64 megabytes of host memory.



Important Files

You need to be aware of the following files because you may need to modify them after

installing the driver. You might also need to modify one or more of these files if your

hardware configuration changes, e.g., by adding additional disk drives to the Fibre

Channel interface.

/etc/conf.modules or /etc/modules.conf

Configuration file specifying alias for SCSI and IP drivers



/etc/lilo.conf

Configuration file specifying boot image parameters



/etc/sysconfig/network-scripts/ifcfg-lpfn

Configuration files specifying adapters for use with IP networking. For each

LightPulse adapter involved in networking, there must be a ifcfg-lpfn file

containing the host’s name on that network and other network specific information.

Note that this file need not be present if the driver is only being used for SCSI

support.



Configuring these files is discussed in greater detail in the following sections.

Configuration

The installation procedure for lpfcdd handles common cases but your hardware setup may

require additional configuration changes beyond the common case. Ideally, you will

make these changes when you install the driver and before you reboot the machine.



Device Numbering

When configuring the driver, there are various configuration parameters that rely upon

device numbers. This section will attempt to explain the two different levels of device

numbering and how they apply to specific configuration parameters.



There are two different levels of device numbering. The first level of device numbering is

the driver instance number. This is the number that gets displayed in log messages to

syslog or the console, e.g. lpfcX. Typically the driver instance number is equal to the

adapter number.



The second level of numbering is the SCSI device number. This number is assigned by

the system for each SCSI target it detects. It is the typically in the special files created to

access each SCSI device, e.g. /dev/sd[a-d][a-z]. Linux supports a total of 128 SCSI

devices per system. Thus, a host could support disk devices from /dev/sda through

/dev/sddx.



Once these numbers get assigned, they will stay the same between reboots if there are no

hardware changes to the system or Fibre Channel network.



lpfcdd Configuration

All the variables that control driver initialization are set to their default values. The

administrator can change these values by editing the lpfc.conf.c file as described during

driver installation.



The variables described in this section are the ones a system administrator is most likely

to be concerned with. The table that follows summarizes the variables in this section. It is

not a substitute for reading the remainder of this section.



Important: These values are set per adapter; e.g., setting lpfc_num_iocbs to 1000

allocates 1000 I/O control blocks for every LightPulse present in the host machine.



Configuration parameters effect all LightPulse adapters in the system. Currently there is

no way to change the configuration of individual adapters.



In the descriptions below, the annotation (F) means that the variable only has meaning

when FCP functionality is enabled in lpfcdd; the annotation (I) means that the variable

only has meaning when IP functionality is enabled in lpfcdd. Variables lacking either

annotation have meaning for the entire driver, regardless of which specific functionality is

enabled. A Boolean variable should be set to either 0 (FALSE) or 1 (TRUE), although

any non-zero value will suffice for TRUE. The infinity symbol, , denotes the largest

possible unsigned integer value (e.g., 232-1). NI means not implemented yet.







Variable Default Min Max Comments



lpfc_ack0support 0 0 1 Use ACK0 for Class 2



lpfc_automap 1 0 3 Automatically assign SCSI

IDs to FCP targets detected.



lpfc_dqfull_throttle_up 1 0 128 Amount to increment LUN

_inc queue depth each time



lpfc_dqfull_throttle_up 1 0 30 Time interval, in secs, to

_time increment LUN queue depth



lpfc_check_cond_err 1 0 1 (Boolean) Treat certain FCP

Check conditions as FCP RSP

errors.



lpfc_delay_rsp_err 1 0 1 (Boolean) Treat FCP RSP errs

like no-device-delay.



lpfc_fcp_bind_WWNN Inactive N/A N/A Bind specific SCSI IDs to

targets based on Fibre

Channel WWNN.



lpfc_fcp_bind_WWPN Inactive N/A N/A Bind specific SCSI IDs to

targets based on Fibre

Channel WWPN.



lpfc_fcp_bind_DID Inactive N/A N/A Bind specific SCSI IDs to

targets based on Fibre

Channel Port ID.



lpfc_bind_entries 0 0 512 Number of entries in the

lpfc_fcp_bind_XXX array



lpfc_fcp_class 3 2 3 Fibre Channel class for FCP

data transmission.



lpfc_fcpfabric_tmo 0 0 255 Extra FCP cmd timeout when

connected to a fabric (in secs).



lpfc_ip_class 3 2 3 Fibre Channel class for IP

data transmission

Variable Default Min Max Comments



lpfc_linkdown_tmo 30 0 255 (seconds) How long driver

waits before deciding FC link

is down



lpfc_link_speed 0 0 2 Set the link speed: auto

detect, 1G, 2G



lpfc_lun_queue_depth 30 1 128 Default max commands sent

to a single logical unit(disk)



lpfc_network_on 1 0 1 (Boolean) Turn on IP

networking.



lpfc_no_device_delay 1 0 30 Sec delay to fail back an I/O



lpfc_nodev_holdio 0 0 1 (Boolean) Hold I/O err if

device disappears



lpfc_nodev_tmo 0 0 255 (seconds) to hold I/O if device

disappears



lpfc_num_bufs 2048 64 4,096 ELS and misc data buffers



lpfc_num_iocbs 2048 128 10,240 Adapter command/response

structures



lpfc_scandown 2 0 2 Select method for ALPA to

SCSI ID mapping



lpfc_tgt_queue_depth 0 0 10240 Default max commands sent

to a single target



lpfc_topology 0x04 N/A N/A Fibre Channel link topology

(defaults to arbitrated loop)



lpfc_use_adisc 0 0 1 (Boolean) Send ADISC

instead of PLOGI for device

discovery or RSCN



lpfc_log_only 0 0 1 (Boolean) Logging to log file

only



lpfc_log_verbose 0 0 0xff (bit mask) Extra activity

logging



lpfc_post_ip_buf 128 64 1024 Buffers to post to IP ring

Variable Default Min Max Comments



lpfc_xmt_que_size 256 128 10,240 Transmit queue length for

mbufs



lpfc_zone_rscn 0 0 1 (Boolean) Check NameServer

for RSCNs







lpfc_ack0support

If ack0 is 1, the adapter will try to use ACK0 when running Class 2 traffic to a device. If

the device doesn‟t support ACK0, then the adapter will use ACK1. If ack0 is 0, only

ACK1 will be used when running Class2 traffic.



lpfc_automap (F)

If automap is 1, SCSI IDs for all FCP nodes without persistent bindings will be

automatically generated. If FCP devices are added to or removed from the Fibre Channel

network when the system is down, there is no guarantee that these SCSI IDs will remain

the same when the system is booted again. If one of the FCP binding methods below is

specified, then automap devices will use the same mapping method to try to preserve

SCSI IDs between link down and link up. If no persistent binding method is specified, the

binding is by WWNN for automap 1 (default), by WWPN for automap 2, and by D_ID

for automap 3. If automap is 0, only devices with persistent bindings will be recognized

by the system.



lpfc_check_cond_err (F)

The driver will treat check condition 0x44, Internal Target Failure, and check condition

0x20, Invalid Command Operation Code, as FCP RSP errors.



lpfc_delay_rsp_err (F)



The driver will delay FCP RSP errors being returned to the upper SCSI layer based on the

no-device-delay configuration parameter.



lpfc_dqfull_throttle_up_inc (F)



lpfc_dqfull_throttle_up_time (F)

The dqfull-throttle causes lpfc to decrement a LUNs throttle (maximum queue depth) if a

queue full condition is received from the target. The queue depth will be decremented

down to a minimum of 3. The varibles lpfc_dqfull_throttle_up_inc and

lpfc_dqfull_throttle_up_time are used to restore the queue depth back to the original. The

lpfc_dqfull_throttle_up_time parameter defines a time, in seconds, that is used to tell

when to increase the current queue depth. If the current queue depth isn't equal to the

lpfc_lun_queue_depth, and the driver stop_send_io flag is equal to 0 for that device,

increment the current queue depth by lpfc_dqfull_throttle_up_inc (don't exceed the

lpfc_lun_queue_depth). So, if both parameters are set to 1, then driver increment the

current queue depth once per second until it hits the lpfc_lun_queue_depth.

lpfc_fcp_bind_WWNN (F)

Setup persistent FCP bindings based on a target device‟s WWNN. This binding

guarantees that target assignments will be preserved between reboots. The format for a

bind entry is “NNNNNNNNNNNNNNNN:lpfcXtY” Where NNNNNNNNNNNNNNNN

is a 16 digit BCD representation of the targets World-Wide Node Name, X is the driver

instance number and Y is the target assignment. Multiple entries must be separated by a

comma (,) with the last entry terminated with a semi-colon (;). Currently there is no way

to map an adapter target assignment to a specific sd device, /dev/sdX. A sample entry

follows:



char *lpfc_fcp_bind_WWNN[]={"20000020370c396f:lpfc1t0",

“20000020370c27f7:lpfc0t2"};



lpfc_fcp_bind_WWPN (F)

Setup persistent FCP bindings based on a target device‟s WWPN. This binding

guarantees that target assignments will be preserved between reboots. The format for a

bind entry is “NNNNNNNNNNNNNNNN:lpfcXtY” Where NNNNNNNNNNNNNNNN

is a 16 digit BCD representation of the targets World-Wide Port Name, X is the driver

instance number and Y is the target assignment. Multiple entries must be separated by a

comma (,) with the last entry terminated with a semi-colon (;). Currently there is no way

to map an adapter target assignment to a specific sd device, /dev/sdX. A sample entry

follows:



char *lpfc_fcp_bind_WWPN[]={"21000020370cf8263:lpfc1t0"};



lpfc_fcp_bind_DID (F)



Setup persistent FCP bindings based on a target device‟s Port ID. This binding guarantees

that target assignments will be preserved between reboots. The format for a bind entry is

“NNNNNN:lpfcXtY” Where NNNNNN is a 6 digit BCD representation of the targets

Port ID, X is the driver instance number and Y is the target assignment. Multiple entries

must be separated by a comma (,) with the last entry terminated with a semi-colon (;).

Currently there is no way to map an adapter target assignment to a specific sd device,

/dev/sdX. A sample entry follows:



char *lpfc_fcp_bind_DID[]={"0000ef:lpfc0t0"};



lpfc_bind_entries (F)



The number of persistent FCP binding entries in the fcp-bind-XXX array of bindings.



lpfc_fcp_class (F)



The lpfc driver is capable of transmitting FCP data in Class2 or Class 3. The lpfc driver

defaults to using Class 3 transmission.



lpfc_fcpfabric_tmo (F)



Extra timeout value, in seconds, to be applied to each FCP command sent. When

connecting through a fabric, certain devices may require a longer timeout value.

lpfc_ip_class (I)



Fibre Channel is capable of transmitting IP data in Class2 or Class 3. The lpfc driver

defaults to using Class 3 transmission.



lpfc_linkdown_tmo

How long the driver will wait (1 to 255 seconds) before declaring the Fibre Channel link

to be down. Commands waiting to be serviced will be aborted. For instance, FCP

commands will be returned to the target driver. The lower this value is, the quicker the

driver will fail commands back to the upper levels. There is a tradeoff here: small values

risk retrying commands when the link is bouncing, while large values risk delaying

failover in a redundant loop environment. Setting linkdown-tmo to 0 will cause all

commands issued to the device driver to be held internally (never failed) until the link

comes back up.



lpfc_link_speed

This causes lpfc to set the adapter link speed to auto-detect (0), 1 gigabit (1) or 2 gigabits

(2). This setting only applies to the 2 GB compatable LightPulse adapters.



lpfc_lun_queue_depth (F)

The driver uses this value as the default limit for the number of simultaneous commands

to issue to a single logical unit on a single target on the loop. A single logical unit will

never be sent more commands than allowed by lpfc_lun_queue_depth; however, less may

be sent when lpfc_tgt_queue_depth is reached for the entire target. The minimum value

for lpfc_lun_queue_depth is 1.



lpfc_network_on

This variable controls whether lpfc provides IP networking functionality over Fibre

Channel. This variable is a Boolean: when zero, IP networking is disabled; when non-

zero, IP networking is enabled.



lpfc_no_device_delay

This variable [0 or 1 to 30] - determines the length of the interval between deciding to fail

an I/O because there is no way to communicate with its particular device (e.g., due to

device failure or device removal) and actually failing the command. A value of zero

implies no delay whatsoever. This delay is specified in seconds. A value of 1 second is

recommended when communicating with any Tachyon based device.



lpfc_nodev_holdio

This variable controls if I/O errors are held by the driver if a device on the loop

disappears. If set, I/O errors will be held until the device returns back to the loop

(potentially indefinitely). The upper scsi layer may retry the command once the error is

returned.



lpfc_nodev_tmo

This variable controls how long I/O errors are held by the driver if a device on the loop

disappears. If set, I/O errors will be held for the specified number of seconds. The upper

scsi layer may retry the command once the error is returned.

lpfc_num_bufs

This variable specifies the number of command buffers to allocate. These buffers are used

for Fibre Channel Extended Link Services (ELS), and one for each FCP command issued

in SLI-2 mode. If you want to queue lots of FCP commands to the adapter, then you

should increase num-bufs for better performance. These buffers consume physical

memory and are also used by the device driver to process loop initialization and re-

discovery activities. Important: The driver must always be configured with at least

several dozen ELS command buffers; we recommend at least 256.



lpfc_num_iocbs

This variable indicates the number of Input/Output control block (IOCB) buffers to

allocate. IOCBs are internal data structures used to send and receive I/O requests to and

from the LightPulse hardware. Too few IOCBs can temporarily prevent the driver from

communicating with the adapter, thus lowering performance. (This condition is not

fatal.) If you run heavy IP traffic, you should increase num-iocbs for better performance.



lpfc_scandown (F)



There are three scanning algorithms used to map an ALPA to a SCSI ID in a private loop.

Refer to the “informative annex” of the FC-AL profile, which describes the algorithm for

this translation. Scan-down values 0 and 1 do not apply if a loop map is obtained. See the

FC-AL profile for the definition of a loop map. If the adapter is not attached to a fabric,

these parameters do not apply (use persistent binding). If persistent binding is used, scan-

down MUST not be 2.



If scan-down is 1,



 SCSI IDs are scanned starting from ALPA 0xEF down through ALPA 1 (e.g. If only

two targets exist on the loop, the one with the highest ALPA gets assigned SCSI ID 0

and the other one gets SCSI ID 1).



If scan-down is 0,



 SCSI IDs are scanned starting from ALPA 1 on up (e.g. If only two targets exist on

the loop, the one with the lowest ALPA gets assigned SCSI ID 0 and the other one

gets SCSI ID 1).



If scan-down is 2 (default value),



 SCSI IDs are hard coded based on the ALPA (0xEF=SCSI ID 0, 0xE8=SCSI ID

1,…).



lpfc_tgt_queue_depth (F)

The driver uses this value as the default limit for the number of simultaneous commands

to issue to a single target on the loop. A single target will never be sent more commands

than allowed by lpfc_tgt_queue_depth. If set to 0, only lpfc_lun_queue_depth is used to

throttle commands to a device.

lpfc_topology

This variable controls the Fibre Channel topology expected by lpfc at boot time. Fibre

Channel offers point-to-point, fabric, and arbitrated loop topologies. This variable

encodes these topologies as follows:



0 Attempt loop mode, if it fails attempt point-to-point mode



2 Attempt point-to-point mode only



4 Attempt loop mode only



6 Attempt point-to-point mode, if it fails attempt loop mode (default)



To make the adapter operate as an N_Port, select point-to-point mode (used for N_Port to

F_Port, and N_Port to N_Port connections). To make the adapter operate in a Fibre

Channel loop as an NL_Port, select loop mode (used for private loop and public loop

topologies). The driver will reject an attempt to set the topology to a value not in the

above list. The auto-topology settings 0 and 6 (which is the default) will not work unless

the adapter is using firmware version 3.20 or higher.



lpfc_use_adisc

This variable controls the ELS command used for FCP address authentication during

discovery. If set, ADISC is used, otherwise, PLOGI is used.



lpfc_log_only

When set to 1, log messages are only logged to syslog. When set to 0, log messages are

also printed on the console.



lpfc_log_verbose

(bit mask) When set to non-zero this variable causes lpfc to generate additional messages

concerning the state of the driver and the I/O operations it carries out. These messages

may go to the system console and/or the system log file, /var/log/messages. See Error

Messages for detailed information on the bit mask.



lpfc_post_ip_buf (I)



This variable specifies the number 4K Network buffers to allocate and post to the fibre

channel IP ring. Increase this setting for better IP performance under heavy loading.



lpfc_xmt_que_size (I)



This variable specifies the number of network packets that can be queued or outstanding

at any time in the driver. Increase this setting for better IP performance under heavy

loading.



lpfc_zone_rscn

If zone-rscn is 1, the driver will check the NameServer data to see if an N_Port ID

received in an RSCN is pertinent to this adapter. This behavior is necessary when running

soft zoning in a Brocade fabric. If zone-rscn is 0, the RSCN is assumed to apply to this

adapter, and no NameServer query is performed.

Probing for FCP Targets -- Target Driver Configuration

The Linux lpfcdd target driver can support up to 255 devices. By default, the Linux

kernel supports between 1 and 8 LUNs / SCSI device (depending on the Linux kernel).

To get more then the default, one must modify the /etc/lilo.conf file accordingly. For the

label describing your configuration, after the read-only line, add the following line:



append=”max_scsi_luns=X”



Where X is the number of LUNs / SCSI device desired, between 1 and 128. In addition,

you should make sure “Proble all LUNs” is marked in the scsi subsystem configuration

of make menuconfig.



Configuring IP Networking

(/etc/sysconfig/network-scripts/ifcfg-lpfn)

When configuring for IP service you need to supply the name of the host machine that

Linux should use for a particular network interface. At installation time, if you indicated

that lpfc should provide IP networking service over Fibre Channel you should set up a

ifcfg-lpfn file for each LightPulse adapter being configured. Upon rebooting,

Linux will then automatically configure and set up the adapters for networking.



Note that whatever names you specify in these ifcfg-lpfn files must have valid IP

addresses associated with them, via NIS or DNS or whatever hostname-to-IP-address

translation scheme you employ. Here is an example ifcfg-lpfn file:

DEVICE=lpfnX # Where X is the lpfc interface number

IPADDR=xxx.xxx.xxx.xxx # A valid IP address for this interface

BROADCAST=xxx.xxx.xxx.xxx # The broadcast address for this interface

NETWORK=xxx.xxx.xxx.xxx # The network address for this interface

NETMASK=255.255.255.0 # The network Mask for the interface

ONBOOT=yes





Note: the file, ifcfg-eth0 can also be used as an example. You will have to reboot the

machine for these changes to take effect.



System-Wide Configuration (/etc/lilo.conf)

This configuration file is used to define a boot image. After the driver is installed a new

boot image should be defined with in this file. Check Linux man pages, lilo.conf(5).







Driver Configuration (lpfc.conf.c)

This configuration file is used to modify configuration parameters for the driver.

Chapter 3 - Installation and Boot Instructions

3.1 Build / Installation Instructions

To install the driver and boot the system, follow these instructions.



1. You must be running as root. Therefore, you must login as or su to

root.



2. For this release, you must build your binary driver from the

SourceBuild directory. Currently we run under two different

platforms, Intel i386 and ia64. There is a different tarball (lpfc-

i386.tar, lpfc-ia64.tar) for each supported platform.



2.1 Build Driver module



# tar xvf

# cd SourceBuild

This directory contains the necessary tools to build the drivers, from

source, for a specific LINUX operating system.



There are 2 drivers used to support the Emulex LightPulse Fibre Channel

Adapters:

lpfcdd - main driver, FCP support, Diagnostic support

lpfndd - IP support

NOTE: lpfndd is dependent on lpfcdd being loaded first



The following files should be in the SourceBuild directory:



Makefile.module Used to build driver as a standalone module

Makefile.kernel Used to build driver under the /usr/src/linux kernel

subtree

diag_load Used to create special file for lpfcdfc driver

diag_unload Used to clean special files and unload lpfcdfc driver

fcLINUXfcp.c Source code for lpfcdd driver

fcLINUXlan.c Source code for lpfndd driver

lpfc.conf.c Configuration File for main driver, lpfcdd

lpfcdriver Common support library for driver

lpfcdriverMCON Common support library for driver (ia64 LINUX only)

dfc Diagnostic utility for driver debug

lputil Diagnostic utility for adapter maitenance

include Directory contains headers used by the above drivers

dfc.h fc_ertn.h fc.h fc_hw.h fc_os.h fcdds.h fcdiag.h

fcfgparm.h





Before running the Makefile, make sure /usr/src/linux is linked to the

source tree desired and /lib/modules/kernel_version exists. The source

to the entire kernel tree should be on your system, not just header

files. Both kernel-headers and kernel-source RPMs must be installed. If

you have a different kernel base directory, other than /usr/src/linux,

you MUST change the BASEINCLUDE variable in the Makefile accordingly.

For a non-SMP kernel module (i386 platform only) you MUST:

Edit the Makefile, make sure CFLAGS does not have -D__SMP__=1 defined



# Edit lpfc.conf.c, if needed

# make build # Will build both drivers

# make install # Will install both drivers under

# /lib/modules/kernel_version

# or you can insmod the drivers manually





2.2 Build Driver into kernel



Before running the Makefile, make sure /usr/src/linux is linked to the

source tree desired. If you have a different kernel base directory,

other then /usr/src/linux, you MUST change the BASEINCLUDE variable in

the Makefile accordingly and substitute your new base for /usr/src/linux

in the following steps.





SCSI functionality



# cd SourceBuild

# mkdir /usr/src/linux/drivers/scsi/lpfc

# find . –print | cpio –pdumv /usr/src/linux/drivers/scsi/lpfc

# cd /usr/src/linux/drivers/scsi/lpfc

# cp Makefile.kernel Makefile

# Edit the Makefile and lpfc.conf.c files if needed



# cd /usr/src/linux (For some 2.4 based kernels) This will allow scsi/lpfc

Makefile to be envoked BEFORE the scsi Makefile.

Edit Rules.make and remove sort from the line

From:

subdir-list = $(patsubst %,_subdir_%,$(SUB_DIRS))





# cd /usr/src/linux/drivers

# Edit Makefile

Just BEFORE $(CONFIG_SCSI) adds scsi to the directory lists, add a check

for $(CONFIG_SCSI_LPFC) to add scsi/lpfc to the directory lists. We want

the scsi/lpfc Makefile to be envoked BEFORE the scsi Makefile.



# cd /usr/src/linux/drivers/scsi

# Edit Config.in and add (alphabetical order)

> dep_tristate 'Emulex LightPulse Fibre Channel support' CONFIG_SCSI_LPFC

$CONFIG_SCSI

# Edit Makefile and add (with other CONFIG_SCSI_devices)

Add a check for if $(CONFIG_SCSI_LPFC) is defined, add lpfcdd.o to the object

list.

# Edit hosts.c and add (For some 2.2 based kernels)

> #ifdef CONFIG_SCSI_LPFC

> #include “lpfc/include/fc_os.h”

> #endif

At the end of the definition for Scsi_Host_Template, BEFORE “Removable

host adapters add:

> #ifdef CONFIG_SCSI_LPFC

> EMULEXFC,

> #endif

TCP/IP Networking functionality



# cd /usr/src/linux/drivers/net

# Edit Config.in and add within the "if [ "$CONFIG_NET_FC" = "y" ]; then" logic

> dep_tristate 'Emulex LightPules Fibre Channel support' CONFIG_NET_LPFC

$CONFIG_SCSI

# Edit Space.c ONLY if you are building the driver into the kernel.

Add the following lines within the appropriate CONFIG_NET_FC ifdef:

> static int lpfnif_probe(struct net_device *dev)

> {

> lpfn_probe();

> return 0;

> }

Add the following lines within the appropriate CONFIG_NET_FC ifdef,

after

#define NEXT_DEV (&fc0_dev):

> static struct net_device lpfn_dev = {

> "lpfn", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, lpfnif_probe};

> # undef NEXT_DEV

> # define NEXT_DEV (&lpfn_dev)







Follow normal procedures for building LINUX kernel and include

Emulex LightPulse Fibre Channel support

# cd /usr/src/linux

# make mrproper

# make menuconfig

Select „Emulex LightPulse Fibre Channel support‟ under SCSI low level

drivers menu for FCP support.

Select „Probe all LUNs on each SCSI device‟ under the SCSI support menu

if you want to support FCP devices that have multiple LUNs.

Select „Fibre Channel driver support‟ „Emulex LightPulse Fibre Channel

support‟ under Network Device support menu for IP support.



If you Select building the driver into the kernel run

# make dep

# make clean

# make install



# cat vmlinux > /boot/efi/vmlinuxX (for ia64 only)





If you Select module support for the driver you can also run

# make modules

# make modules_install





3. At this point, you should have 2 driver modules, lpfcdd.o and lpfndd.o, that need to be

configured into the system



Edit /etc/conf.modules to add SCSI and IP modules.



Add the following line to add a SCSI module:

alias scsi_hostadapter lpfcdd



Add the following line to add an IP module:

alias lpfnX lpfndd



where X is the interface number, 0 thru 7.



Note: If you want to configure SCSI only, just add the scsi_hostadapter line. The

IP module is dependent on the SCSI modules being there, so you cannot configure

just IP.



4. Run the following command to update your system with the information you added to

/etc/conf.modules:

depmod -a





5. Edit /etc/sysconfig/network-scripts/ifcfg-lpfnX.



Where X is the interface number, 0 thru 7. This file should be created if you wish to

configure IP. Use /etc/sysconfig/network-scripts/ifcfg-eth0 as an example. See

previous section for details.



6. Edit /etc/lilo.conf to specify boot / startup parameters



Typically it‟s a good idea to keep a boot image record that is known good so you can

boot the system in case of problems. A boot image record consists of lines between

“image=kernel_version” entries. An example of a default /etc/lilo.conf follows:

boot=/dev/sda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

default=linux

image=/boot/vmlinuz-kernel_version

label=linux

root=/dev/sda8

initrd=/boot/initrd-kernel_version.img

read-only

To add a new boot record for our driver, the following lines should be appended to

the end of the file:

image=/boot/vmlinuz-kernel_version

label=new_label

root=/dev/sda8

initrd=/boot/new_image_filename

read-only

append=”max_scsi_luns=128”



Note: Currently lpfc is not supported as the root device, so you should keep the

“root=/dev/xxx” parameter the same.

7. Configure LUN support



By default, the Linux kernel doesn‟t support LUNs. To get multiple LUNs, one must

add the line append=”max_scsi_luns=LUNs”. Where LUNs is the number of LUNs

per SCSI device. Adding this line is optional.



8. Build a boot image



The boot image new_image_name must match the name specified

in the /etc/lilo.conf file. Run the commands:

rm –f /boot/new_image_filename



/sbin/mkinitrd /boot/new_image_name kernel_version



9. Load the boot image



Run the commands:

lilo -t -v To check out the boot image



lilo -v To load it



10. Reboot the system to incorporate the new driver. At the shell prompt, type the

following:

# sync

# reboot



11. Select the boot image to use



As the system reboots, you will be prompted with LILO boot: At this point you

should enter the name of the label of you boot image, new_label in the above

example, or just hit enter and the default boot image will be loaded. The default boot

image is the first one defined in the lilo.conf file.



12. Use MAKEDEV to generate SCSI special files



By default, there are SCSI special files for the first 16 SCSI devices,

/dev/sd[abcdefghijklmnop]. If you wish to generate additional SCSI special files, the

MAKEDEV command in the /dev directory should be used. See, man MAKEDEV,

for details.



13. Setup diagnostic utilities



Go to the directory where you extracted the distribution image in Step 2. Type the

following commands:

# go to the SourceBuld directory

cd SourceBuild

# To make special files needed for this interface

sh diag_load

# Make a directory to save diagnostic utilities

mkdir /usr/sbin/lpfc

# Copy utilities to directory

cp dfc lputil /usr/sbin/lpfc

The system will reboot to multi-user mode and the Emulex LightPulse will be available

for use. NOTE: whenever there is a change to a driver module (lpfcdd lpfcdfc or lpfndd),

the file /etc/conf.modules, or the file /etc/lilo.conf; steps 7 through 10 need to be re-run

for the changes to take effect.







3.2 Using lpfcdd as the boot device

It is possible to use a device, connected to the lpfcdd driver, as the boot device. The only

restriction is you must be booted off an existing SCSI or IDE boot / root device and

excercise the following steps:



1. Prepare boot image (Note the use of --preload to load lpfcdd before other modules):

/sbin/mkinitrd --preload lpfcdd /boot/new.img



2. Create a boot floppy, insert a floppy disk into the drive

/sbin/mkbootdisk

mount /mnt/floppy

cp /boot/new.img /mnt/floppy/initrd.img





3. Identify the Fibre Channel device you wish to use as the boot / root device, /dev/sdX .

Create partitions and make file systems on the Fibre Channel boot drive.

fdisk /dev/sdX

Device Boot Start End Blocks Id System

/dev/sdX1 1 4 32098+ 83 Linux <==+25M

/dev/sdX2 5 13 72292+ 82 Linux swap <==+64M

/dev/sdX3 14 1106 8779522+ 83 Linux <==end of device



mkfs.ext2 /dev/sdX1

mkfs.ext2 /dev/sdX3

mkswap /dev/sdX2

mount /dev/sdX1 /mnt0

mount /dev/sdX3 /mnt1





4. Copy the file system from the running system (you can use any other procedure to copy

the system)

cd /

tar cf - ./bin ./dev ./etc ./lib ./misc ./mnt ./root ./sbin ./tmp ./usr

./var ./home | (cd /mnt1;tar xf -)

cd /boot

tar cf - . | (cd /mnt0;tar xf -)

cd /mnt1

mkdir boot proc home

5. Modify fstab on the Fibre Channel boot disk (you can keep old SCSI drives in fstab, just

change their devs to the correct one and mkdir their mount points)

cd /mnt1/etc



Edit fstab, change to:

/dev/sdX3 / ext2 defaults 1 1

/dev/sdX1 /boot ext2 defaults 1 2

/dev/sdX2 swap swap defaults 0 0

/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0

.

. <==other drives (CD for example)

.

none /proc proc defaults 0 0

none /dev/pts devpts gid=5,mode=620 0 0







6. Boot using the floppy we made in step 2



On LILO boot prompt type

linux root=/dev/sdX3



From now on, we are dealing with FC boot disk





7. Modify /etc/lilo.conf as follows:

boot=/dev/sdX

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

default=linux



image=/boot/vmlinuz-2.2.12-20 <== whatever kernel version you are

using

label=linux

initrd=/boot/new.img

read-only

root=/dev/sdX3

cd /boot



rm map



lilo -v







8 . Reboot without the floppy. If another SCSI adapter BIOS starts before Emulex's

BIOS, this adapter must be disabled. Otherwise, the lpfcdd module will be loaded first

and the other SCSI will be second.

Chapter 4 - Operational Issues and Known Bugs

The following operational issues and bugs were known at the time the documentation was

created.



An operational issue is a property of the driver alone or in conjunction with Linux, that

results in behavior worthy of being called to the attention of the system administrator. A

bug is a Linux defect, an lpfc driver defect, a host bus adapter hardware or firmware

defect, or a disk drive hardware or firmware defect that may be fixed in a subsequent

revision of the software or hardware in question.



Operational Issues

FCP

Discovering Disk Drives



The user can simply enter the command:

cat /proc/scsi/scsi



to list all the SCSI devices discovered at boot time.



Sometimes, the driver recognizes disk drives at boot time but you won‟t be able to use

those drives because special file entries for them do not exist. By default Linux provides

special files for up to 16 SCSI devices. With our driver, targets 1 through 255 are

supported, with up to 128 LUNs per target. To create additional special files, use the

MAKEDEV command in the /dev directory.



Different SCSI Target IDs on Different Hosts



A Fibre Channel target is assigned its D_ID at loop initialization time; the SCSI target ID

for that target is assigned by the device driver when the device is first discovered. It is

possible for the D_ID to change between one loop initialization and the next. Every time

a system boots or a target is added to or removed from the Fibre Channel, the loop will be

re-initialized. After a system has booted, it will maintain a constant view of the same

target ID because the driver software remaps the SCSI target ID to the new D_ID on the

fly. However, a second system may use a different SCSI target ID for that target. Thus,

an administrator seeking to work with the same target across multiple hosts must be

prepared to encounter the situation where the same Fibre Channel target is known by

different SCSI target IDs. The persistent binding feature of this device driver is currently

NOT supported.

Common Problems

This section deals with common failure modes, what they mean, and how to fix them.



LIP type F8



Some disk drive firmware does not recover from a LIP type F8 in the way expected by

other Fibre Channel devices; the result can be a loop full of devices that are all hopelessly

confused. Usually, the best that can be done for recovering from this situation is to

reboot all the hosts involved and power cycle all the disk drives involved.



Unfortunately, it may be difficult to realize that an F8 LIP has happened: subsequent

loop events may obscure the relevant log messages on the console or in the system log.

The Emulex Digital Hub will bypass devices sending LIP F8, and keep your loop up and

running.



Operation with other installed SCSI drivers



Currently, in Linux, there is a potential probem that may result if the lpfcdd driver is

installed on a system that already has an operational SCSI driver from another vendor.

When looking through /etc/conf.modules, Linux loads the drivers and assigns SCSI

devices (/dev/sdX), based on the drivers name, in alphabetical order.



For example, lets say an Adaptec driver is already installed, with the root / boot device on

/dev/sda. The lpfcdd driver will be loaded after the aha driver, since „a‟ comes before „l‟,

and will not effect the device assignment done by Linux (/dev/sda will still be root /

boot). However, if a NCR driver is already installed, with the root / boot device on

/dev/sda, the lpfcdd driver will be loaded before the ncr driver, since „l‟ comes before „n‟.

This will effect device assignment since the first device on lpfcdd will be assigned

/dev/sda. Also, the addition / removal of lpfcdd devices will effect what device, /dev/sdX,

is assigned to the NCR driver root / boot device.



To get around this effect, the administrator may rename our driver zlpfcdd in the file

/etc/conf.modules, and the driver module to zlpfcdd.o This will cause the NCR driver to

be loaded first. Another way of accomplishing this is by using the –preload option for

mkinitrd.



Operation as the boot / root device



You must first have a SCSI or IDE boot / root device in order to create a fibre channel

(lpfcdd) boot device.

Chapter 5 - Diagnostic utility - lputil

The required files for the common utility are automatically loaded when the Emulex

driver files for Linux are installed.



Enter this path to start the utility:

/usr/sbin/lpfc/lputil



After the lputil goes through its start-up procedure, the Main menu displays:



Main Menu



This table describes each option. Values are in hexadecimal format.



Menu Description

Selection



1. List Adapters This option displays a list of host adapters

discovered in the system.



2. Adapter This option displays host adapter characteristics:

Information PCI configuration parameters, adapter revision

levels, wakeup parameters, IEEE address, loop

map, status and counters, link status and adapter

configuration parameters.



3. Firmware This option is used to upgrade firmware or

Maintenance download PCI configuration data. Acceptable file

formats are: absolute firmware image (.awc),

program image (.prg), and download with

checksum (.dwc). Each file is hardware specific

(LP7000, LP8000, etc.), but can be used on

supported platforms (AIX, Solaris, Windows NT).

PCI configuration data is contained in .cfl files,

with can be used across any supported platform for

type of supported host adapter.



4. Reset Adapter This option can be used during troubleshooting to

isolate one adapter from several installed. In most

cases, the upgrade procedure performs an

automatic restart of the host adapter.

Update Host Adapter Firmware



1. Obtain a copy of the upgrade file.



Upgrade files are available on the Emulex ftp server at

ftp://ftp.emulex.com/pub/fibrechannel.



From the common utility Main menu,



2. Select 3, Firmware Maintenance.



This menu displays



FIRMWARE MAINTENANCE MENU



1. Load Firmware Image



2. Display AWC File Contents



3. Display Flash Load List



4. Display RAM Load List



5. Load PCI Configuration File



3. Select 1, Load firmware image.



4. Enter the new firmware image file name.



This file downloads to the FLASH ROM of the host adapter. The board should

automatically reset.



5. Upon completion, press 0 to return to Main menu.



6. Select 2, Adapter Information.



7. Select 2, Adapter Revision Levels.



Verify that the new revision level is displayed.

Chapter 6 - Error Messages

By default, error / warning messages are printed to the console and error logged. If the

configuration parameter, log-only, is set, messages are only error logged.



Some messages are only recorded if the log-verbose configuration parameter is turned

on.



With the verbose parameter, you can set a bit mask to record specific types of verbose

messages:



0x1 ELS events



0x2 Device Discovery events



0x4 Mailbox Command events



0x8 Miscellaneous events



0x10 Link Attention events



0x20 IP events



0x40 FCP events



0x80 Node table events



The following section describes each error /warning message and indicates any user

actions needed. In addition, the message status (ERROR, WARNING, PANIC) and

(always / verbose) and driver source code location are also given.



Error messages are of the format:



LpfcN: Num : Message Data: Variables



Where N is the interface number



Num is a unique 3-digit error code



Message is the Error Message



Variables are 4 message dependent data variables

Platform Independent errors

These error codes range from 001 to 099.



lpfcN: 1 : Stray ELS completion



Received an ELS command completion without issuing a corresponding ELS

Command (based on the iotag field in the CMD_ELS_REQUEST_CR iocb). The

IOCB command and iotag used to match are recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcelsb.c



lpfcN: 2 : ELS [command response] completion error



An ELS command completed with a status error in the IOCB. The IOCB

command, IOCB status, IOCB parameter error, as well as the Port ID this ELS

command was directed to are recorded. This is only a warning. It could mean



 The Fibre Channel device on the network is not responding.



 The Fibre Channel device is not an FCP target.



The Fibre Channel driver will automatically retry this ELS command if needed.



ACTION: If the ELS command is a PLOGI or PRLI, and the destination PortID is

not an FCP Target, no action is needed. Otherwise, check physical connections to

Fibre Channel network and the state the remote PortID is in.



WARNING ELS verbose fcelsb.c



lpfcN: 3 : Device Discovery completion error



This indicates an uncorrectable error was encountered during device (re)discovery

after a link up. Fibre Channel devices will not be accessible if this message is

displayed. The location within the driver is recorded.



ACTION: Reboot system. If problem persists, contact customer support. Run

with verbose mode on for more details.



ERROR always fcelsb.c



lpfcN: 4 : Device Discovery completes



This indicates successful completion of device (re)discovery after a link up. The

location within the driver is recorded.



ACTION: none needed.

WARNING DISCOVERY verbose fcelsb.c



lpfcN: 5 : Unknown ELS [command response iocb]



An ELS command, ELS response, or ELS ring IOCB are not supported or have an

illegal value.



The illegal / unknown value is recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcelsb.c



lpfcN: 6 : FARP-[REQ RSP] received



A FARP ELS command was received from a Fabric. The command originator‟s

PortID is recorded.



ACTION: none needed.



WARNING IP verbose fcelsb.c



lpfcN: 7 : FLOGI completes successfully



A Fabric Login completed successfully. The assigned PortID, R_A_TOV and

E_D_TOV are recorded.



ACTION: none needed.



WARNING DISCOVERY verbose fcelsb.c



lpfcN: 8 : PRLI completes successfully



A PRLI to a FCP target completed successfully. target PortID and FCP SCSI ID

(pan, sid) are recorded.



ACTION: none needed.



WARNING FCP / DISCOVERY verbose fcelsb.c



lpfcN: 9 : FAN received



A FAN ELS command was received from a Fabric. The assigned PortID and

internal driver state are recorded.



ACTION: none needed.



WARNING DISCOVERY verbose fcelsb.c

lpfcN: 10 : RSCN received



A RSCN ELS command was received from a Fabric. The internal driver state and

size of the RSCN payload is recorded.



ACTION: none needed.



WARNING DISCOVERY verbose fcelsb.c



lpfcN: 11 : Unknown Identifier in RSCN payload



Typically the identifier in the RSCN payload specifies a domain, area or a specific

N_Port ID. If neither of these are specified, a warning will be recorded. The value

of the illegal identifier will be recorded.



ACTION: Potential problem with Fabric. Check with Fabric vendor.



WARNING always fcelsb.c



lpfcN: 12 : ELS Retry failed



If an ELS command fails, it may be retried up to 3 times. This message will be

recorded if the driver gives up retrying a specific ELS command. The value of the

ELS command and the Remote PortID will be recorded.



ACTION: If the ELS command is a PRLI, and the destination PortID is not an

FCP Target, no action is needed. Otherwise, check physical connections to Fibre

Channel network and the state the remote PortID is in.



WARNING ELS verbose fcelsb.c



lpfcN: 13 : Service Level Interface selected



Either a CONFIG_PORT (SLI2) or PART_SLIM (SLI1) mailbox command was

issued.



The SLI selected, 1 or 2, and the virtual address of the SLIM will be recorded.



ACTION: none needed.



WARNING MISC verbose fcmboxb.c



lpfcN: 14 : Memory Buffer Pool is below low water mark



A driver memory buffer pool is low on buffers. The buffer pool number and low

water mark are recorded.



ACTION: none needed.



WARNING MISC verbose fcmemb.c

lpfcN: 15 : Memory Buffer Pool is out of buffers



A driver memory buffer pool is exhausted. The buffer pool number is recorded.



ACTION: Configure more resources for that buffer pool. If problems persist

report these errors to customer service.



ERROR always fcmemb.c



lpfcN: 16 : Cannot find virtual address for mapped buffer



The driver cannot find the specified buffer in its mapping table. Thus is cannot

find the virtual address needed to access the data. The mapped buffer address and

ring number are recorded.



ACTION: If problems persist report these errors to customer service.



ERROR always fcmemb.c



lpfcN: 17 : Ran out of Node Table entries



The driver maintains a node table with one entry for every device it needs to

communicate with on the Fibre Channel network. The number of table entries and

the PortID for the device that failed are recorded. This message will be a warning /

verbose if the driver can free up some unused node table entries.



ACTION: Reduce the number of devices in your Fibre Channel network. If

problems persist report these errors to customer service.



ERROR always fcrpib.c



lpfcN: 18 : Device Discovery Started



Device discovery / rediscovery after FLOGI or FAN has started. The location

within the driver is recorded.



ACTION: none needed.



WARNING DISCOVERY verbose fcrpib.c



lpfcN: 19 : Stray FCP Completion



Received an FCP command completion without issuing a corresponding FCP

Command (based on the iotag field in the FCP iocb). The IOCB command, IOCB

status, IOCB parameter and iotag used to match are recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcscsib.c

lpfcN: 20 : FCP completion error



An FCP command completed with a status error in the IOCB. The IOCB status,

the IOCB parameter error, as well as the PortID this FCP command was directed

to are recorded



ACTION: If there are many errors to one device, check physical connections to

Fibre Channel network and the state the remote PortID is in.



ERROR always fcscsib.c



lpfcN: 21 : Rcv Ring: out of posted buffers



If the ring number is 1 (IP ring) this usually means the system is out of TCP/IP

buffers. The ring number and missed buffer count are recorded



ACTION: Try allocating more IP buffers (STREAMS buffers or mbufs) of size

4096 and/or increasing post-ip-buf configuration parameter. Reboot the system.



ERROR IP verbose fcscsib.c



lpfcN: 22 : NameServer Rsp buffer allocation failed



We received a NameServer Response and we need a buffer to put it in. This

usually means the system is out of TCP/IP buffers.



ACTION: Try allocating more IP buffers (STREAMS buffers or mbufs) of size

4096 and reboot the system.



ERROR always fcscsib.c



lpfcN: 23 : Post buffer for IP ring fails



The driver cannot post a buffer to the IP ring. This usually means the system is out

of TCP/IP buffers. The missed buffer count is recorded



ACTION: Try allocating more IP buffers (STREAMS buffers or mbufs) of size

4096 and reboot the system.



ERROR always fcscsib.c



lpfcN: 24 : Command ring timeout



An IOCB command was posted to a ring and did not complete within a timeout

based on ratov. The ring number and the IOCB command are recorded.



ACTION: This error could indicate a software driver or firmware problem. If no

I/O is going through the adapter, reboot the system. If these problems persist,

report the errors to customer service.



ERROR always fcscsib.c

lpfcN: 25 : Mailbox command timeout



A Mailbox command was posted to the adapter and did not complete within 30

seconds. the Mailbox command and status are recorded.



ACTION: This error could indicate a software driver or firmware problem. If no

I/O is going through the adapter, reboot the system. If these problems persist,

report the errors to customer service.



ERROR always fcscsib.c



lpfcN: 26 : FAN timeout



We received a link up event without the login bit set, so the driver waits

E_D_TOV for the Fabric to send a FAN. If no FAN if received, a FLOGI will be

sent after the timeout.



ACTION: None needed. The driver recovers from this with a FLOGI to the

Fabric.



WARNING always fcscsib.c



lpfcN: 27 : NameServer Registration timeout



Our registration request to the Fabric is not acknowledged within ratov.



ACTION: Check Fabric configuration. The driver recovers from this and

continues with device discovery.



WARNING always fcscsib.c



lpfcN: 28 : Nameserver Query timeout



Node Authentication timeout



Node Discovery timeout



A NameServer Query to the Fabric or discovery of reported remote NPorts is not

acknowledged within R_A_TOV.



ACTION: Check Fabric configuration. The driver recovers from this and

continues with device discovery.



WARNING always fcscsib.c



lpfcN: 29 : pt2pt timeout



This indicates a PLOGI has not been received, within R_A_TOV, after a

successful FLOGI, which indicates our topology is point to point with another

N_Port. Typically this PLOGI is used to assign a N_Port ID.

ACTION: None Needed, driver will recover by configuring N_Port ID as 0.



WARNING always fcscsib.c



lpfcN: 30 : SCSI timeout



An FCP IOCB command was posted to a ring and did not complete within ULP

timeout seconds. The IOCB command, N_Port ID and SCSI ID are recorded.



ACTION: If no I/O is going through the adapter, reboot the system; otherwise

check the state of the target in question.



WARNING FCP verbose fcscsib.c



lpfcN: 31 : Link [Up Down] Event received [ALPA map]



Either a link up or link down link event is received. It is also possible for multiple

link events to be received together. If this happens the current event number, last

event number received, ALPA granted, and number of entries in the loop init

LILP ALPA map are recorded. For a Link Up, an ALPA map message is also

recorded if LINK_EVENT verbose mode is set. Each ALPA map message

contains 16 ALPAs.



ACTION: If numerous link events are happening, check physical connections to

Fibre Channel network.



WARNING always / LINK_EVENT fcscsib.c



lpfcN: 32 : Unknown Mailbox completion



An unsupported or illegal Mailbox command completed. The unknown value is

recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcscsib.c



lpfcN: 33 : SCSI Link reset



The SCSI layer has determined the link needs to be reset. A LIP is sent to restart

loop initialization.



ACTION: None Needed.



WARNING always fcscsib.c



lpfcN: 34 : Bring Adapter online



The driver has received a request to bring the adapter online. This may happen

when running lputil.

ACTION: None Needed.



WARNING always fcscsib.c



lpfcN: 35 : Bring adapter offline



The driver has received a request to bring the adapter offline. This may happen

when running lputil.



ACTION: None Needed.



WARNING always fcscsib.c



lpfcN: 36 : Abort Target I/O: clearq



This is displayed if the driver internally detects that it needs to abort all I/O to a

specific device. This results in a Fibre Channel ABTS to abort the I/O in process.

The target N_Port ID, SCSI ID, and LUN are recorded.



ACTION: Check state of target in question.



WARNING FCP verbose fcscsib.c



lpfcN: 37 : Abort Target I/O: issue_abort



This is displayed if the SCSI layer detects that it needs to abort all I/O to a specific

device. This results in an FCP Task Management command to abort the I/O in

progress. The target N_Port ID, SCSI ID, and LUN are recorded.



ACTION: Check state of target in question.



WARNING always fcstratb.c



lpfcN: 38 : FCP command failed



This indicates a target has sent us a FCP RSP error. Because of the amount of

information that needs to be recorded, two back to back messages are generated.

The first records the IOCB information, the IOCB cmd, Iotag, status, and

parameter error field. The second records FCP information, N_Port ID, SCSI ID,

LUN, and FCP response status bytes.



ACTION: Check the state of the target in question.



WARNING FCP verbose fcscsib.c



lpfcN: 39 : Cannot issue FCP command



This indicates we no longer have a valid login with a target. The target N_Port ID,

SCSI ID, and LUN are recorded.



ACTION: Check the state of the target in question.

WARNING always fcstratb.c



lpfcN: 40 : No room on IP xmit queue



This message indicates the system is generating IOCB commands to be processed,

faster than the adapter can process them.



ACTION: Check the state of the link. If the link is up and running, reconfigure the

xmit queue size to be larger. Note, a larger queue size may require more system

IP buffers. If the link is down, check physical connections to Fibre Channel

network.



WARNING IP verbose fcxmitb.c



lpfcN: 41 : Stray XmitSequence completion



Received an XMIT_SEQUENCE IOCB completion without issuing a

corresponding XMIT_SEQUENCE Command (based on the iotag field in the

XMIT_SEQUENCE_CR iocb). The IOCB command and iotag used to match are

recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcxmitb.c



lpfcN: 42 : Xmit sequence completion error



A XMIT_SEQUENCE command completed with a status error in the IOCB. The

IOCB status, the IOCB iotag, the IOCB parameter error, as well as the PortID this

command was directed to are recorded. The driver attempts to recover by creating

a new exchange to the remote device.



ACTION: If there are many errors to one device, check physical connections to

Fibre Channel network and the state the remote PortID is in.



WARNING IP verbose fcxmitb.c



lpfcN: 43 : Stray CreateXRI completion



Received a CREATE_XRI command completion without issuing a corresponding

CREATE_XRI Command (based on the iotag field in the CREATE_XRI_CR

iocb). The IOCB command and iotag used to match are recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always fcxmitb.c

lpfcN: 44 : Adapter failed to initialize



This indicates the host adapter failed to initialize properly. The adapter status

register is recorded.



ACTION: This error usually indicates a hardware problem with the adapter, run

diagnostics.



ERROR always lp6000.c



lpfcN: 45 : Adapter initialization failed, Mailbox command



This indicates the host adapter failed to initialize properly because a mailbox

command failed. The mailbox command and mailbox status values are recorded.



ACTION: This error usually indicates a hardware problem with the adapter, run

diagnostics.



ERROR always lp6000.c



lpfcN: 46 : RUN_BIU_DIAG failed



This indicates the host adapter failed to initialize properly because a PCI bus

DMA test failed.



ACTION: This error usually indicates a hardware problem with the adapter, run

diagnostics.



ERROR always lp6000.c



lpfcN: 47 : WorldWide PortName doesn't conform to IP Profile



In order to run IP, the WorldWide PortName must be of type IEEE (NAA = 1).

This message is display if the adapter WWPN doesn‟t conform to the standard.

The NAA is recorded.



ACTION: Turn off the network-on configuration parameter or has a different

WWPN assigned.



ERROR always lp6000.c



lpfcN: 48 : Enable interrupt handler failed



This error occurs if the driver cannot assign an interrupt vector to the host adapter.



ACTION: Check configuration of adapter in system.



ERROR always lp6000.c

lpfcN: 49 : Adapter Hardware Error



This error occurs if we get a FireFly error interrupt and the status register indicates

a nonrecoverable error. . The adapter status register is recorded.



ACTION: This error usually indicates a hardware problem with the adapter, run

diagnostics.



ERROR always lp6000.c



lpfcN: 50 : Stray Mailbox Interrupt



Received a Mailbox command completion and the mailbox is not owner by the

host. The Mailbox command and status are recorded.



ACTION: This error could indicate a software driver or firmware problem. If

problems persist report these errors to customer service.



ERROR always lp6000.c



lpfcN: 51 : [29,xx] Check condition received



This error could indicate a problem with a FCP target. The check condition

response info fields are recorded. A 29,xx check condition is only recorded in

verbose mode.



ACTION: Check state of FCP target



ERROR always lp6000.c



lpfcN: 52 : [Xmit Received] ELS [command response]



This error could indicate a problem with a FCP target.. The check condition

response info fields are recorded. A 29,xx check condition is only recorded in

verbose mode.



ACTION: No action needed.



WARNING ELS verbose fcelsb.c

Appendix A - Glossary

ALPA Arbitrated Loop Physical Address; the address of a node on Fibre Channel when

running in an Arbitrated Loop topology



DMA Direct Memory Access; the ability of some devices to send data directly to/from

memory without intervention by the host processor.



HBA Host Bus Adapter



HBA driver A driver responsible for managing a host bus adapter; transports

commands and responses between a target driver and a SCSI or FCP target



IP Internet protocol



ISA Instruction Set Architecture



JBOD Just a Bunch Of Disks. A cabinet, power supply, and disks. No controller or

fancy logic.



LILP Loop Initialization Loop Position



LIRP Loop Initialization Report Position



lpfcdd LightPulse Fibre Channel host bus adapter driver as a whole; also specifically the

FCP portion of that driver



lpfndd LightPulse Fibre Network host bus adapter driver; specifically, the IP portion of

the lpfcdd driver



LUN Logical Unit Number



PCI Peripheral Component Interconnect



SCSI Small Computer System Interface



target driver A driver responsible for generating commands for and interpreting

responses from a target; these commands are sent via the HBAdriver for a device on the

SCSI bus, for instance a disk, tape, or CD-ROM



WWNN World-Wide Node Name, used to uniquely identify a Fibre Channel

device.



WWPN World-Wide Port Name, used to uniquely identify a Fibre Channel device.



Related docs
Other docs by wuzhenguang
Is Air Quality a Problem in My Home
Views: 7  |  Downloads: 0
IHRM Chapter 6
Views: 8  |  Downloads: 0
37.10593
Views: 6  |  Downloads: 0
December_break
Views: 7  |  Downloads: 0
Lectures for 2nd Edition
Views: 7  |  Downloads: 0
Google Chart
Views: 14  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!