On Tue, Oct 27, 2020 at 11:04 AM Camelia Groza <camelia.gr...@nxp.com> wrote: > > The headroom reserved for received frames needs to be aligned to an > RX specific value. There is currently a discrepancy between the values > used in the Ethernet driver and the values passed to the FMan. > Coincidentally, the resulting aligned values are identical. > > Fixes: 3c68b8fffb48 ("dpaa_eth: FMan erratum A050385 workaround") > Signed-off-by: Camelia Groza <camelia.gr...@nxp.com> > --- > drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > index 1aac0b6..67ae561 100644 > --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > @@ -2842,7 +2842,8 @@ static int dpaa_ingress_cgr_init(struct dpaa_priv *priv) > return err; > } > > -static inline u16 dpaa_get_headroom(struct dpaa_buffer_layout *bl) > +static inline u16 dpaa_get_headroom(struct dpaa_buffer_layout *bl, > + enum port_type port) > { > u16 headroom; > > @@ -2856,9 +2857,12 @@ static inline u16 dpaa_get_headroom(struct > dpaa_buffer_layout *bl) > * > * Also make sure the headroom is a multiple of data_align bytes > */ > - headroom = (u16)(bl->priv_data_size + DPAA_PARSE_RESULTS_SIZE + > + headroom = (u16)(bl[port].priv_data_size + DPAA_PARSE_RESULTS_SIZE + > DPAA_TIME_STAMP_SIZE + DPAA_HASH_RESULTS_SIZE); > > + if (port == RX) > + return ALIGN(headroom, DPAA_FD_RX_DATA_ALIGNMENT); > + else?
> return ALIGN(headroom, DPAA_FD_DATA_ALIGNMENT); > } > > @@ -3027,8 +3031,8 @@ static int dpaa_eth_probe(struct platform_device *pdev) > goto free_dpaa_fqs; > } > > - priv->tx_headroom = dpaa_get_headroom(&priv->buf_layout[TX]); > - priv->rx_headroom = dpaa_get_headroom(&priv->buf_layout[RX]); > + priv->tx_headroom = dpaa_get_headroom(&priv->buf_layout[0], TX); > + priv->rx_headroom = dpaa_get_headroom(&priv->buf_layout[0], RX); This can be just priv->buf_layout > > /* All real interfaces need their ports initialized */ > err = dpaa_eth_init_ports(mac_dev, dpaa_bp, &port_fqs, > -- > 1.9.1 >