Message ID | 6e534e4b2da14bb57331446e950a49f237f979c0.1612275417.git.camelia.groza@nxp.com |
---|---|
State | Superseded |
Headers | show |
Series | dpaa_eth: A050385 erratum workaround fixes under XDP | expand |
On Tue, Feb 02, 2021 at 07:34:43PM +0200, Camelia Groza wrote: > The 256 byte data alignment is required for preventing DMA transaction > splits when crossing 4K page boundaries. Since XDP deals only with page > sized buffers or less, this restriction isn't needed. Instead, the data > only needs to be aligned to 64 bytes to prevent DMA transaction splits. > > These lessened restrictions can increase performance by widening the pool > of permitted data alignments and preventing unnecessary realignments. > > Fixes: ae680bcbd06a ("dpaa_eth: implement the A050385 erratum workaround for XDP") > Signed-off-by: Camelia Groza <camelia.groza@nxp.com> Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > --- > drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > index e1d041c35ad9..78dfa05f6d55 100644 > --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > @@ -2192,7 +2192,7 @@ static int dpaa_a050385_wa_xdpf(struct dpaa_priv *priv, > * byte frame headroom. If the XDP program uses all of it, copy the > * data to a new buffer and make room for storing the backpointer. > */ > - if (PTR_IS_ALIGNED(xdpf->data, DPAA_A050385_ALIGN) && > + if (PTR_IS_ALIGNED(xdpf->data, DPAA_FD_DATA_ALIGNMENT) && > xdpf->headroom >= priv->tx_headroom) { > xdpf->headroom = priv->tx_headroom; > return 0; > -- > 2.17.1 >
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index e1d041c35ad9..78dfa05f6d55 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -2192,7 +2192,7 @@ static int dpaa_a050385_wa_xdpf(struct dpaa_priv *priv, * byte frame headroom. If the XDP program uses all of it, copy the * data to a new buffer and make room for storing the backpointer. */ - if (PTR_IS_ALIGNED(xdpf->data, DPAA_A050385_ALIGN) && + if (PTR_IS_ALIGNED(xdpf->data, DPAA_FD_DATA_ALIGNMENT) && xdpf->headroom >= priv->tx_headroom) { xdpf->headroom = priv->tx_headroom; return 0;
The 256 byte data alignment is required for preventing DMA transaction splits when crossing 4K page boundaries. Since XDP deals only with page sized buffers or less, this restriction isn't needed. Instead, the data only needs to be aligned to 64 bytes to prevent DMA transaction splits. These lessened restrictions can increase performance by widening the pool of permitted data alignments and preventing unnecessary realignments. Fixes: ae680bcbd06a ("dpaa_eth: implement the A050385 erratum workaround for XDP") Signed-off-by: Camelia Groza <camelia.groza@nxp.com> --- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)