Skip to content

net: low latency Ethernet device polling

Eliezer Tamir lkml netdev 9 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v10 Latest6 patches 18 repliesIn review
  2. v97 patches 23 repliesSuperseded
  3. v87 patches 11 repliesSuperseded
Earlier versions · 6
VersionPostedPatchesRepliesStatus
v75 patches5 repliesSuperseded
v65 patches21 repliesSuperseded
v55 patches12 repliesSuperseded
v44 patches7 repliesSuperseded
v34 patches40 repliesSuperseded
v24 patches15 repliesSuperseded

Change log from the cover letter

v10
- removed select/poll support. (we will work on this some more and try again) v9
- correct sysctl proc_handler, reported by Eric Dumazet and Amir Vadai.
- more int -> bool changes, reported by Eric Dumazet.
- better mask testing in sock_poll(), reported by Eric Dumazet.

Patches in v10 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6net: add napi_id and hashinclude/linux/netdevice.h net/core/dev.c+88 -02 replies
2/6net: add low latency socket pollDocumentation/sysctl/net.txt include/linux/netdevice.h include/linux/skbuff.h +9 more+208 -22 replies
3/6udp: add low latency socket poll supportnet/core/datagram.c net/ipv4/udp.c net/ipv6/udp.c+14 -22 replies
4/6tcp: add low latency socket poll support.net/ipv4/tcp.c net/ipv4/tcp_ipv4.c net/ipv6/tcp_ipv6.c+9 -02 replies
5/6ixgbe: add support for ndo_ll_polldrivers/net/ethernet/intel/ixgbe/ixgbe.h drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c drivers/net/ethernet/intel/ixgbe/ixgbe_main.c+177 -82 replies
6/6ixgbe: add extra stats for ndo_ll_polldrivers/net/ethernet/intel/ixgbe/ixgbe.h drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c drivers/net/ethernet/intel/ixgbe/ixgbe_main.c+60 -00 replies

Reviews trailers per patch

4 of 6 patches have a Reviewed-by or Acked-by.

PatchEric DumazetWillem de BruijnJacob Keller
1/6T-b
2/6A-b T-b
3/6A-b T-b
4/6A-b T-b
5/6R-b A-b
6/6

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v10 thread

Cover letter [PATCH v10 net-next 0/6] net: low latency Ethernet device polling

David,

I removed the select/poll patch (was 5/7 in v9) from the set. The rest are the same patches that were in v9.

Please consider applying.

Thanks to everyone for their input.

-Eliezer

Change log:
v10
- removed select/poll support. (we will work on this some more and try again) v9
- correct sysctl proc_handler, reported by Eric Dumazet and Amir Vadai.
- more int -> bool changes, reported by Eric Dumazet.
- better mask testing in sock_poll(), reported by Eric Dumazet.

v8
- split out udp and select/poll into separate patches. what used to be patch 2/5 is now three patches.
- type corrections from Amir Vadai and Cong Wang:
one unsigned long that was left when changing to cycles_t int -> bool
- more detailed patch descriptions.

v7
- suggested by Ben Hutchings and Eric Dumazet:
type fixes, static for globals in net/core.c,
avoid napi_id collisions in napi_hash_add()

v6
- many small fixes suggested by Eric Dumazet:
data locality, typos, documentation
protect napi_hash insert/delete with a spinlock (napi_gen_id is no longer atomic_t since it's only accessed with the spinlock held.)
- added IPv6 TCP and UDP support (only minimally tested)

v5
- corrections suggested by Ben Hutchings:
fixed typos, moved the config option and sysctl value from IPv4 to net
- moved sk_mark_ll() to the protocol handlers
- removed global id mechanism, replaced with a hashed napi_id. based on code sample from Eric Dumazet
Note that ixgbe_free_q_vector() already waits an rcu grace period before freeing the q_vector, so nothing additional needs to be done when adding a call to napi_hash_del().
- simple poll/select support

v4
- removed separate config option for TCP as suggested Eric Dumazet.
- added linux mib counter for packets received through the low latency path, as suggested by Andi Kleen.
- re-allow module unloading, remove module param, use a global generation id instead to prevent the use of a stale napi pointer, as suggested by Eric Dumazet
- updated Documentation/networking/ip-sysctl.txt text

v3
- coding style changes suggested by Dave Miller

v2
- the sysctl knob is now in microseconds. The default value is now 0 (off).
- for now the code depends at configure time on CONFIG_I86_TSC
- the napi reference in struct skb is now a union with the dma cookie since the former is only used on RX and the latter on TX,
as suggested by Eric Dumazet.
- we do a better job at honoring non-blocking operations.
- removed busy-polling support for tcp_read_sock()
- remove dynamic disabling of GRO
- coding style fixes
- disallow unloading the device module after the feature has been used

Credit:
Jesse Brandeburg, Arun Chekhov Ilango, Julie Cummings, Alexander Duyck, Eric Geisler, Jason Neighbors, Yadong Li, Mike Polehn, Anil Vasudevan, Don Wood
Special thanks for finding bugs in earlier versions:
Willem de Bruijn and Andi Kleen