DL_DATA_REQ Primitive
Purpose
Conveys a complete data link service data unit (DLSDU)
from the data link service (DLS) user to the DLS provider for transmission
over the data link connection.
Structure
This primitive consists of one or more M_DATA message blocks containing at least one byte of data. (That is,
there is no DLPI data structure associated with this primitive.)
Description
The DL_DATA_REQ primitive conveys
a complete DLSDU from the DLS user to the DLS provider for transmission over
the data link connection. The DLS provider guarantees to deliver each DLSDU
to the remote DLS user in the same order as received from the local DLS user.
If the DLS provider detects unrecoverable data loss during data transfer,
the DLS user can be notified by a DL_RESET_IND primitive.
If the connection is lost, the user can be notified by a DL_DISCONNECT_IND primitive.
To simplify support of a read/write interface to the data link layer, the DLS provider
must recognize and process messages that consist of one or more M_DATA message blocks without a preceding M_PROTO message
block. This message type may originate from the write subroutine.
Notes:
- This does not imply that the Data Link Provider
Interface (DLPI) directly supports a pure read/write interface. If such an interface is desired, a streams module could
be implemented to be pushed above the DLS provider.
- (Support of Direct User-Level Access) A streams
module would implement more field processing itself to support direct user-level
access. This module could collect messages and send them in one larger message
to the DLS provider, or break large DLSDUs passed to the DLS user into smaller
messages. The module would only be pushed if the DLS user was a user-level
process.
- The DL_DATA_REQ primitive
applies to connection mode.
States
Valid |
The primitive is valid in the DL_DATAXFER state.
If it is received in the DL_IDLE or DL_PROV_RESET_PENDING state, the primitive is discarded without generating
an error. |
New |
The resulting state is unchanged. |
Acknowledgments
Successful |
No response is generated. |
Unsuccessful |
A streams M_ERROR message is issued to the
DLS user specifying an errno global value of EPROTO. This action should be interpreted as a fatal, unrecoverable,
protocol error. A request will fail under the following conditions:
-
The primitive was issued from an invalid state. If
the request is issued in the DL_IDLE or DL_PROV_RESET_PENDING state. However, the request is discarded without
generating an error.
-
The amount of data in the current DLSDU is not within
the DLS provider's acceptable bounds as specified by the dl_min_sdu and dl_max_sdu parameters of the DL_INFO_ACK primitive.
|
Related Information
The DL_DISCONNECT_IND primitive, DL_INFO_ACK primitive, DL_RESET_IND primitive.
[ Top of Page | Previous Page | Next Page | Index | Feedback ]