Hi Stefan, On Fri, Aug 23, 2019 at 5:02 PM Stefan Roese <s...@denx.de> wrote: > > With commit c6d07bf440bc ("net/macb: increase RX buffer size for GEM") > ethernet support does not work any more with d-cache enabled on the > AT91SAM. The reason is, that MACB_RX_BUFFER_SIZE was changed from 4096 > to 128 but this change was not refected in the rx_buffer flush and > invalidate functions, as these also use this macro. > > This patch now fixes this by calculating the rx buffer size correctly > again in those functions. With this change, ethernet works again > reliably on my AT91SAM board. > > Signed-off-by: Stefan Roese <s...@denx.de> > Cc: Ramon Fried <rfried....@gmail.com> > Cc: Eugen Hristev <eugen.hris...@microchip.com> > Cc: Anup Patel <anup.pa...@wdc.com> > Cc: Bin Meng <bmeng...@gmail.com> > Cc: Joe Hershberger <joe.hershber...@ni.com> > --- > drivers/net/macb.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/macb.c b/drivers/net/macb.c > index c99cf663a4..fca380d012 100644 > --- a/drivers/net/macb.c > +++ b/drivers/net/macb.c > @@ -296,13 +296,15 @@ static inline void macb_flush_ring_desc(struct > macb_device *macb, bool rx) > static inline void macb_flush_rx_buffer(struct macb_device *macb) > { > flush_dcache_range(macb->rx_buffer_dma, macb->rx_buffer_dma + > - ALIGN(MACB_RX_BUFFER_SIZE, PKTALIGN)); > + ALIGN(MACB_RX_BUFFER_SIZE * MACB_RX_RING_SIZE, > + PKTALIGN));
This looks wrong to me. Shouldn't it be: flush_dcache_range(macb->rx_buffer_dma, macb->rx_buffer_dma + ALIGN(macb->rx_buffer_size, PKTALIGN)); > } > > static inline void macb_invalidate_rx_buffer(struct macb_device *macb) > { > invalidate_dcache_range(macb->rx_buffer_dma, macb->rx_buffer_dma + > - ALIGN(MACB_RX_BUFFER_SIZE, PKTALIGN)); > + ALIGN(MACB_RX_BUFFER_SIZE * MACB_RX_RING_SIZE, > + PKTALIGN)); > } > > #if defined(CONFIG_CMD_NET) > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot