NDIS_RSS_SET_INDIRECTION_ENTRY structure (ntddndis.h)
Warning
Some information in this topic relates to prereleased product, which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
RSSv2 is preview only in Windows 10, version 1803.
The NDIS_RSS_SET_INDIRECTION_ENTRY structure represents a command to set a single indirection table entry. It is contained in an NDIS_RSS_SET_INDIRECTION_ENTRIES structure, which is used in the OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID. OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES is a Synchronous OID for RSS Version 2 (RSSv2).
Syntax
typedef struct _NDIS_RSS_SET_INDIRECTION_ENTRY {
NDIS_NIC_SWITCH_ID SwitchId;
NDIS_NIC_SWITCH_VPORT_ID VPortId;
ULONG Flags;
USHORT IndirectionTableIndex;
PROCESSOR_NUMBER TargetProcessorNumber;
NDIS_STATUS EntryStatus;
} NDIS_RSS_SET_INDIRECTION_ENTRY, *PNDIS_RSS_SET_INDIRECTION_ENTRY;
Members
SwitchId
An NDIS_NIC_SWITCH_ID value that represents the NIC switch where the VPort resides.
The switch identifier is an integer between zero and the number of switches that the network adapter supports. An NDIS_DEFAULT_SWITCH_ID value indicates the default network adapter switch.
This field should be set to 0 in the Native RSS case.
VPortId
An NDIS_NIC_SWITCH_VPORT_ID value that represents the VPort identifier.
This field should be set to 0 in the Native RSS case.
Flags
A ULONG value that contains a bitwise OR of flags. This member qualifies the information in this structure.
Possible flags are as follows:
IndirectionTableIndex
The hash index of the ITE that currently points to the current CPU and is being modified to point to another processor. When the indirection table is inactive (RSS is disabled), the miniport driver should track updates to indirection table entries so it has the correct indirection table when RSS is enabled.
TargetProcessorNumber
The target processor number to which the ITE should point upon completion. The miniport driver should succeed ITE moves from current to current processor.
EntryStatus
An NDIS_STATUS code indicating the status of the move operation for this entry. Because NDIS_RSS_SET_INDIRECTION_ENTRY is used in the context of a Synchronous OID call, the miniport driver cannot return NDIS_STATUS_PENDING for this member.
To simplify miniport drivers' implementation, the upper layer protocol will initialize this field to NDIS_STATUS_PENDING. Miniport drivers must overwrite NDIS_STATUS_PENDING with either a success or failure NDIS status code. If the upper layer detects that this field is still NDIS_STATUS_PENDING upon completion of the OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID, it will cause a system bug check and indicate that the miniport driver is at fault.
Important
All NDIS_RSS_SET_INDIRECTION_ENTRY structures in a group, contained in an NDIS_RSS_SET_INDIRECTION_ENTRIES structure, must be marked with the same EntryStatus.
If an error occurs with this move command, set EntryStatus to one of the following status codes for that error condition:
Status code | Error condition |
---|---|
NDIS_STATUS_INVALID_PARAMETER |
|
NDIS_STATUS_INVALID_PORT_STATE | The VPort is not activated or is in some other state that prevents it from accepting RSSv2 OIDs. |
NDIS_STATUS_NOT_ACCEPTED | The actor CPU was invalid. |
NDIS_STATUS_INVALID_DATA | For an active steering parameter, the new processor is not part of the adapter's RSS processor set. Note that inactive parameters only need to be tracked. They are validated later, during RSS state transition (to on or off). |
NDIS_STATUS_NO_QUEUES | A group of command entries fails the "number of queues" check for the VPort specified by that group. |
Requirements
Requirement | Value |
---|---|
Minimum supported client | Supported in NDIS 6.80 and later. |
Header | ntddndis.h (include Ndis.h) |
See also
NDIS_RSS_SET_INDIRECTION_ENTRIES
OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES