Intel 324632-003 Switch User Manual


 
Multiple Receive Queues & Receive-Side Scaling (RSS) — Intel
®
82575EB Gigabit Ethernet
Controller
324632-003 Intel
®
82575EB Gigabit Ethernet Controller
Revision: 2.1 Software Developer’s Manual and EEPROM Guide
January 2011 123
IPv6Ex. The 82575 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. If the specified extension headers are not present in the
packet, the 82575 uses the source/destination from the standard IPv6 header.
TCPIPv6Ex. The 82575 parses the packet to identify an IPv6 packet containing a TCP segment with
extensions. 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. If the specified
extension headers are not present in the packet, the 82575 uses the source/destination from the
standard IPv6 header.
The following cases are in addition to the RSS standard:
UDPIPv4 - The 82575 parses the packet to identify a packet with UDP over IPv4
UDPIPv6 - The 82575 parses the packet to identify a packet with UDP over IPv6
UDPIPv6Ex - The 82575 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 (for example, IP options can be parsed or the packet is not
encrypted).
The packet is not IP fragmented (even if the fragment contains a complete TCP header).
Note: When RSS is enabled (MRQC.MRQE equals 010b, 101b or 110b), TCP Rx checksum must
also be enabled (RXCSUM.TUOFL = 1b).
Bits[31:16] of the Multiple Receive Queues Command (MRQC) register enable each of the above hash
function variations (several may 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.
a. Try using the TCP/IPv4 function.
b. Try using the IPv4_UDP function.
c. Try using the IPv4 function.
IPv6 Packet.
a. If TCPIPv6Ex is enabled, try using the TCP/IPv6Ex function; else, if TCPIPv6 is enabled, try using
the TCPIPv6 function.
b. If UDPIPv6Ex is enabled, try using the UDPIPv6EX function; else, if UDPIPv6 is enabled, try using
the UDPIPv6 function.
c. If IPv6Ex is enabled, try using the IPv6Ex function; else, if IPv6 is enabled, try using the IPv6
function.
The following combinations are currently supported:
Any combination of IPv4, TCPIPv4, and UDPIPv4, and or,
Any combination of either IPv6, TCPIPv6, and UDPIPv6 or IPv6Ex, TCPiPv6Ex, and UDPIPv6Ex
When a packet cannot be parsed by the above rules, it enters hardware queue 0. The 32-bit tag (which
is a result of the hash function) equals 0. The 5-bit MRQ field also equals zero.
In the case of tunneling (for example, IPv4-IPv6 tunnel), the external IP address (in the base header)
is used.