Greetings:
Welcome to v6.
See changelog below and in each patch for changes from v5 [1].
This revision was created due to a report from Vitaly [2], that my v5
should use different function and variable names, like igb.
As you'll see, I've modified patch 2 to use __igc_resume instead of
__igc_do_resume and bool rpm instead of bool need_rtnl.
I retest the patches on each revision using my igc hardware as
documented in the commit messages. I have no idea how to test
suspend/resume (or if my NUC even supports that), so the power
management bits are untested.
Overall, this series adds support for netdev-genl to igc so that
userland apps can query IRQ, queue, and NAPI instance relationships.
This is useful because developers who have igc NICs (for example, in
their Intel NUCs) who are working on epoll-based busy polling apps and
using SO_INCOMING_NAPI_ID, need access to this API to map NAPI IDs back
to queues.
See the commit messages of each patch for example output I got on my igc
hardware.
Thanks to reviewers and maintainers for their comments/feedback!
Thanks,
Joe
[1]: https://lore.kernel.org/netdev/20241028195243.52488-1-jdamato@fastly.com/
[2]: https://lore.kernel.org/netdev/f02044c0-1d90-49f8-8a2d-00ec84fba27a@intel.com/
v6:
- Adjusts patch 2 to use different names: __igc_resume instead of
__igc_do_resume and bool rpm instead of bool need_rtnl. No other
functional changes were introduced.
v5: https://lore.kernel.org/netdev/20241028195243.52488-1-jdamato@fastly.com/
- Add a small wrapper to patch 2 to only hold rtnl when resume is
called, but avoid rtnl when runtime_resume is called which would
trigger a deadlock.
v4: https://lore.kernel.org/netdev/20241022215246.307821-1-jdamato@fastly.com/
- Fixed a typo in Patch 1's commit message for the "other" IRQ number
- Based on a bug report for e1000, closer scrutiny of the code
revealed two paths where rtnl_lock / rtnl_unlock should be added in
Patch 2: igc_resume and igc_io_error_detected. The code added to
igc_io_error_detected is inspired by ixgbe's
ixgbe_io_error_detected
v3: https://lore.kernel.org/netdev/20241018171343.314835-1-jdamato@fastly.com/
- No longer an RFC
- Patch 1: no changes
- Patch 2:
- Replace igc_unset_queue_napi with igc_set_queue_napi(..., NULL),
as suggested by Vinicius Costa Gomes
- Simplify implementation of igc_set_queue_napi as suggested by Kurt
Kanzenbach, with a minor change to use the ring->queue_index
rfcv2: https://lore.kernel.org/netdev/20241014213012.187976-1-jdamato@fastly.com/
- Patch 1: update line wrapping to 80 chars
- Patch 2:
- Update commit message to include output for IGC_FLAG_QUEUE_PAIRS
enabled and disabled
- Significant refactor to move queue mapping code to helpers to be
called from multiple locations
- Adjusted code to handle IGC_FLAG_QUEUE_PAIRS disabled as suggested
by Kurt Kanzenbach
- Map / unmap queues in igc_xdp_disable_pool and
igc_xdp_enable_pool, respectively, as suggested by Vinicius Costa
Gomes to handle the XDP case
rfcv1: https://lore.kernel.org/lkml/20241003233850.199495-1-jdamato@fastly.com/
Joe Damato (2):
igc: Link IRQs to NAPI instances
igc: Link queues to NAPI instances
drivers/net/ethernet/intel/igc/igc.h | 2 +
drivers/net/ethernet/intel/igc/igc_main.c | 59 +++++++++++++++++++----
drivers/net/ethernet/intel/igc/igc_xdp.c | 2 +
3 files changed, 54 insertions(+), 9 deletions(-)
base-commit: c093e2b9768b3a5cd7a37ea654cd47094519f843
--
2.25.1