Page MenuHomeFreeBSD

Fix em(4) tx interrupt routing

Authored by pkelsey on Feb 3 2019, 12:21 AM.
Referenced Files
F84418729: D19070.id53551.diff
Thu, May 23, 3:43 PM
Unknown Object (File)
Sat, May 11, 10:06 AM
Unknown Object (File)
Mon, May 6, 4:15 AM
Unknown Object (File)
Sat, May 4, 3:15 AM
Unknown Object (File)
Fri, Apr 26, 5:03 AM
Unknown Object (File)
Apr 18 2024, 3:49 PM
Unknown Object (File)
Apr 18 2024, 7:43 AM
Unknown Object (File)
Apr 2 2024, 3:39 AM



In em_if_msix_intr_assign(), the tx msix index is currently computed modulo the number of tx queues instead of modulo the number of rx queues (the intent that was supposed to be implemented here is to map the tx queues to the vectors allocated to the rx queues as iflib uses a combined tx/rx interrupt approach). This fixes the issue.

I didn't encounter a problem operationally, this is just something that stood out while I was doing some reading. I believe this could only cause operational issues in the case where the number of tx queues configured is greater than the number of rx queues configured (tx events would be missed on all tx queues above the number of rx queues, assuming the hardware isn't willing and able to object to the routing of interrupts to unassigned MSI-X vectors during init).

The conversion of '(i % adapter->tx_num_queues)' to 'i' in the eims computations is because taking the modulus of the loop index by the loop limit is pointless and just makes the code harder to read.

Diff Detail

rS FreeBSD src repository - subversion
Lint Not Applicable
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Feb 3 2019, 7:48 AM
This revision was automatically updated to reflect the committed changes.