共用方式為


EVT_NET_ADAPTER_RECEIVE_SCALING_ENABLE回呼函式 (netreceivescaling.h)

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

語法

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

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

[_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 adapter 時呼叫 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;
}

要求

要求 價值
目標平臺 普遍
最低 KMDF 版本 1.27
最低 UMDF 版本 2.33
標頭 netreceivescaling.h (包括 netadaptercx.h)
IRQL PASSIVE_LEVEL

另請參閱

EvtNetAdapterReceiveScalingDisable

NetAdapterCx 接收端調整