On 3/15/23 16:11, Jakub Kicinski wrote:
On Wed, 15 Mar 2023 15:52:02 -0700 Stephen Hemminger wrote:
On Wed, 15 Mar 2023 15:30:44 -0700
Jakub Kicinski <kuba@xxxxxxxxxx> wrote:
Add basic documentation about NAPI. We can stop linking to the ancient
doc on the LF wiki.
Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
---
CC: jesse.brandeburg@xxxxxxxxx
CC: anthony.l.nguyen@xxxxxxxxx
CC: corbet@xxxxxxx
CC: linux-doc@xxxxxxxxxxxxxxx
The one thing missing, is how to handle level vs edge triggered interrupts.
For level triggered interrupts, the re-enable is inherently not racy.
I.e re-enabling interrupt when packet is present will cause an interrupt.
But for devices with edge triggered interrupts, it is often necessary to
poll and manually schedule again. Older documentation referred to this
as the "rotten packet" problem.
Maybe this is no longer a problem for drivers?
Or maybe all new hardware uses PCI MSI and is level triggered?
It's still a problem depending on the exact design of the interrupt
controller in the chip / tradeoffs the SW wants to make.
I haven't actually read the LF doc, because I wasn't sure about the
licenses (sigh). The rotten packet problem does not come up in reviews
very often, so it wasn't front of mind. I'm not sure I'd be able to
concisely describe it, actually :S There are many races and conditions
which can lead to it.
True, though I would put a word in or two about level vs. edge triggered
anyway, if nothing else, explain essentially what Stephen just provided
ought to be a good starting point for driver writers to consider the
possible issue.
--
Florian