EVT_PACKET_QUEUE_START callback function (netpacketqueue.h)

The EvtPacketQueueStart callback function is an optional callback that is implemented by the client driver to start the data path for a packet queue.

Syntax

EVT_PACKET_QUEUE_START EvtPacketQueueStart;

void EvtPacketQueueStart(
  [_In_] NETPACKETQUEUE PacketQueue
)
{...}

Parameters

[_In_] PacketQueue

A handle to a packet queue.

Return value

None

Remarks

This is an optional callback. Register this callback function in your EVT_NET_ADAPTER_CREATE_TX(RX)QUEUE callback. Set the appropriate member of a NET_PACKET_QUEUE_CONFIG structure after you initialize the structure with NET_PACKET_QUEUE_CONFIG_INIT, then call NetTx(Rx)QueueCreate.

In this callback, a client driver typically configures information that its hardware needs for packet transmission or reception. Because this callback does not return a value and therefore should not fail, client drivers should perform actions such as resource allocation during queue creation. Therefore, this callback should be a light-weight function that executes quickly.

Client drivers will not receive calls to EVT_PACKET_QUEUE_ADVANCE, EVT_PACKET_QUEUE_CANCEL, or EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED until after EvtPacketQueueStart returns. In addition, EvtPacketQueueStart is called in the same execution context, or thread, as EvtPacketQueueAdvance, EvtPacketQueueCancel, and EvtPacketQueueSetNotificationEnabled, so client drivers do not need to synchronize between these callback functions for an individual queue instance.

When a queue starts, NetAdapterCx guarantees that BeginIndex == NextIndex == 0 for all of this queue's ring buffers. After start, the framework does not read or write NextIndex for packet ring buffers, so client drivers can either use it as needed or choose not to use it at all. BeginIndex is read by the framework but is not modified outside of EvtPacketQueueStart.

For more info and a diagram showing the NetAdapterCx data path polling model, see Transmit and receive queues.

Requirements

Requirement Value
Target Platform Universal
Minimum KMDF version 1.27
Header netpacketqueue.h (include netadaptercx.h)
IRQL PASSIVE_LEVEL

See also

EVT_NET_ADAPTER_CREATE_RXQUEUE

EVT_NET_ADAPTER_CREATE_TXQUEUE

NetRxQueueCreate

NetTxQueueCreate

EVT_PACKET_QUEUE_ADVANCE

EVT_PACKET_QUEUE_CANCEL

EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED

EVT_PACKET_QUEUE_STOP