Public bug reported:
SRU Justification:
[Impact]
On BlueField systems using the mlxbf_gige driver (the OOB management
Ethernet interface), the RX path can stall permanently. If receive
completions (CQEs) arrive after NAPI's final check but before the RX
interrupt is unmasked, and they fill the RX ring, the hardware has
nowhere to write further completions. The interrupt only fires when a
CQE is written while it is unmasked, so it never fires again. NAPI is
never rescheduled and the interface stops receiving packets.
[Fix]
* After mlxbf_gige_poll() completes NAPI and unmasks the RX interrupt,
it now checks whether CQEs are already pending (new helper
mlxbf_gige_rx_pending(), comparing RX_CQE_PACKET_CI against RX_WQE_PI).
If so, it calls napi_schedule() to process them. This closes the window
where CQEs written while the interrupt was masked fill the ring, so no
new interrupt is ever raised and RX stalls.
[Test Case]
* Sustained throughput test cases and scaling use cases with large
number of SF interfaces and CPU utilization
[Regression Potential]
Adds additional register read overhead but should not cause functional
regression
** Affects: linux-bluefield (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2170231
Title:
mlxbf_gige: RX hang after NAPI poll unmasks interrupt with CQEs
already pending
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-bluefield/+bug/2170231/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs