NDIS_PD_CAPABILITIES structure (ntddndis.h)
This structure indicates the PD capabilities for a provider.
Syntax
typedef struct _NDIS_PD_CAPABILITIES {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
ULONG MaximumTxPartialBufferCount;
ULONG MaximumRxPartialBufferCount;
UCHAR RxFilterContextWidth;
ULONG CapabilityFlags;
ULONG MaxNumberOfRxQueues;
ULONG MaxNumberOfTxQueues;
ULONG MaxNumberOfRxQueuesForDefaultVport;
ULONG MaxNumberOfTxQueuesForDefaultVport;
ULONG MaxNumberOfRxQueuesPerNonDefaultVport;
ULONG MaxNumberOfTxQueuesPerNonDefaultVport;
ULONG ExactMatchProfileArrayOffset;
ULONG ExactMatchProfileArrayNumElements;
ULONG ExactMatchProfileArrayElementSize;
ULONG WildcardMatchProfileArrayOffset;
ULONG WildcardMatchProfileArrayNumElements;
ULONG WildcardMatchProfileArrayElementSize;
ULONG MinimumModerationInterval;
ULONG MaximumModerationInterval;
ULONG ModerationIntervalGranularity;
ULONG MaxRxQueueSize;
ULONG MaxTxQueueSize;
} NDIS_PD_CAPABILITIES;
Members
Header
The NDIS_OBJECT_HEADER structure for the NDIS_PD_CAPABILITIES structure. Set the members of this structure as follows:
- Type = NDIS_OBJECT_TYPE_DEFAULT
- Revision = NDIS_PD_CAPABILITIES_REVISION_1
- Size = NDIS_SIZEOF_PD_CAPABILITIES_REVISION_1
Flags
This member is reserved and must be set to 0.
MaximumTxPartialBufferCount
The maximum partial transmit PD_BUFFER chain lengths supported by the provider.
MaximumRxPartialBufferCount
The maximum partial receive PD_BUFFER chain lengths supported by the provider.
RxFilterContextWidth
The filter context width that the provider supports. A provider can support up to 64-bits in width.
CapabilityFlags
Flags that contain additional capabilities that the provider supports.
Flag | Description |
---|---|
NDIS_PD_CAPS_RECEIVE_FILTER_COUNTERS_SUPPORTED | This flag indicates that the provider supports creation of counters with the PDCounterTypeReceiveFilter type that is part of the NDIS_PD_COUNTER enumeration |
MaxNumberOfRxQueues
The maximum number of receive queues the provider supports. This is only relevant to queues created by the NdisPDAllocateQueue routine, therefore this number is not accurate for the client because additional pre-existing RSS queues (that the client can request PD-mode access to using the NdisPDOnRssReceiveQueues) are not accounted for in the NdisPDAllocateQueue routine.
It is possible for providers to set this value to 0, if it only supports clients to put pre-existing RSS queues into PD-mode using the NdisPDOnRssReceiveQueues routine.
MaxNumberOfTxQueues
The maximum number of transmit queues the provider can create using the NdisPDAllocateQueue routine. The provider must not set this value to 0.
MaxNumberOfRxQueuesForDefaultVport
The maximum number of receive queues that the provider supports for the default virtual port.
MaxNumberOfTxQueuesForDefaultVport
The maximum number of transmit queues that the provider supports for the default virtual port.
MaxNumberOfRxQueuesPerNonDefaultVport
The maximum number of receive queues that the provider supports for non-default virtual ports.
MaxNumberOfTxQueuesPerNonDefaultVport
The maximum number of transmit queues that the provider supports for non-default virtual ports.
ExactMatchProfileArrayOffset
The array offset for an array of NDIS_GFP_EXACT_MATCH_PROFILE structures.
ExactMatchProfileArrayNumElements
The number of elements for an array of NDIS_GFP_EXACT_MATCH_PROFILE structures.
ExactMatchProfileArrayElementSize
The number of elements for an array of NDIS_GFP_EXACT_MATCH_PROFILE structures.
WildcardMatchProfileArrayOffset
The array offset for an array of NDIS_GFP_WILDCARD_MATCH_PROFILE structures.
WildcardMatchProfileArrayNumElements
The number of elements for an array of NDIS_GFP_WILDCARD_MATCH_PROFILE structures.
WildcardMatchProfileArrayElementSize
The number of elements for an array of NDIS_GFP_WILDCARD_MATCH_PROFILE structures.
MinimumModerationInterval
MaximumModerationInterval
ModerationIntervalGranularity
MaxRxQueueSize
MaxTxQueueSize
Remarks
This structure must be aligned on an 8-byte boundary.
If the provider has a flexible implementation where it supports a maximum number of N queues, where any queue can be purposed flexibly as either an Rx or Tx queue, the provider should advertise ~N/2 for the MaxNumberOfRxQueues and MaxNumberOfTxQueues values because clients typically create a matching number of Rx and Tx queues.
If a provider can partition Rx or Tx queues flexibly between virtual ports then is can use NDIS_PD_QUEUE_COUNT_DYNAMIC for the virtual port specific max counts.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 |
Minimum supported server | Windows Server 2016 |
Header | ntddndis.h (include Ndis.h) |