RtndSubmitRxBuffer

RtndSubmitRxBuffer inserts a buffer into the specified Receive Queue.

Syntax

Copy
BOOL RtndSubmitRxBuffer(
  [in]            ULONG_PTR RtndInterfaceId,
  [in]            ULONG RxQueueIndex,
  [in]            VOID *pRxQueueAppContext,
  [in]            RTND_BUFFER_HEADER *pBufferHeader,
  [in, ignored]   ULONG Flags
);

Parameters

[in] RtndInterfaceId

The number or pointer used to identify the interface. This value is returned by RtndManageInterface.

[in] RxQueueIndex

The index of the Receive Queue.

[in] pRxQueueAppContext

The address of the context returned when the calling process called RtndAttachRxQueue.

[in] pBufferHeader

The address of the buffer header.

[in, ignored] Flags

Reserved for future use. The value is set to zero by the NL2. Drivers must ignore this parameter.

Return Value

If the function succeeds, it returns TRUE. If the function fails, it returns FALSE. To get extended error information, call GetLastError.

Common error codes:

Error code Meaning

ERROR_IO_DEVICE

An unexpected error occurred while trying to access the device.

ERROR_DEVICE_NO_RESOURCES

The DMA ring is full and can't accept a new buffer.

Note: Custom drivers may return other error codes not listed above.

Remarks

This function may be called from any process.

Depending on the design of the driver, this function may trigger the fetching of the buffer that has just been inserted. For performance reasons, the NL2 will group buffers in bursts when it can, call RtndSubmitRxBuffer in a row for each buffer of the burst, and then call RtndApplyRxBuffers at the end of the burst. To achieve the best performance, the driver should NOT write to the hardware register that triggers the fetching until RtndApplyRxBuffers is called. Alternatively, the driver can also trigger the fetching in RtndSubmitRxBuffer and leave RtndApplyRxBuffers empty.

Characteristics

Real-time requirements

Deterministic behavior

Recommended

Local memory allocation/deallocation restrictions

Process

External MSpace

Internal MSpace

System

Not allowed

Not allowed

Process

Not allowed

Not allowed

Contiguous memory allocation/deallocation restrictions

Contiguous memory

Not allowed

Requirements

Minimum supported version Header

eRTOS 1.0 SDK

Rtnd.h

See Also: