mirror-linux/drivers/net
Claudiu Manoil ae0e6a5d16 enetc: Add adaptive interrupt coalescing
Use the generic dynamic interrupt moderation (dim)
framework to implement adaptive interrupt coalescing
on Rx.  With the per-packet interrupt scheme, a high
interrupt rate has been noted for moderate traffic flows
leading to high CPU utilization.  The 'dim' scheme
implemented by the current patch addresses this issue
improving CPU utilization while using minimal coalescing
time thresholds in order to preserve a good latency.
On the Tx side use an optimal time threshold value by
default.  This value has been optimized for Tx TCP
streams at a rate of around 85kpps on a 1G link,
at which rate half of the Tx ring size (128) gets filled
in 1500 usecs.  Scaling this down to 2.5G links yields
the current value of 600 usecs, which is conservative
and gives good enough results for 1G links too (see
next).

Below are some measurement results for before and after
this patch (and related dependencies) basically, for a
2 ARM Cortex-A72 @1.3Ghz CPUs system (32 KB L1 data cache),
using 60secs log netperf TCP stream tests @ 1Gbit link
(maximum throughput):

1) 1 Rx TCP flow, both Rx and Tx processed by the same NAPI
thread on the same CPU:
	CPU utilization		int rate (ints/sec)
Before:	50%-60% (over 50%)		92k
After:  13%-22%				3.5k-12k
Comment:  Major CPU utilization improvement for a single flow
	  Rx TCP flow (i.e. netperf -t TCP_MAERTS) on a single
	  CPU. Usually settles under 16% for longer tests.

2) 4 Rx TCP flows + 4 Tx TCP flows (+ pings to check the latency):
	Total CPU utilization	Total int rate (ints/sec)
Before:	~80% (spikes to 90%)		~100k
After:   60% (more steady)		  ~4k
Comment:  Important improvement for this load test, while the
	  ping test outcome does not show any notable
	  difference compared to before.

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-07-21 15:38:30 -07:00
..
appletalk docs: networking: move AppleTalk / LocalTalk drivers to the hw driver section 2020-06-26 16:08:45 -07:00
arcnet
bonding bonding: don't need RTNL for ipsec helpers 2020-07-08 16:09:07 -07:00
caif caif: fix cfv_netdev_tx()'s return type 2020-06-28 20:52:53 -07:00
can
dsa net: dsa: qca8k: implement the port MTU callbacks 2020-07-20 18:34:16 -07:00
ethernet enetc: Add adaptive interrupt coalescing 2020-07-21 15:38:30 -07:00
fddi net: fddi: skfp: Remove addr_to_string(). 2020-07-13 11:49:51 -07:00
fjes
hamradio docs: networking: move baycom to the hw driver section 2020-06-26 16:08:44 -07:00
hippi
hyperv
ieee802154
ipa net: ipa: fix kerneldoc comments 2020-07-13 17:11:53 -07:00
ipvlan
netdevsim netdevsim: add UDP tunnel port offload support 2020-07-10 13:54:00 -07:00
phy net: mdio-mux-gpio: use devm_gpiod_get_array() 2020-07-21 15:35:29 -07:00
plip net: plip: fix plip_tx_packet()'s return type 2020-06-28 20:52:53 -07:00
ppp net: make ->{get,set}sockopt in proto_ops optional 2020-07-19 18:16:41 -07:00
slip
team
usb net: cdc_ncm: hook into set_rx_mode to admit multicast traffic 2020-07-17 12:42:47 -07:00
vmxnet3
wan drivers: net: wan: Fix trivial spelling 2020-07-15 18:18:21 -07:00
wimax
wireguard wireguard: queueing: make use of ip_tunnel_parse_protocol 2020-06-30 12:29:39 -07:00
wireless wireless-drivers-next patches for v5.9 2020-07-20 17:52:50 -07:00
xen-netback xen networking: add XDP offset adjustment to xen-netback 2020-07-01 15:25:14 -07:00
Kconfig xen networking: add basic XDP support for xen-netfront 2020-07-01 15:25:14 -07:00
LICENSE.SRC
Makefile
Space.c
bareudp.c bareudp: Added attribute to enable & disable rx metadata collection 2020-06-28 20:48:20 -07:00
dummy.c
eql.c
geneve.c udp_tunnel: add central NIC RX port offload infrastructure 2020-07-10 13:54:00 -07:00
gtp.c
ifb.c
loopback.c
macsec.c net: get rid of lockdep_set_class_and_subclass() 2020-06-28 21:37:23 -07:00
macvlan.c net: get rid of lockdep_set_class_and_subclass() 2020-06-28 21:37:23 -07:00
macvtap.c
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
sungem_phy.c
tap.c
thunderbolt.c net: thunderbolt: Add comment clarifying prtcstns flags 2020-06-23 20:36:02 -07:00
tun.c tun: implement header_ops->parse_protocol for AF_PACKET 2020-06-30 12:29:39 -07:00
veth.c
virtio_net.c
vrf.c vrf: add l3mdev registration for table to VRF device lookup 2020-06-20 17:22:23 -07:00
vsockmon.c
vxlan.c udp_tunnel: add central NIC RX port offload infrastructure 2020-07-10 13:54:00 -07:00
xen-netfront.c net/xen-netfront: add kernel TX timestamps 2020-07-03 12:36:30 -07:00