On Fri, Aug 23, 2019 at 5:17 PM Bin Meng <bmeng...@gmail.com> wrote: > > 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));
Ah, for MACB, looks it should be "MACB_RX_BUFFER_SIZE * MACB_RX_RING_SIZE", but for GEM, I am not sure. Should it be: flush_dcache_range(macb->rx_buffer_dma, macb->rx_buffer_dma + ALIGN(macb->rx_buffer_size * MACB_RX_RING_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