summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2014-06-30 04:38:29 +0000
committeradrian <adrian@FreeBSD.org>2014-06-30 04:38:29 +0000
commit6ffa0d594309453f08a9432c4bede71848667751 (patch)
tree89c993138532a6220bbadea24c7f5b07e4091d46 /etc
parent2f929eee57006cde2def6ffd267107040343bd80 (diff)
downloadFreeBSD-src-6ffa0d594309453f08a9432c4bede71848667751.zip
FreeBSD-src-6ffa0d594309453f08a9432c4bede71848667751.tar.gz
Add initial RSS awareness to the ixgbe(4) driver.
The ixgbe(4) hardware is capable of RSS hashing RX packets and doing RSS queue selection for up to 8 queues. However, even if multi-queue is enabled for ixgbe(4), the RX path doesn't use the RSS flowid from the received descriptor. It just uses the MSIX queue id. This patch does a handful of things if RSS is enabled: * Instead of using a random key at boot, fetch the RSS key from the RSS code and program that in to the RSS redirection table. That whole chunk of code should be double checked for endian correctness. * Use the RSS queue mapping to CPU ID to figure out where to thread pin the RX swi thread and the taskqueue threads for each queue. * The software queue is now really an "RSS bucket". * When programming the RSS indirection table, use the RSS code to figure out which RSS bucket each slot in the indirection table maps to. * When transmitting, use the flowid RSS mapping if the mbuf has an RSS aware hash. The existing method wasn't guaranteed to align correctly with the destination RSS bucket (and thus CPU ID.) This code warns if the number of RSS buckets isn't the same as the automatically configured number of hardware queues. The administrator will have to tweak one of them for better performance. There's currently no way to re-balance the RSS indirection table after startup. I'll worry about that later. Additionally, it may be worthwhile to always use the full 32 bit flowid if multi-queue is enabled. It'll make things like lagg(4) behave better with respect to traffic distribution.
Diffstat (limited to 'etc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud