dpaa_eth: implement the A050385 erratum workaround for XDP
authorCamelia Groza <camelia.groza@nxp.com>
Wed, 25 Nov 2020 16:53:36 +0000 (18:53 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 1 Dec 2020 01:33:23 +0000 (17:33 -0800)
commitae680bcbd06ae9189e0102f8cdb5fd938b00725f
tree066ff71fc372749c06e6c39df2d65612693be793
parentd7af04486d9f58752bf840901908108b1ba08aba
dpaa_eth: implement the A050385 erratum workaround for XDP

For XDP TX, even tough we start out with correctly aligned buffers, the
XDP program might change the data's alignment. For REDIRECT, we have no
control over the alignment either.

Create a new workaround for xdp_frame structures to verify the erratum
conditions and move the data to a fresh buffer if necessary. Create a new
xdp_frame for managing the new buffer and free the old one using the XDP
API.

Due to alignment constraints, all frames have a 256 byte headroom that
is offered fully to XDP under the erratum. If the XDP program uses all
of it, the data needs to be move to make room for the xdpf backpointer.

Disable the metadata support since the information can be lost.

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