From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Nelson Date: Wed, 14 Mar 2012 12:12:10 -0700 Subject: [U-Boot] [PATCH V3] net: fec_mxc: allow use with cache enabled In-Reply-To: <201203140141.23737.vapier@gentoo.org> References: <201203140243.42130.marex@denx.de> <4F6028C6.9040804@boundarydevices.com> <201203140141.23737.vapier@gentoo.org> Message-ID: <4F60ED8A.8090400@boundarydevices.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 03/13/2012 10:41 PM, Mike Frysinger wrote: > On Wednesday 14 March 2012 01:12:38 Eric Nelson wrote: >> Most of the PPC devices seem to have values of 16 or 32 >> for ARCH_DMA_MINALIGN, but PPC64BRIDGE and E500MC would >> have a problem if their drivers don't implement a bounce >> buffer because PKTALIGN< ARCH_DMA_MINALIGN. >> >> (see arch/powerpc/include/asm/cache.h) >> >> This condition is properly tested for in fec_mxc.c. > > so fix this in common code instead of hacking around it in individual drivers. > seems to me that PKTALIGN should be defined to ARCH_DMA_MINALIGN and ultimately > removed. > -mike Hi Mike, I'm not in a position to test against MAKEALL, but it appears that all architectures have cache.h and define ARCH_DMA_MINALIGN, so it should be trivially easy to fix PKTALIGN to be at least ARCH_DMA_MINALIGN as shown below. PKTSIZE_ALIGN seems safe for all architectures at 1536. Note that this will reduce the value to 16 for some PPC devices, but I haven't found any place that this would break things. Is this what you're after? Are you in a position to run MAKEALL or can you advise about the requirements? Please advise, Eric ~/u-boot-imx6$ git diff diff --git a/include/net.h b/include/net.h index e4d42c2..ff428d0 100644 --- a/include/net.h +++ b/include/net.h @@ -16,6 +16,7 @@ #include #endif /* CONFIG_8xx */ +#include #include /* for nton* / ntoh* stuff */ @@ -31,7 +32,7 @@ # define PKTBUFSRX 4 #endif -#define PKTALIGN 32 +#define PKTALIGN ARCH_DMA_MINALIGN /* IPv4 addresses are always 32 bits in size */ typedef u32 IPaddr_t;