NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES structure

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.

NetAdapterCx is preview only in Windows 10, version 1903.

The NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES structure describes a net adapter's receive side scaling (RSS) capabilities.

Syntax

typedef struct _NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES {
  ULONG                                                   Size;
  SIZE_T                                                  NumberOfQueues;
  SIZE_T                                                  IndirectionTableSize;
  SIZE_T                                                  UnhashedTargetIndex;
  NET_ADAPTER_RECEIVE_SCALING_UNHASHED_TARGET_TYPE        UnhashedTargetType;
  NET_ADAPTER_RECEIVE_SCALING_HASH_TYPE                   ReceiveScalingHashTypes;
  NET_ADAPTER_RECEIVE_SCALING_PROTOCOL_TYPE               ReceiveScalingProtocolTypes;
  struct {
    NET_ADAPTER_RECEIVE_SCALING_ENCAPSULATION_TYPE Outer;
    NET_ADAPTER_RECEIVE_SCALING_ENCAPSULATION_TYPE Inner;
  } ReceiveScalingEncapsulationTypes;
  _RECEIEVE_SCALING_ENCAPSULATION                         _RECEIEVE_SCALING_ENCAPSULATION;
  BOOLEAN                                                 SynchronizeSetIndirectionEntries;
  PFN_NET_ADAPTER_RECEIVE_SCALING_ENABLE                  EvtAdapterReceiveScalingEnable;
  PFN_NET_ADAPTER_RECEIVE_SCALING_DISABLE                 EvtAdapterReceiveScalingDisable;
  PFN_NET_ADAPTER_RECEIVE_SCALING_SET_HASH_SECRET_KEY     EvtAdapterReceiveScalingSetHashSecretKey;
  PFN_NET_ADAPTER_RECEIVE_SCALING_SET_INDIRECTION_ENTRIES EvtAdapterReceiveScalingSetIndirectionEntries;
} NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES;

Members

Size

The size of this structure, in bytes.

NumberOfQueues

The number of hardware receive queues. This member must be a power of 2.

IndirectionTableSize

The number of indirection table entries. This member must be a power of 2.

UnhashedTargetIndex

The default destination for frames to which no hash is applied. The value of this member depends on the value of the UnhashedTargetType member:

  • If UnhashedTargetType is set to NetAdapterReceiveScalingUnhashedTargetTypeUnspecified, UnhashedTarget is ignored.
  • If UnhashedTargetType is set to NetAdapterReceiveScalingUnhashedTargetTypeHashIndex, UnhashedTarget specifies a hash index in the indirection table.

This member must be N, where 0 <= N < IndirectionTableSize.

UnhashedTargetType

A NET_ADAPTER_RECEIVE_SCALING_UNHASHED_TARGET_TYPE value that indicates the type of handling for unhashed frames.

If this member is set to NetAdapterReceiveScalingUnhashedTargetTypeUnspecified, then UnhashedTargetIndex is ignored and defaults to 0.

If this member is set to NetAdapterReceiveScalingUnhashedTargetTypeHashIndex, then UnhashedTargetIndex indicates the target hash value.

ReceiveScalingHashTypes

A NET_ADAPTER_RECEIVE_SCALING_HASH_TYPE value that indicates supported hash function types for calculating hash values.

ReceiveScalingProtocolTypes

A NET_ADAPTER_RECEIVE_SCALING_PROTOCOL_TYPE value that indicates the supported protocol types for calculating hash values.

ReceiveScalingEncapsulationTypes

Indicates which encapsulation technologies the hardware is capable of bypassing.

ReceiveScalingEncapsulationTypes.Outer

A bitwise OR of NET_ADAPTER_RECEIVE_SCALING_ENCAPSULATION_TYPE values that indicates the transport (outer) encapsulation types that the NIC is capable of bypassing.

ReceiveScalingEncapsulationTypes.Inner

A bitwise OR of NET_ADAPTER_RECEIVE_SCALING_ENCAPSULATION_TYPE values that indicates the tunnel (inner) encapsulation types that the NIC is capable of bypassing.

_RECEIEVE_SCALING_ENCAPSULATION

The tag identifier for ReceiveScalingEncapsulationTypes.

SynchronizeSetIndirectionEntries

A boolean value that, when set to TRUE, requests that the framework synchronize calls to EvtNetAdapterReceiveScalingSetIndirectionEntries. This member is set to FALSE by default if the client driver does not specify it.

EvtAdapterReceiveScalingEnable

A pointer to the client driver's EvtNetAdapterReceiveScalingEnable event callback function.

EvtAdapterReceiveScalingDisable

A pointer to the client driver's EvtNetAdapterReceiveScalingDisable event callback function.

EvtAdapterReceiveScalingSetHashSecretKey

A pointer to the client driver's EvtNetAdapterReceiveScalingSetHashSecretKey event callback function.

EvtAdapterReceiveScalingSetIndirectionEntries

A pointer to the client driver's EvtNetAdapterReceiveScalingSetIndirectionEntries event callback function.

Remarks

Call NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT to initialize this structure.

The NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES structure is an input parameter to NetAdapterSetReceiveScalingCapabilities. The client must use NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT to initialize this structure before calling NetAdapterSetReceiveScalingCapabilities.

Requirements

   
Minimum KMDF version 1.27
Header netreceivescaling.h

See Also

NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT

NetAdapterSetReceiveScalingCapabilities

NetAdapterCx Receive Side Scaling