lan966x: Don't use xdp_frame when action is XDP_TX
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Sat, 22 Apr 2023 14:23:44 +0000 (16:23 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 25 Apr 2023 01:58:04 +0000 (18:58 -0700)
commit700f11eb2cbea349bda2599b4b676b49d43b4175
tree62fcef2e01e3dee4946f51350fa56dfec90ee312
parentee3392ed16b064594a14ce5886e412efb05ed17b
lan966x: Don't use xdp_frame when action is XDP_TX

When the action of an xdp program was XDP_TX, lan966x was creating
a xdp_frame and use this one to send the frame back. But it is also
possible to send back the frame without needing a xdp_frame, because
it is possible to send it back using the page.
And then once the frame is transmitted is possible to use directly
page_pool_recycle_direct as lan966x is using page pools.
This would save some CPU usage on this path, which results in higher
number of transmitted frames. Bellow are the statistics:
Frame size:    Improvement:
64                ~8%
256              ~11%
512               ~8%
1000              ~0%
1500              ~0%

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Link: https://lore.kernel.org/r/20230422142344.3630602-1-horatiu.vultur@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
drivers/net/ethernet/microchip/lan966x/lan966x_main.h
drivers/net/ethernet/microchip/lan966x/lan966x_xdp.c