>-----Original Message----- >From: Zumeng Chen [mailto:zumeng.c...@gmail.com] >Sent: Monday, December 04, 2017 5:22 AM >To: netdev@vger.kernel.org; linux-ker...@vger.kernel.org >Cc: Claudiu Manoil <claudiu.man...@nxp.com>; da...@davemloft.net >Subject: [PATCH 1/1] gianfar: fix a flooded alignment reports because of >padding >issue. > >According to LS1021A RM, the value of PAL can be set so that the start of the >IP header in the receive data buffer is aligned to a 32-bit boundary. Normally, >setting PAL = 2 provides minimal padding to ensure such alignment of the IP >header. > >However every incoming packet's 8-byte time stamp will be inserted into the >packet data buffer as padding alignment bytes when hardware time stamping is >enabled. > >So we set the padding 8+2 here to avoid the flooded alignment faults: > >root@128:~# cat /proc/cpu/alignment >User: 0 >System: 17539 (inet_gro_receive+0x114/0x2c0) >Skipped: 0 >Half: 0 >Word: 0 >DWord: 0 >Multi: 17539 >User faults: 2 (fixup) > [...] > > drivers/net/ethernet/freescale/gianfar.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > >diff --git a/drivers/net/ethernet/freescale/gianfar.c >b/drivers/net/ethernet/freescale/gianfar.c >index e616b71..e47945f 100644 >--- a/drivers/net/ethernet/freescale/gianfar.c >+++ b/drivers/net/ethernet/freescale/gianfar.c >@@ -1413,9 +1413,11 @@ static int gfar_probe(struct platform_device *ofdev) > > gfar_init_addr_hash_table(priv); > >- /* Insert receive time stamps into padding alignment bytes */ >+ /* Insert receive time stamps into padding alignment bytes, and >+ * plus 2 bytes padding to ensure the cpu alignment. >+ */ > if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) >- priv->padding = 8; >+ priv->padding = 8 + DEFAULT_PADDING; > > if (dev->features & NETIF_F_IP_CSUM || > priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) >-- >2.5.0
Why handle only the rx timestamp path (HAS_TIMER) when the issue, as presented by you, should be applicable to the default path as well? The code change according to the patch description should be more likely: + priv->padding = DEFAULT_PADDING; /* Insert receive time stamps into padding alignment bytes */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) - priv->padding = 8; + priv->padding += 8; Do you have any performance numbers for this change? Thanks, Claudiu