Share via


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 포함)

추가 정보

Receive Side Scaling (RSS)

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO

NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC

NDIS_RSS_HASH_TYPE_FROM_HASH_INFO

OID_GEN_RECEIVE_SCALE_CAPABILITIES

OID_GEN_RECEIVE_SCALE_PARAMETERS