TechNote
Number: 03402-04
Date: October 1994
What does the LSL do?
The LSL (Link Support Layer) provides a standard interface between the protocol stacks and
the Multiple Link Interface Drivers (MLIDs) in Novell's ODI. MLID is a Novell term for a LAN
driver written to the ODI specification. For information on MLIDs, refer to TechNote 03403.
When an MLID is loaded, it locates the LSL program and "registers" itself as an MLID, with
the LSL. When registering, the MLID passes a pointer to a data structure called a
configuration table. The configuration table contains information such as the frame type,
name, hardware details, node address, supported frame size of the driver, and a blank 2-byte
field known as the board number. When the LSL receives the pointer to the configuration
table, it assigns the MLID a unique board number, which is then stored in an empty field in
the configuration table. If an adapter supports more than one type of physical header (for
example, token-ring 802.2 frames and token-ring SNAP frames), the MLID registers more
than once with the LSL, using a different configuration table each time. Therefore, the LSL
gives the MLID a different board number to represent the different frame types, which can be
thought of as logical network adapters.
When a protocol is loaded, it locates the LSL and "registers" with it, in a simliar way to an
MLID. When registering, the protocol passes two entry points to the LSL. One of these is for
the LSL to call when it receives a frame for the protocol and the other is used by applications
of the protocol. In return, the LSL gives the protocol a unique Stack ID, which is a 2-byte
identifier similar to the board numbers given to MLIDs.
Having registered with the LSL, the protocol stack finds out which board numbers are
available for sending and receiving frames. When a protocol wants to send a frame, it
passes the frame and the appropriate board number to the LSL. The LSL forwards the frame
to the MLID that has that particular board number.
Generally, the MLID creates the physical frame header using the 6-byte Protocol ID (PID)
that the protocol supplies. It then sends the frame onto the wire. The PID is a unique byte
sequence that defines the protocol.
When the LSL receives a frame from a particular board number, it can pass the frame to the
appropriate protocol stack in one of three ways:
- Most protocol stacks "bind" to a particular board to receive all frames with a
particular PID. They pass this PID to the LSL when they register with the LSL. Often, protocol
stacks need to receive frames with a number of different physical header PIDs (for example
TCP/IP = IP,ARP,RARP). To do this, they must register with the LSL for each different PID
and each board, as if there were many individual protocols each with a separate Stack ID.
- Some protocols request the LSL to pass all frames from a particular board to the
protocol stack before passing them to other protocols. Therefore, the protocol stack takes the
frames it wants and returns the remainder to the LSL to pass onto other protocol stacks.
Such a protocol is called a pre-scan protocol and each board can only support one pre-scan
protocol. Examples of pre-scan protocols are network analyzers and frame filters.
- Some protocols request the LSL to pass all frames unwanted by other protocols,
from a particular board to the protocol stack. Only one such protocol can exist per board;
these protocols are known as default protocols. This method of receiving frames is used to
create parallel data-link layers to ODI. In the future, it is possible that LLC protocols and
packet drivers such as NDIS will be written to this interface.