[U-Boot] [PATCH 7/9] net: rtl8169: Properly align buffers
Stephen Warren
swarren at wwwdotorg.org
Wed Aug 20 21:29:57 CEST 2014
On 08/18/2014 02:00 AM, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
>
> RX and TX descriptor rings should be aligned to 256 byte boundaries. Use
> the DEFINE_ALIGN_BUFFER() macro to define the buffers so that they don't
> have to be manually aligned later on. Also make sure that the buffers do
> align to cache-line boundaries in case the cache-line is higher than the
> 256 byte alignment requirements of the NIC.
>
> Also add a warning if the cache-line size is larger than the descriptor
> size, because the driver may discard changes to descriptors made by the
> hardware when requeuing RX buffers.
> @@ -909,6 +899,18 @@ static int rtl_init(struct eth_device *dev, bd_t *bis)
> + /*
> + * Warn if the cache-line size is larger than the descriptor size. In
> + * such cases the driver will likely fail because the CPU needs to
> + * flush the cache when requeuing RX buffers, therefore descriptors
> + * written by the hardware may be discarded.
> + */
> + if (ARCH_DMA_MINALIGN > sizeof(struct RxDesc))
> + printf("WARNING: cache-line size is larger than descriptor size\n");
I'd be tempted to make that a compile-time #error (or perhaps just a
#warning) Perhaps #error would break compilation of existing boards though?
More information about the U-Boot
mailing list