]> git.baikalelectronics.ru Git - kernel.git/commit
ixgbe: Introduce MSI-X queue vector code
authorAyyappan Veeraiyan <ayyappan.veeraiyan@intel.com>
Mon, 3 Mar 2008 23:03:45 +0000 (15:03 -0800)
committerJeff Garzik <jeff@garzik.org>
Mon, 17 Mar 2008 11:49:28 +0000 (07:49 -0400)
commit7a071c8fcfdbfb21deba09a111f714fc1bdccc35
tree44670c729adad8c4def18e4ff417542b5ad75b13
parente912222c32c7a4019bf6d2d4cc562ba7bb0efd7f
ixgbe: Introduce MSI-X queue vector code

This code abstracts the per-queue MSI-X interrupt vector into
a queue vector layer. This abstraction is needed since there can
be many more queues than available MSI-X vectors in a machine.

The MSI-X irq vectors are remapped to a shared queue vector which
can point to several (both RX and TX) hardware queues. The NAPI
algorithm then cleans the appropriate ring/queues on interrupt
or poll.

The remapping is a delicate and complex calculation to make sure
that we're not unbalancing the irq load, and spreads the irqs
as much as possible, and may combine RX and TX flows onto the
same queue vector.

This effectively enables receive flow hashing across vectors
and helps irq load balance across CPUs.

Signed-off-by: Ayyappan Veeraiyan <ayyappan.veeraiyan@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Waskiewicz Jr, Peter P <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_main.c