HomeFreeBSD

e1000: fix 82574 MSI-X interrupt throttling

Description

e1000: fix 82574 MSI-X interrupt throttling

em_newitr() and the per-queue interrupt_rate sysctl both tested
que->msix to decide whether an 82574 is running in MSI-X mode. 0 is a
valid MSI-X vector so queue 0 was misclassified as legacy/MSI.

Test sc->intr_type == IFLIB_INTR_MSIX instead. While here, index the tx
EITR read by tque->msix rather than tque->me so it matches the register
em_newitr() actually writes; the two differ once tx_num_queues exceeds
rx_num_queues.

Also seed que->itr_setting in em_initialize_receive_unit() with the rate
the hardware was just programmed with. Otherwise an itr_setting left
over from AIM across an interface re-init makes the change detection in
em_newitr() suppress the write that would restore it, leaving the
hardware at the default rate while software believes otherwise.

Fixes: 3e501ef89667 ("e1000: Re-add AIM")

(cherry picked from commit 941113a0097ea047bd493f7f78b384718249779d)

Details

Provenance
Kevin Bowling <kbowling@FreeBSD.org>Authored on Jul 25 2026, 10:43 AM
Parents
rGac2ebda1afd5: packages/tests: Fix gtest dependency
Branches
Unknown
Tags
Unknown

Event Timeline

Kevin Bowling <kbowling@FreeBSD.org> committed rG2389c5d8b471: e1000: fix 82574 MSI-X interrupt throttling (authored by Kevin Bowling <kbowling@FreeBSD.org>).Jul 31 2026, 12:50 AM