[U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

Marek Vasut marex at denx.de
Fri Jul 12 14:01:29 CEST 2013


Hi Hector,

> Dear Marek,
> 
> On 07/12/2013 05:51 AM, Marek Vasut wrote:
> > Hi,
> > 
> >> On Thu, Jul 11, 2013 at 8:18 PM, Fabio Estevam <festevam at gmail.com> wrote:
> >>> On Thu, Jul 11, 2013 at 8:03 PM, Marek Vasut <marex at denx.de> wrote:
> >>>> The MX28 multi-layer AHB bus can be too slow and trigger the
> >>>> FEC DMA too early, before all the data hit the DRAM. This patch
> >>>> ensures the data are written in the RAM before the DMA starts.
> >>>> Please see the comment in the patch for full details.
> >>>> 
> >>>> This patch was produced with an amazing help from Albert Aribaud,
> >>>> who pointed out it can possibly be such a bus synchronisation
> >>>> issue.
> >>>> 
> >>>> Signed-off-by: Marek Vasut <marex at denx.de>
> >>>> Cc: Albert ARIBAUD <albert.u.boot at aribaud.net>
> >>>> Cc: Fabio Estevam <fabio.estevam at freescale.com>
> >>>> Cc: Stefano Babic <sbabic at denx.de>
> >>> 
> >>> Excellent, managed to transfer 90MB via TFTP on mx28evk without a
> >>> single timeout.
> >>> 
> >>> Tested-by: Fabio Estevam <fabio.estevam at freescale.com>
> >> 
> >> It's working here too.
> >> 
> >> Tested-by: Alexandre Pereira da Silva <aletes.xgr at gmail.com>
> > 
> > Nice to hear, thank Albert for finding this.
> 
> Thanks for sharing.
> 
> Unfortunately I'm still seeing non-recoverable timeouts when doing tftp
> transfers. Nevertheless, with this patch sometimes I'm able to transfer
> big files (100MiB) without problems (I was never able before). So this is
> a big improvement. I applied this patch over a v2013.01, does it need any
> additional patch? I think I saw one email about flush dcache...

Try Stefano's tree as Fabio suggested. I think it's already pushed and includes 
the fixes.

> Considering the other guys seem to work without problems I guess this
> scenario is specific to my board. I'm using a Micrel KSZ8031RNLI at 50MHz.
> I always suspect from the PHY.

You can try using the PHYLIB (CONFIG_PHYLIB and CONFIG_PHY_SMSC as in sc_sps_1.h 
) . Also, can you check which of the two "ret = -EINVAL" is triggered in 
fec_send() ? You can add simple printf() alongside both of them.

> I'm disconcerted because usually the timeouts occur after having
> successfully downloaded 22 or 24 MiB. Other times it just downloads
> completely.
> 
> In any case, good job!
> 
> Best regards,
> --
> Hector Palacios

Best regards,
Marek Vasut


More information about the U-Boot mailing list