Page MenuHomeFreeBSD

Fix em(4) tx interrupt routing
ClosedPublic

Authored by pkelsey on Feb 3 2019, 12:21 AM.
Tags
None
Referenced Files
F81592748: D19070.id.diff
Thu, Apr 18, 3:49 PM
Unknown Object (File)
Thu, Apr 18, 7:43 AM
Unknown Object (File)
Tue, Apr 2, 3:39 AM
Unknown Object (File)
Fri, Mar 29, 7:24 AM
Unknown Object (File)
Jan 14 2024, 10:09 AM
Unknown Object (File)
Jan 9 2024, 3:24 AM
Unknown Object (File)
Dec 25 2023, 9:33 PM
Unknown Object (File)
Dec 9 2023, 11:07 AM
Subscribers

Details

Summary

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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
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.