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 适配器时调用 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 (include netadaptercx.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtNetAdapterReceiveScalingDisable

NetAdapterCx 接收方缩放