Data Sheet
Inline Functions—Ethernet Controller I210
261
7.1.2.10.1 RSS Hash Function
Section 7.1.2.10.1 provides a verification suite used to validate that the hash function is computed
according to Microsoft* nomenclature.
The I210 hash function follows Microsoft* definition. A single hash function is defined with several
variations for the following cases:
•TcpIPv4 — The I210 parses the packet to identify an IPv4 packet containing a TCP segment per the
criteria described later in this section. If the packet is not an IPv4 packet containing a TCP segment,
RSS is not done for the packet.
•IPv4 — The I210 parses the packet to identify an IPv4 packet. If the packet is not an IPv4 packet,
RSS is not done for the packet.
•TcpIPv6 — The I210 parses the packet to identify an IPv6 packet containing a TCP segment per the
criteria described later in this section. If the packet is not an IPv6 packet containing a TCP segment,
RSS is not done for the packet.
•TcpIPv6Ex — The I210 parses the packet to identify an IPv6 packet containing a TCP segment with
extensions per the criteria described later in this section. If the packet is not an IPv6 packet
containing a TCP segment, RSS is not done for the packet. Extension headers should be parsed for
a Home-Address-Option field (for source address) or the Routing-Header-Type-2 field (for
destination address).
•IPv6Ex — The I210 parses the packet to identify an IPv6 packet. Extension headers should be
parsed for a Home-Address-Option field (for source address) or the Routing-Header-Type-2 field
(for destination address). Note that the packet is not required to contain any of these extension
headers to be hashed by this function. In this case, the IPv6 hash is used. If the packet is not an
IPv6 packet, RSS is not done for the packet.
•IPv6 — The I210 parses the packet to identify an IPv6 packet. If the packet is not an IPv6 packet,
receive-side-scaling is not done for the packet.
The following additional cases are not part of the Microsoft* RSS specification:
• UdpIPV4 — The I210 parses the packet to identify a packet with UDP over IPv4.
• UdpIPV6 — The I210 parses the packet to identify a packet with UDP over IPv6.
• UdpIPV6Ex — The I210 parses the packet to identify a packet with UDP over IPv6 with extensions.
A packet is identified as containing a TCP segment if all of the following conditions are met:
• The transport layer protocol is TCP (not UDP, ICMP, IGMP, etc.).
• The TCP segment can be parsed (such as IP options can be parsed, packet not encrypted).
• The packet is not fragmented (even if the fragment contains a complete TCP header).
Bits[31:16] of the Multiple Receive Queues Command (MRQC) register enable each of the above hash
function variations (several can be set at a given time). If several functions are enabled at the same
time, priority is defined as follows (skip functions that are not enabled):
IPv4 packet:
1. Try using the TcpIPv4 function.
2. Try using IPV4_UDP function.
3. Try using the IPv4 function.
IPv6 packet:
1. If TcpIPv6Ex is enabled, try using the TcpIPv6Ex function; else if TcpIPv6 is enabled try using the
TcpIPv6 function.