### 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.