Re: [PATCH] gianfar: prevent fragmentation in DSA environments
From: Claudiu Manoil <claudiu.manoil@nxp.com>
Date: 2016-08-19 21:38:44
Hi Andrew, From: Andrew Lunn <andrew@lunn.ch> Sent: Friday, August 19, 2016 7:39 PM To: Claudiu Manoil Cc: Zefir Kurtisi; netdev@vger.kernel.org; claudiu.manoil@freescale.com Subject: Re: [PATCH] gianfar: prevent fragmentation in DSA environments
quoted
quoted
-#define GFAR_RXB_SIZE 1536 +/* prevent fragmenation by HW in DSA environments */ +#define GFAR_RXB_SIZE (1536 + RXBUF_ALIGNMENT)Hi Zefir Using RXBUF_ALIGNMENT suggests this has something to do with alignment, not extra headers. How about /* Prevent fragmenation by HW when using extra headers like DSA */ #define GFAR_RXB_SIZE (1536 + 8)MRBL (Maximum receive buffer length) must be multiple of 64. Please consult de hardware documentation at least before prosing changes to the driver.
Hi Claudiu
Thanks for pointing this out. This makes RXBUF_ALIGNMENT even worse
for understabability, since you say multiples of 64 is important, not
alignment.
How about
/* Prevent fragmentation by HW when using extra headers like DSA,
while respecting the multiple of 64 requirement. */
#define GFAR_RXB_SIZE roundup(1536 + 8, 64)
[Claudiu]
Nice improvement.
But what's so special about 8? I thought only 4 bytes were missing :)
At least 1536 is the default size of the MRBLR register, as specified
in the h/w ref manual. Is there some recommended standard size
to accommodate most (if not all) headers, to refer to?