linux/drivers/net
Matteo Croce e4017570da mvneta: recycle buffers
Use the new recycling API for page_pool.
In a drop rate test, the packet rate increased by 10%,
from 296 Kpps to 326 Kpps.

perf top on a stock system shows:

Overhead  Shared Object     Symbol
  23.66%  [kernel]          [k] __pi___inval_dcache_area
  22.85%  [mvneta]          [k] mvneta_rx_swbm
   7.54%  [kernel]          [k] kmem_cache_alloc
   6.49%  [kernel]          [k] eth_type_trans
   3.94%  [kernel]          [k] dev_gro_receive
   3.91%  [kernel]          [k] __netif_receive_skb_core
   3.91%  [kernel]          [k] kmem_cache_free
   3.76%  [kernel]          [k] page_pool_release_page
   3.56%  [kernel]          [k] free_unref_page
   2.40%  [kernel]          [k] build_skb
   1.49%  [kernel]          [k] skb_release_data
   1.45%  [kernel]          [k] __alloc_pages_bulk
   1.30%  [kernel]          [k] page_frag_free

And this is the same output with recycling enabled:

Overhead  Shared Object     Symbol
  26.41%  [kernel]          [k] __pi___inval_dcache_area
  25.00%  [mvneta]          [k] mvneta_rx_swbm
   8.14%  [kernel]          [k] kmem_cache_alloc
   6.84%  [kernel]          [k] eth_type_trans
   4.44%  [kernel]          [k] __netif_receive_skb_core
   4.38%  [kernel]          [k] kmem_cache_free
   4.16%  [kernel]          [k] dev_gro_receive
   3.21%  [kernel]          [k] page_pool_put_page
   2.41%  [kernel]          [k] build_skb
   1.82%  [kernel]          [k] skb_release_data
   1.61%  [kernel]          [k] napi_gro_receive
   1.25%  [kernel]          [k] page_pool_refill_alloc_cache
   1.16%  [kernel]          [k] __netif_receive_skb_list_core

We can see that page_pool_release_page(), free_unref_page() and
__alloc_pages_bulk() are no longer on top of the list when receiving
traffic.

The test was done with mausezahn on the TX side with 64 byte raw
ethernet frames.

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-07 14:11:47 -07:00
..
appletalk Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-05-27 09:55:10 -07:00
arcnet
bonding bonding: remove redundant initialization of variable ret 2021-06-03 15:25:29 -07:00
caif Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-05-27 09:55:10 -07:00
can can: m_can: fix whitespace in a few comments 2021-05-27 09:42:24 +02:00
dsa net: mscc: ocelot: check return value after calling platform_get_resource() 2021-06-07 14:02:25 -07:00
ethernet mvneta: recycle buffers 2021-06-07 14:11:47 -07:00
fddi net: fddi: skfp: remove leading spaces before tabs 2021-05-20 15:10:57 -07:00
fjes fjes: Use DEFINE_RES_MEM() and DEFINE_RES_IRQ() to simplify code 2021-06-01 15:20:47 -07:00
hamradio hamradio: bpqether: Fix -Wunused-const-variable warning 2021-06-01 17:00:51 -07:00
hippi
hyperv
ieee802154 Merge tag 'ieee802154-for-davem-2021-06-03' of git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan 2021-06-03 15:21:58 -07:00
ipa Revert "net: ipa: disable checksum offload for IPA v4.5+" 2021-06-03 15:09:40 -07:00
ipvlan
mdio net: mdio: Fix spelling mistakes 2021-06-01 17:05:05 -07:00
mhi
netdevsim netdevsim: Fix unsigned being compared to less than zero 2021-06-03 15:33:17 -07:00
pcs net: pcs: xpcs: convert to phylink_pcs_ops 2021-06-03 13:30:43 -07:00
phy net: phy: do not print dump stack if device was removed 2021-06-07 13:23:02 -07:00
plip
ppp net: ppp: remove leading spaces before tabs 2021-05-20 15:10:57 -07:00
slip net: slip: remove leading spaces before tabs 2021-05-20 15:10:57 -07:00
team
usb usbnet: run unbind() before unregister_netdev() 2021-06-07 13:23:02 -07:00
vmxnet3
wan net: hd64570: add some required spaces 2021-06-07 12:25:21 -07:00
wireguard wireguard: allowedips: free empty intermediate nodes when removing single node 2021-06-04 14:25:14 -07:00
wireless wireless-drivers fixes for v5.13 2021-06-03 15:17:33 -07:00
wwan net: wwan: core: Add WWAN device index sysfs attribute 2021-05-25 15:51:37 -07:00
xen-netback
bareudp.c
dummy.c
eql.c
geneve.c
gtp.c gtp: Fix a typo 2021-06-01 17:05:04 -07:00
ifb.c ifb: remove leading spaces before tabs 2021-05-20 15:10:57 -07:00
Kconfig
LICENSE.SRC
loopback.c
macsec.c
macvlan.c macvlan: Fix a typo 2021-06-01 17:05:04 -07:00
macvtap.c
Makefile
mdio.c
mii.c mii: remove leading spaces before tabs 2021-05-20 15:10:57 -07:00
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c tun: use DEVICE_ATTR_RO macro 2021-05-19 12:01:44 -07:00
veth.c
virtio_net.c virtio_net: Remove BUG() to avoid machine dead 2021-06-07 13:06:46 -07:00
vrf.c vrf: Fix a typo 2021-06-01 17:05:04 -07:00
vsockmon.c
vxlan.c
xen-netfront.c