DLrsrv(3dlpi) DLrsrv(3dlpi)
NAME
DLrsrv - service routine for read queue
SYNOPSIS
DLrsrv(queue_t *q)
Parameters
q pointer to the read queue
DESCRIPTION
This is the service routine for the read queue. The DLrecv()
routine puts any received frames in the read queue of the
Hardware Independent Layer (if there is no space in the read
queue the frames are discarded).
DLrsrv() translates each message received by a DL_ETHER SAP
into a DL_UNITDATA_IND message by calling DLmk_ud_ind(). If
an error value is returned in this process, the message is
freed-up and the ifInDiscards field of MIB is incremented.
DLrsrv() processes each message received by a DL_CSMACD SAP by
calling the DLproc_llc() function. A return value of NULL
results in the message being freed up. The DLproc_llc() can
return a NULL under conditions of unsuccessful and in some
cases even successful processing of the frame. For further
discussions refer to the implementation details of the
DLproc_llc() routine.
DLrsrv() also searches the list of valid SAPs to hand out
duplicate copies of messages. The current implementation of
Ethernet drivers allows multiple streams to be bound to the
same value of sap_addr, enabling each stream to get copies of
the same packet. There are other instances in which copies of
an incoming packet have to be distributed to several streams:
A promiscuous SAP existing alongside a valid SAP
An LPDU with a dsap value of 0xff (LLC_GLOBAL_SAP)
While DLrecv() hands over the packet to the first valid SAP,
DLrsrv() loops through the list of valid SAPs to identify and
copy the same packet to other streams.
Notice
DLrecv() and DLrsrv() loop through the same list of valid
SAPs.
Copyright 1994 Novell, Inc. Page 1
DLrsrv(3dlpi) DLrsrv(3dlpi)
While DLrecv() terminates the search at the first valid SAP,
DLrsrv() completes the entire loop.
Response
none
Layer
Hardware Independent.
REFERENCES
Hardware Independent Layer Functions Called
none
Hardware Dependent Layer Functions Called
none
Copyright 1994 Novell, Inc. Page 2