48 Fibre Channel Interface Manual, Rev. D
When a fair NL_Port has arbitrated for and won access to the loop and does detect that another L_Port is arbi-
trating, the NL_Port closes the loop at the earliest possible time and arbitrates again in the next access window
before opening a different L_Port.
8.3.2 Access unfairness
Some loops may require that certain NL_Ports have more access to the loop than just one access per access
window. Examples of this situation include an NL_Port for a subsystem controller or file server. Any NL_Port
can be initialized to not use the fairness algorithm. If this occurs, the NL_Port is called an “unfair” NL_Port. An
NL_Port can also be configured to be temporarily unfair.
When an unfair L_Port has arbitrated for and won access to the loop and does not detect that another L_Port
is arbitrating, that L_Port may keep the existing circuit open indefinitely or close that circuit and retain owner-
ship of the loop without re-arbitrating to open another L_Port on the loop.
When an unfair NL_Port controls the loops and detects that another L_Port is arbitrating, the unfair NL_Port
may close the loop at the earliest possible time.
If you have a public loop connected to a fabric, the participating FL_Port is always the highest priority L_Port
on the loop based on its AL_PA value of 00h (see Section 8.1).
Note. There can be only one participating FL_Port on any one loop. Additional FL_Ports can be present,
but they will be in nonparticipating mode.
The FL_Port doesn’t use the access fairness algorithm because it must control communications with the
attached fabric. This means the FL_Port will always win arbitration.
8.3.3 Clock skew management
Each loop port receives an input stream from the port upstream that is based on the clock frequency of that
upstream device. The clock frequency of the upstream device may be slightly faster or slower than the fre-
quency the loop port is using to transmit data. Each loop port captures data using the receive clock frequency
and retimes it to its own transmit clock before forwarding the data. Over time, if the receive clock frequency is
faster than the transmit frequency, data will start backing up in the port. If the receive clock frequency is slower
than the transmit frequency, the port may run out of data.
To compensate for this difference in clock frequencies, each loop port contains an Elasticity (smooting) FIFO
(First In, First Out) buffer that allows words to be inserted or deleted as necessary to account for this difference
in clock frequencies. Only fill words such as Idles or ARB’s may be inserted or deleted during times when
frames or R_RDYs are not being transmitted. Each port originating frames is required to transmit at least six fill
words between frames. This gives all monitoring loop ports an opportunity to insert or delete the fill words. A
minimum of two fill words must be left between frames when it arrives at its destination.
8.4 Loop ports
A loop port (L_Port) is a port designed specifically to operate in a Fibre Channel Arbitrated Loop topology.
NL_Ports have special additional functions which permit them to operate in the arbitrated loop topology as well
as in the point-to-point physical topology when attached to an N_Port or an F_Port. N_Ports are designed for
point-to-point physical topologies, and F_Ports are designed for fabric topologies.
8.4.1 Maximum number of NL_Ports
Up to 126 NL_Ports may be participating on a single arbitrated loop. There can be more than 126 NL_Ports
attached to the loop, but only 126 will be able to obtain a valid arbitrated loop physical address (AL_PA). Only
one (rare) or two NL_Ports communicate at any one time, except during loop initialization. Only one NL_Port
can send frames but several NL_Ports may copy that frame into their buffer.