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 |