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 125
5.4.2.1.2 Hash for IPv4 with UDP
Concatenate SourceAddress, DestinationAddress, SourcePort, DestinationPort into one
single byte-array, preserving the order in which they occurred in the packet: Input[12]
= @12-15, @16-19, @20-21, @22-23.
Result = ComputeHash(Input, 12);
5.4.2.1.3 Hash for IPv4 without TCP
Concatenate SourceAddress and DestinationAddress into one single byte-array
Input[8] = @12-15, @16-19
Result = ComputeHash(Input, 8)
5.4.2.1.4 Hash for IPv6 with TCP
Similar to above:
Input[36] = @8-23, @24-39, @40-41, @42-43
Result = ComputeHash(Input, 36)
5.4.2.1.5 Hash for IPv6 with UDP
Similar to above:
Input[36] = @8-23, @24-39, @40-41, @42-43
Result = ComputeHash(Input, 36)
5.4.2.1.6 Hash for IPv6 without TCP
Input[32] = @8-23, @24-39
Result = ComputeHash(Input, 32)
5.4.2.2 Indirection Table
The indirection table is a 128-entry structure, indexed by the 7 least significant bits of the hash function
output. Each entry of the table contains the following:
• Bit [7:6]: Queue index. for pool 1 or regular RSS
• Bits [5:4]: Reserved
• Bits [3:2]: Queue index for pool 0
• Bits [1:0]: Reserved
The Queue Index determines the physical queue for the packet.
System software can update the indirection table during run time. Such updates of the table are not
synchronized with the arrival time of received packets. Therefore, it is not guaranteed that a table
update takes effect on a specific packet boundary.