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 |