NDIS_RECEIVE_SCALE_PARAMETERS 구조체(ntddndis.h)
NDIS_RECEIVE_SCALE_PARAMETERS 구조체는 미니포트 어댑터에 대한 RSS(수신측 크기 조정) 매개 변수를 지정합니다.
버전 정보
구문
typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
NDIS_OBJECT_HEADER Header;
USHORT Flags;
USHORT BaseCpuNumber;
ULONG HashInformation;
USHORT IndirectionTableSize;
ULONG IndirectionTableOffset;
USHORT HashSecretKeySize;
ULONG HashSecretKeyOffset;
ULONG ProcessorMasksOffset;
ULONG NumberOfProcessorMasks;
ULONG ProcessorMasksEntrySize;
PROCESSOR_NUMBER DefaultProcessorNumber;
} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
멤버
Header
NDIS_RECEIVE_SCALE_PARAMETERS 구조체의 NDIS_OBJECT_HEADER 구조체입니다. Header에서 지정하는 구조체의 Type 멤버를 NDIS_OBJECT_TYPE_RSS_PARAMETERS 설정합니다.
NDIS 6.60 이상 드라이버의 경우 Revision 멤버를 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 설정하고 Size 멤버를 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3.
NDIS 6.20 및 NDIS 6.60 이전 드라이버의 경우 수정 멤버를 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 설정하고 Size 멤버를 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2.
NDIS 6.0 드라이버의 경우 수정 멤버를 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 설정하고 Size 멤버를 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1.
Flags
미니포트 드라이버가 수신 규모 매개 변수를 사용하여 수행해야 하는 작업을 나타내는 USHORT 값입니다. 드라이버는 이러한 플래그를 사용하여 변경된 매개 변수를 신속하게 확인하고 그에 따라 RSS 설정을 업데이트할 수 있습니다.
참고
변경되지 않은 RSS 매개 변수 정보를 참조하는 플래그는 최적화를 위한 것입니다. 플래그가 설정되면 해당 매개 변수를 변경하지 않습니다. 플래그가 명확한 경우 해당 매개 변수가 변경되었거나 변경되지 않았을 수 있으며 미니포트 드라이버는 매개 변수의 잠재적인 변경을 확인하기 위해 매개 변수의 새 값을 현재 값과 비교해야 합니다.
쿼리 요청에서 이 멤버를 0으로 설정합니다.
집합 요청에서 플래그는 다음과 같이 정의됩니다.
값 | 의미 |
---|---|
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED | BaseCpuNumber 멤버가 변경되지 않았습니다. |
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED | HashInformation 멤버가 변경되지 않았습니다. 해시 정보에는 해시 형식 및 해시 함수가 포함됩니다. |
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED | 간접 참조 테이블 및 연결된 데이터 멤버는 변경되지 않았습니다. |
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED | 비밀 키 및 연결된 데이터 멤버가 변경되지 않았습니다. |
NDIS_RSS_PARAM_FLAG_DISABLE_RSS | 이 플래그가 설정된 경우 미니포트 드라이버는 다른 모든 플래그 및 설정을 무시하고 NIC에서 RSS를 사용하지 않도록 설정해야 합니다. |
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED | 이 플래그를 설정하면 DefaultProcessorNumber 가 변경되지 않습니다. |
BaseCpuNumber
RSS에 사용할 가장 낮은 CPU 수입니다. 이 값은 간접 참조 테이블에 통합되므로 BaseCpuNumber 를 0으로 설정합니다.
HashInformation
집합 요청에서 이 멤버는 NIC가 들어오는 패킷에 대한 해시 값을 계산하는 데 사용해야 하는 해시 형식 및 해시 함수입니다. HashInformation 멤버 내에 지정된 해시 함수가 0이면 RSS가 비활성화됩니다.
쿼리 요청에서 이 멤버는 NIC에서 사용하는 해시 형식 및 해시 함수입니다.
드라이버와 NDIS를 과도하게 사용하면 NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC 매크로를 사용하여 해시 형식과 해시 함수를 해시 정보로 결합하고 HashInformation 멤버를 설정할 수 있습니다.
미니포트 드라이버는 NDIS_RSS_HASH_TYPE_FROM_HASH_INFO 매크로를 사용하여 HashInformation 에서 해시 형식을, NDIS_RSS_HASH_FUNC_FROM_HASH_INFO 매크로를 사용하여 해시 함수를 가져올 수 있습니다.
IndirectionTableSize
간접 참조 테이블의 크기(바이트)입니다. RSS 매개 변수를 설정하는 상위 계층 드라이버는 간접 참조 테이블의 항목 수가 2의 강력한지 확인해야 합니다.
IndirectionTableOffset
NDIS_RECEIVE_SCALE_PARAMETERS 구조체의 시작 부분에서 간접 참조 테이블의 오프셋입니다. 이 오프셋을 사용하여 간접 참조 테이블을 가져옵니다.
HashSecretKeySize
해시 함수의 비밀 키 배열 크기(바이트)입니다. 배열의 크기는 NdisHashFunctionToeplitz의 경우 40바이트입니다.
HashSecretKeyOffset
NDIS_RECEIVE_SCALE_PARAMETERS 구조체의 시작부터 해시 함수의 비밀 키 배열 오프셋입니다. 이 오프셋을 사용하여 320비트(40바이트) 비밀 키를 가져옵니다.
설정된 요청에서 비밀 키는 오버리싱 드라이버가 선택하는 모든 데이터를 포함할 수 있습니다.
쿼리 요청에서 비밀 키에는 NIC가 사용하는 데이터가 포함됩니다.
ProcessorMasksOffset
NDIS_RECEIVE_SCALE_PARAMETERS 구조체의 시작부터 프로세서 마스크 배열의 오프셋입니다.
NumberOfProcessorMasks
간접 참조 테이블에 사용되는 프로세서를 나타내는 GROUP_AFFINITY 형식 배열의 요소 수
ProcessorMasksEntrySize
프로세서 마스크 배열 항목의 크기(바이트)입니다.
DefaultProcessorNumber
RSS를 사용하도록 설정하면 해시를 계산할 수 없는 패킷을 받을 프로세서를 지정합니다.
설명
NDIS_RECEIVE_SCALE_PARAMETERS 구조체는 OID_GEN_RECEIVE_SCALE_PARAMETERS OID에 대한 RSS(수신측 크기 조정) 매개 변수를 정의합니다.
참고
간접 참조 테이블 및 비밀 키는 NDIS_RECEIVE_SCALE_PARAMETERS 구조체 멤버 다음에 추가됩니다.
간접 참조 테이블의 버전별 형식은 다음과 같습니다.
NDIS 버전 | 서식 |
---|---|
NDIS 6.20 이상 버전 | PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)]; |
NDIS 6.20 이전 | CCHAR IndirectionTable[IndirectionTableSize] |
드라이버 스택에 이전 및 최신 드라이버가 있는 경우 NDIS는 간접 참조 테이블을 자동으로 변환합니다.
미니포트 드라이버는 간접 참조 테이블을 검사하여 하드웨어 큐와 연결할 CPU 번호를 결정해야 합니다. 간접 참조 테이블에 표시되는 총 CPU 번호 수가 NIC에서 지원하는 하드웨어 큐 수보다 많은 경우 미니포트 드라이버는 간접 참조 테이블에서 CPU 번호의 하위 집합을 선택해야 합니다. 하위 집합은 하드웨어 큐 수와 같습니다.
미니포트 드라이버는 OID_GEN_RECEIVE_SCALE_CAPABILITIES 대한 응답으로 수신 큐 수 값을 지정했습니다.
RSS 매개 변수를 지우고 RSS를 사용하지 않도록 설정하려면 NDIS는 HashInformation 멤버 내에 지정된 해시 함수를 0으로 설정합니다. NDIS는 NDIS_RECEIVE_SCALE_PARAMETERS 구조에서 NDIS_RSS_PARAM_FLAG_DISABLE_RSS 플래그를 설정하여 RSS를 사용하지 않도록 설정할 수도 있습니다.
RSS를 사용하지 않도록 설정하면 미니포트 드라이버는 RSS 작업을 수행하지 않고 수신 작업을 처리해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
머리글 | ntddndis.h(Ndis.h 포함) |
추가 정보
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO