As a query, NDIS and overlying drivers can use the OID_GEN_RECEIVE_SCALE_PARAMETERS OID to query the current receive side scaling (RSS) parameters of a NIC. NDIS returns an NDIS_RECEIVE_SCALE_PARAMETERS structure that defines the current RSS parameters.
As a set, NDIS and overlying drivers use the OID_GEN_RECEIVE_SCALE_PARAMETERS OID to set the current RSS parameters of a NIC. The miniport driver receives an NDIS_RECEIVE_SCALE_PARAMETERS structure that defines the RSS parameters.
In RSSv2, this OID is only used to query current RSS parameters of a given scaling entity. For miniport drivers that support RSSv2, see OID_GEN_RECEIVE_SCALE_PARAMETERS_V2 for setting RSS parameters other than the indirection table.
For NDIS miniport drivers, the query is not requested and the set is required for drivers that support RSS. NDIS handles the query for miniport drivers.
The TCP/IP driver configures IPv4 and IPv6 with a single OID set request of OID_GEN_RECEIVE_SCALE_PARAMETERS. That is, when the stack should enable RSS for both IPv4 and IPv6, it sets both of the corresponding flags in the HashInformation member of the NDIS_RECEIVE_SCALE_PARAMETERS structure and sends one OID request. Also, IPv4 and IPv6 use the same secret key and the key will always be 40 bytes, even if only IPv4 is enabled.
The underlying miniport adapter must use the most recent OID_GEN_RECEIVE_SCALE_PARAMETERS OID settings it has received. For example, if the miniport gets an OID_GEN_RECEIVE_SCALE_PARAMETERS OID with the IPv4 hash types missing, it must disable IPv4 RSS if it was previously enabled.
Note An overlying driver can use the OID_GEN_RECEIVE_HASH OID to enable and configure hash calculations on received frames without enabling RSS.
Note Protocol drivers must disable receive hash calculations (OID_GEN_RECEIVE_HASH) before they enable RSS. If RSS is enabled, a protocol driver disables RSS before it enables receive hash calculations. A miniport driver should fail a set request with NDIS_STATUS_INVALID_OID or NDIS_STATUS_NOT_SUPPORTED to enable RSS if OID_GEN_RECEIVE_HASH is currently enabled.
Note The indirection table and secret key are appended after the NDIS_RECEIVE_SCALE_PARAMETERS structure members. For more information about the indirection table and secret key, see NDIS_RECEIVE_SCALE_PARAMETERS.
Supported in NDIS 6.0 and later.
|Ntddndis.h (include Ndis.h)|