dpaa_eth: add basic XDP support
authorCamelia Groza <camelia.groza@nxp.com>
Wed, 25 Nov 2020 16:53:31 +0000 (18:53 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 1 Dec 2020 01:31:36 +0000 (17:31 -0800)
commit86c0c196cbe48f844721783d9162e46bc35c0c5a
tree9c1095af2b25b420d324f7d6a1fa8159057b8a56
parentfb9afd961c7628d9971fb9ca4096b6164bfe2cba
dpaa_eth: add basic XDP support

Implement the XDP_DROP and XDP_PASS actions.

Avoid draining and reconfiguring the buffer pool at each XDP
setup/teardown by increasing the frame headroom and reserving
XDP_PACKET_HEADROOM bytes from the start. Since we always reserve an
entire page per buffer, this change only impacts Jumbo frame scenarios
where the maximum linear frame size is reduced by 256 bytes. Multi
buffer Scatter/Gather frames are now used instead in these scenarios.

Allow XDP programs to access the entire buffer.

The data in the received frame's headroom can be overwritten by the XDP
program. Extract the relevant fields from the headroom while they are
still available, before running the XDP program.

Since the headroom might be resized before the frame is passed up to the
stack, remove the check for a fixed headroom value when building an skb.

Allow the meta data to be updated and pass the information up the stack.

Scatter/Gather frames are dropped when XDP is enabled.

Acked-by: Madalin Bucur <madalin.bucur@oss.nxp.com>
Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
drivers/net/ethernet/freescale/dpaa/dpaa_eth.h