Content deleted Content added
→History: add ref sect |
GreenC bot (talk | contribs) Reformat 1 archive link. Wayback Medic 2.5 per WP:URLREQ#citeftp |
||
(7 intermediate revisions by 6 users not shown) | |||
Line 22:
==Advantages==
* The load induced by [[interrupt request|interrupts]] is reduced even though the kernel has to poll.
* Packets are less likely to be re-ordered, while out of order packet handling might be a bottleneck otherwise. {{Citation needed|date=June 2020}}
* In case the kernel is unable to handle all incoming packets, the kernel does not have to do any work in order to drop them: they are simply overwritten in the [[network card]]'s incoming [[ring buffer]]. Without NAPI, the kernel has to handle every incoming packet regardless of whether there is time to service it, which leads to [[thrashing (computer science)|thrashing]].
==History==
NAPI was an over-three-year effort by Alexey Kuznetsov, Jamal Hadi Salim and Robert Olsson. Initial effort to include NAPI was met with resistance by some members of the community, however [[David S. Miller|David Miller]] worked hard to ensure NAPI's inclusion.
A lot of real world testing was done in the [[Uppsala University|Uppsala university]] network before inclusion. In fact, [https://www.slu.se www.slu.se] was the first production NAPI-based OS and is still powered to this day by NAPI-based Bifrost/Linux routers. The [https://wiki.linuxfoundation.org/networking/pktgen pktgen] [[Packet generator|traffic generator]] was also born around this time. Pktgen was extensively used to test NAPI scenarios not induced by real world traffic.
==References==
Line 39:
|author1=Jamal Hadi Salim |author2=Robert Olsson |author3=Alexey Kuznetsov | date = 2001-11-10
| conference = 5th Annual Linux Showcase & Conference (ALS '01)
|
| pages = 165–172
|
}} The classical NAPI paper.
*{{cite web
Line 49:
| work = [[LWN.net]]
| url = https://lwn.net/Articles/30107/
|
}}
*{{cite web
Line 57:
| work = [[LWN.net]]
| url = https://lwn.net/Articles/214457/
|
}}
*{{cite book
Line 63:
| url = https://lwn.net/Kernel/LDD3/
| chapter = Chapter 17: Networking drivers
|
|date=February 2005
| edition = 3rd
| publisher = O'Reilly Media
| isbn = 978-0-596-00590-0
|
}}
==External links==
* [ftp://robur.slu.se/pub/Linux/net-development/NAPI/ Early NAPI work]
* [http://www.linuxfoundation.org/collaborate/workgroups/networking/napi NAPI description on Linux Foundation] {{Webarchive|url=https://web.archive.org/web/20160611104440/http://www.linuxfoundation.org/collaborate/workgroups/networking/napi |date=2016-06-11 }}
* [https://web.archive.org/web/20111030030517/http://www.linuxfoundation.org/collaborate/workgroups/networking/networkoverview Network overview], November 19, 2009, The Linux Foundation, by Rami Rosen (archived from the original on October 30, 2011)
Line 81:
[[Category:Interfaces of the Linux kernel]]
[[Category:Linux kernel features]]
[[Category:Linux drivers]]
[[Category:Ethernet]]
|