[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Int 2F Fn C000  - Novell Odi Link Support Layer (lsl.com) - Installation   [N]

   AX = C000h

Return: AL = FFh if installed
       DX:BX -> FAR entry point (see below)
       ES:SI -> signature string "LINKSUP$"

Notes: LSL.COM may use any multiplex number between C0h and FFh; it searches
     for itself in that range, and installs using the first free multiplex
     number in the range if not already loaded.
   on return, ES = DX for LSL v1.10; LSL makes use of this in its search
     for a previous installation

Call LSL entry point with:
   BX = 0001h "Request MLID Registration"
       ES:SI -> ???
       ???

       Return: AX = completion code (see below)
           DS:DI -> LSL information block
   BX = 0002h get support entry points
       ES:SI -> buffer for entry point record (see below)

       Return: ES:SI buffer filled
   BX = 0003h "Request MLID API entry point"

       Return: ES:SI -> MLID (Multiple Link Interface Driver) API
                 entry point (call with BX=function 00h-10h,
                 not range-checked)

Notes: LSL v1.10 executes BX=0003h for all other values of BX
   see "Novell LAN Driver Developer's Guide, Volume III" for details of
     function 0001h

Values for completion code:
 0000h successful
 8001h out of resources
 8002h bad parameter
 8003h no more items
 8004h item not present
 8005h failed
 8006h receive overflow
 8007h canceled
 8008h bad command
 8009h duplicate entry
 800Ah no such handler
 800Bh no such driver

Format of entry point record:
Offset Size    Description
 00h   DWORD   pointer to protocol support entry point in LSL (see below)
 04h   DWORD   pointer to general support entry point in LSL (see below)

Call protocol support entry point with:
   BX = function number
       0000h ???
       0001h ???
       0002h ???
       0003h "ScheduleAESEvent"
       ES:SI -> AES ECB to be scheduled (see below for format)

       Return: ES,SI preserved
       0004h "CancelAESEvent"
       ES:SI -> ECB to be cancelled (see below for format)

       Return: ES,SI preserved
       0005h "GetIntervalMarker"

       Return: DX:AX = current interval marker in milliseconds
           all other registers preserved
       0006h "RegisterStack"
       AX = logical board number
       ES:SI -> bound stack info structure (see below)

       Return: BX = assigned Stack ID if AX=0000h
       0007h "DeRegisterStack"
       AX = protocol stack's assigned Stack ID
       0008h "RegisterDefaultStack"
       AX = logical board number
       ES:SI -> stack info structure (see below)
       0009h "DeRegisterDefaultStack"
       AX = logical board number
       000Ah "RegisterPrescanStack"
       AX = logical board number
       ES:SI -> stack info structure (see below)
       000Bh "DeRegisterPrescanStack"
       AX = logical board number
       000Ch "SendPacket"
       ES:SI -> send ECB

       Return: interrupts disabled
       000Dh ???
       000Eh ???
       000Fh ???
       0010h "GetStackIDFromName"
       ES:SI -> counted NUL-terminated protocol name (max 15 chars)

       Return: BX = Stack ID if AX=0000h
       0011h "GetPIDFromStackIDBoard"
       AX = Stack ID for protocol
       CX = logical board number
       ES:SI -> 6-byte buffer for protocol ID
       0012h "GetMLIDControlEntry"
       AX = logical board number

       Return: ES:SI -> MLID control handler (see below) if AX=0000h
       0013h "GetProtocolControlEntry"
       AX = Stack ID or
           FFFEh Prescan stack
               CX = logical board number
           FFFFh default protocol
               CX = logical board number

       Return: ES:SI -> protocol stack control entry point if AX=0000h
               (see below)
       0014h "GetLSLStatistics"

       Return: AX = 0000h (successful)
           ZF set
           ES:SI -> LSL statistics table (see below)
       0015h "BindStack"
       AX = protocol stack's assigned Stack ID
       CX = logical board number
       0016h "UnbindStack"
       AX = protocol stack's assigned Stack ID
       CX = logical board number
       0017h "AddProtocolID"
       AX = frame type ID code
       ES:SI -> 6-byte protocol ID
       CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
       0018h "RelinquishControl"

       Return: after LSL performs any necessary background processing
       0019h "GetLSLConfiguration"

       Return: AX = 0000h (successful)
           ZF set
           ES:SI -> LSL configuration table (see below)
       001Ah "GetTickMarker"

       Return: AX = number of 55ms ticks since LSL loaded
           BX destroyed

Return: AX = completion code (see above)
   ZF set if successful
   SS:SP, DS, BP preserved; most other registers may be destroyed

Call general support entry point with:
   BX = function number
       0000h "Allocate Memory" (obsolete)
        always returns AX=8008h (BAD_COMMAND)
       0001h "Free Memory" (obsolete)
        always returns AX=8008h (BAD_COMMAND)
       0002h "Realloc Memory" (obsolete)
        always returns AX=8008h (BAD_COMMAND)
       0003h "Memory Statistics" (obsolete)
        always returns AX=8008h (BAD_COMMAND)
       0004h "Add Memory To Pool" (obsolete)
        always returns AX=8008h (BAD_COMMAND)
       0005h "AddGeneralService"
       ES:SI -> General Service Control Block (see below)
       0006h "RemoveGeneralService"
       ES:SI -> General Service Control Block (see below)
       0007h "GetNETcfgPath"

       Return: AX = 0000h (successful)
           DS:DX -> ASCIZ pathname for NET.CFG
       0008h U ???  (in LSL 1.10)

       Return: AX = 0000h
           ES:SI -> ??? (a 22-byte data area)
       000Ah "GetCriticalSectionStatus"

       Return: BX = total outstanding calls to "StartCriticalSection"
       000Bh "ServiceEvents"
       interrupts disabled

       Return: interrupts disabled
       0010h "GetStackECB"
       DS:DI -> Lookahead structure (see below)
       interrupts disabled

       Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
           interrupts disabled
       8000h-FFFFh reserved for user general service providers

Return: AX = completion code (see above)
   ZF set if successful
   SS:SP, DS, BP preserved

Call MLID control handler with:
   AX = logical board number
   BX = function number
       0000h "GetMLIDConfiguration"

       Return: ES:SI -> MLID's configuration table if successful
               (see below for format)
       0001h "GetMLIDStatistics"

       Return: ES:SI -> MLID's statistics table if successful
               (see below for format)
       0002h "AddMulticastAddress"
       ES:SI -> 6-byte multicast address to add
       0003h "DeleteMulticastAddress"
       ES:SI -> 6-byte multicast address to delete
       0005h "MLIDShutdown"
       CX = type
           0000h permanent (also deregisters from LSL)
           other temporary (shutdown hardware only)
       0006h "MLIDReset" reinitialize board / restart from temp shutdown
       0007h "Create Connection" (obsolete?)
       ???
       0008h "Delete Connection" (obsolete?)
       ???
       0009h "SetLookAheadSize"
       CX = requested lookahead size (00h-80h)
       0010h "PromiscuousChange"
       CX = what to receive promiscuously
           bit 0: MAC frames
           bit 1: non-MAC frames
       0011h "RegisterReceiveMonitor"
       CX = subfunction
           0000h disable receive monitoring
           else  enable receive monitoring
       ES:SI -> monitor receive routine
       ES:DI -> monitor transmit routine
       0012h "Driver Poll" (obsolete?)
       ???

Return: AX = completion code (see above)
   ZF set if successful

Note:  not all boards/MLIDs support function 0010h; see bit 13 in the MLID
     mode flags field of the MLID's configuration table

Call protocol stack control entry point with:
   BX = function number
       0000h "GetProtocolStackConfiguration"

       Return: ES:SI -> protocol stack's configuration table
               (see below)
       0001h "GetProtocolStackStatistics"

       Return: ES:SI -> protocol stack's statistics table (see below)
       0002h "BindToMLID"
       CX = board number to bind to
       ES:SI -> implementation-dependant parameter string
       0003h "UnBindFromMLID"
       CX = board number from which protocol should unbind
       ES:SI -> optional implementation-dependant parameter string
       0004h "MLIDDeRegistered"
       CX = board number that has de-registered from LSL

Return: AX = status
       0000h successful
       else implementation-dependant error codes
   ZF set if successful
   SS:SP, DS, BP preserved

Format of AES ECB:
Offset Size    Description
 00h   DWORD   "AESLink" pointer used by LSL for list management
 04h   DWORD   number of milliseconds to wait
 08h   DWORD   "AESStatus" (is set to 00000000h when AES ESR is invoked)
 0Ch   DWORD   -> function to be invoked when time expires
       ES:SI will point to this structure on entry,
       DS, BP, and SS:SP must be preserved.

Format of LSL Configuration Table:
Offset Size    Description
 00h   BYTE    major version of configuration table
 01h   BYTE    minor version of configuration table (decimal, 0-99)
 02h  8 BYTEs  reserved
 0Ah   BYTE    LSL major version (decimal)
 0Bh   BYTE    LSL minor version (decimal, 0-99)
---LSL 1.0x ---
 0Ch 14 BYTEs  reserved
---LSL 1.10+ ---
 0Ch   WORD    maximum number of boards which LSL can handle
 0Eh   WORD    maximum number of protocol IDs which LSL can handle
 10h 12 BYTEs  reserved

Format of LSL Statistics Table:
Offset Size    Description
 00h   BYTE    major version of statistics table format
 01h   BYTE    minor version of statistics table format (decimal, 0-99)
 02h   WORD    "GenericCounters" number of counters in static portion of
       table
 04h   DWORD   "ValidCountersMask" bit mask indicating which generic
       counters are actually used.  Bit 31 = TotalTxPackets, bit 30
       is the next field, etc.
 08h   DWORD   "TotalTxPackets" total SendPacket requests made
 0Ch   DWORD   reserved
 10h   DWORD   reserved
 14h   DWORD   "AESEventsCount" number of completed AES events
 18h   DWORD   "PostponedEvents" number of events postponed due to critical
       sections inside the MLIDs
 1Ch   DWORD   "CancelAESFailures" number of times CancelAESEvent failed
 20h   DWORD   reserved
 24h   DWORD   reserved
 28h   DWORD   "TotalRxPackets" total number of GetStackECB requests
 2ch   DWORD   "UnclaimedPackets" total number of packets not consumed by a
       protocol stack
 30h   WORD    "NumberCustom" number of custom variables that follow
 32h  N DWORDs custom counters
      N DWORDs -> CustomCounterStrN (one per custom counter)
   var length-prepended and NULL terminated string for Counter 0
   ...
   var length-prepended and NULL terminated string for Counter N-1

Format of Protocol Stack Statistics Table:
Offset Size    Description
 00h   BYTE    statistics table major version
 01h   BYTE    statistics table minor version (decimal, 0-99)
 02h   WORD    number of generic counters following
 04h   DWORD   "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
 08h   DWORD   TotalTxPackets
 0ch   DWORD   TotalRxPackets
 10h   DWORD   IgnoredRxPackets
 14h   WORD    number of custom counters
 16h  N DWORDs custom counters
      N DWORDs -> CustomCounterStrN (one per custom counter)
   var length-prepended and NULL terminated string for Counter 0
   ...
   var length-prepended and NULL terminated string for Counter N-1

Format of Protocol Stack Configuration Table:
Offset Size    Description
 00h   BYTE    configuration table major version
 01h   BYTE    configuration table minor version (decimal, 0-99)
 02h   DWORD   -> counted NUL-terminated long descriptive name for protocol

.NG limit reached, continued in next section...

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson