共用方式為


EVT_NET_ADAPTER_RECEIVE_SCALING_ENABLE回呼函式 (netreceivescaling.h)

EvtNetAdapterReceiveScalingEnable 回呼函式是由用戶端驅動程序實作,以啟用網路介面控制器的接收端調整 (RSS) , (NIC) 。

語法

EVT_NET_ADAPTER_RECEIVE_SCALING_ENABLE EvtNetAdapterReceiveScalingEnable;

NTSTATUS EvtNetAdapterReceiveScalingEnable(
  [_In_] NETADAPTER Adapter,
  [_In_] NET_ADAPTER_RECEIVE_SCALING_HASH_TYPE HashType,
  [_In_] NET_ADAPTER_RECEIVE_SCALING_PROTOCOL_TYPE ProtocolType
)
{...}

參數

[_In_] Adapter

在先前呼叫 NetAdapterCreate 中取得的用戶端驅動程式 NETADAPTER 物件。

[_In_] HashType

NET_ADAPTER_RECEIVE_SCALING_HASH_TYPE值,指定 NIC 應該用來計算傳入封包哈希值的接收端調整類型 (RSS) 哈希函式。

[_In_] ProtocolType

NET_ADAPTER_RECEIVE_SCALING_PROTOCOL_TYPE值,指定 RSS 功能 NIC 必須用來計算 RSS 哈希值的接收網路數據部分。

傳回值

如果已成功啟用 RSS,則傳回STATUS_SUCCESS。 否則,會傳回適當的NTSTATUS錯誤碼。

備註

設定 NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES 結構的適當成員,然後呼叫 NetAdapterSetReceiveScalingCapabilities,註冊此回呼函式的實作。 用戶端驅動程式通常會在啟動 Net 配接器之前呼叫 NetAdapterSetReceiveScalingCapabilities ,再呼叫 NetAdapterStart

範例

在此回呼中,用戶端會在硬體中設定適當的控制位,以使用提供的資訊開啟 RSS。

重要

用戶端驅動程序 不應該其 EvtNetAdapterReceiveScalingEnable 回呼清除或重設其間接數據表。 架構會設定驅動程式的初始間接取值數據表狀態。

NTSTATUS
MyEvtNetAdapterReceiveScalingEnable(
	_In_ NETADAPTER Adapter,
	_In_ NET_ADAPTER_RECEIVE_SCALING_HASH_TYPE HashType,
	_In_ NET_ADAPTER_RECEIVE_SCALING_PROTOCOL_TYPE ProtocolType
)
{
	NTSTATUS status = STATUS_SUCCESS;

	// Not using the hash type in this example
	UNREFERENCED_PARAMETER(HashType);

	UINT32 controlBitsEnable = MY_RSS_MULTI_CPU_ENABLE | MY_RSS_HASH_BITS_ENABLE;

	// Set the appropriate control bits for IPv4
	if(ProtocolType & NetAdapterReceiveScalingProtocolTypeIPv4)
	{
		controlBitsEnable |= MY_RSS_IPV4_ENABLE;

		if (ProtocolType & NetAdapterReceiveScalingProtocolTypeTcp)
        {
            controlBitsEnable |= MY_RSS_IPV4_TCP_ENABLE;
        }
	}

	// Repeat for IPv6
	...

	// Set the bits in hardware
	if(!MyHardwareRssSetControl(controlBitsEnable))
	{
		WdfDeviceSetFailed(Adapter->WdfDevice, WdfDeviceFailedAttemptRestart);
        return STATUS_UNSUCCESSFUL;
	}

	// Perform other tasks like restarting the Rx queue

	return STATUS_SUCCESS;
}

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.27
最低UMDF版本 2.33
標頭 netreceivescaling.h (包含 netadaptercx.h)
IRQL PASSIVE_LEVEL

另請參閱

EvtNetAdapterReceiveScalingDisable

NetAdapterCx 接收端調整