OSDN Git Service

net: aquantia: optimize rx performance by page reuse strategy
authorIgor Russkikh <Igor.Russkikh@aquantia.com>
Sat, 23 Mar 2019 15:23:32 +0000 (15:23 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 Mar 2019 02:16:53 +0000 (22:16 -0400)
commit46f4c29d9de6e4a9d4ed7de9a37dd42501d89f86
tree9bbd725ffda30a004eb12042e4af410cbbfee01d
parent7e2698c4fd35f30fd3e5932ca2825fe5a461e265
net: aquantia: optimize rx performance by page reuse strategy

We introduce internal aq_rxpage wrapper over regular page
where extra field is tracked: rxpage offset inside of allocated page.

This offset allows to reuse one page for multiple packets.
When needed (for example with large frames processing), allocated
pageorder could be customized. This gives even larger page reuse
efficiency.

page_ref_count is used to track page users. If during rx refill
underlying page has users, we increase pg_off by rx frame size
thus the top half of the page is reused.

Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
drivers/net/ethernet/aquantia/atlantic/aq_nic.c
drivers/net/ethernet/aquantia/atlantic/aq_nic.h
drivers/net/ethernet/aquantia/atlantic/aq_ring.c
drivers/net/ethernet/aquantia/atlantic/aq_ring.h
drivers/net/ethernet/aquantia/atlantic/aq_vec.c
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c