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:
  1. 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.
  2. (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.
  3. 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 ]