Message ID | 20191106170320.27662-1-danielwa@cisco.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | drivers: net: gianfar: Shortest frame drops at Ethernet port | expand |
>-----Original Message----- >From: Daniel Walker <danielwa@cisco.com> >Sent: Wednesday, November 6, 2019 7:03 PM >To: Claudiu Manoil <claudiu.manoil@nxp.com> >Cc: Sathish Jarugumalli <sjarugum@cisco.com>; xe-linux-external@cisco.com; >Daniel Walker <dwalker@fifo99.com>; David S. Miller ><davem@davemloft.net>; netdev@vger.kernel.org; linux- >kernel@vger.kernel.org >Subject: [PATCH] drivers: net: gianfar: Shortest frame drops at Ethernet port > >NXP has provided the patch for packet drops at ethernet port >Frames shorter than 60bytes are getting dropped at ethernetport >need to add padding for the shorter range frames to be transmit >the function "eth_skb_pad(skb" provides padding (and CRC) for >packets under 60 bytes > >Signed-off-by: Sathish Jarugumalli <sjarugum@cisco.com> >Cc: xe-linux-external@cisco.com >Signed-off-by: Daniel Walker <dwalker@fifo99.com> Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Normally padding is done by the hardware, and it works at least on my test cases and boards. But cisco seems to have hit a case where h/w padding gets unexpectedly disabled (concurrency issue writing the config register?). This patch should go as a workaround, until root cause found. -Claudiu
On Wed, Nov 06, 2019 at 05:38:06PM +0000, Claudiu Manoil wrote: > >-----Original Message----- > >From: Daniel Walker <danielwa@cisco.com> > >Sent: Wednesday, November 6, 2019 7:03 PM > >To: Claudiu Manoil <claudiu.manoil@nxp.com> > >Cc: Sathish Jarugumalli <sjarugum@cisco.com>; xe-linux-external@cisco.com; > >Daniel Walker <dwalker@fifo99.com>; David S. Miller > ><davem@davemloft.net>; netdev@vger.kernel.org; linux- > >kernel@vger.kernel.org > >Subject: [PATCH] drivers: net: gianfar: Shortest frame drops at Ethernet port > > > >NXP has provided the patch for packet drops at ethernet port > >Frames shorter than 60bytes are getting dropped at ethernetport > >need to add padding for the shorter range frames to be transmit > >the function "eth_skb_pad(skb" provides padding (and CRC) for > >packets under 60 bytes > > > >Signed-off-by: Sathish Jarugumalli <sjarugum@cisco.com> > >Cc: xe-linux-external@cisco.com > >Signed-off-by: Daniel Walker <dwalker@fifo99.com> > > Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> > > Normally padding is done by the hardware, and it works at least on my > test cases and boards. > But cisco seems to have hit a case where h/w padding gets > unexpectedly disabled (concurrency issue writing the config register?). > This patch should go as a workaround, until root cause found. Where would this hardware setup normally happen? Does it happen in the bootloader or inside the kernel someplace ? Daniel
From: Daniel Walker <danielwa@cisco.com> Date: Wed, 6 Nov 2019 09:03:20 -0800 > NXP has provided the patch for packet drops at ethernet port > Frames shorter than 60bytes are getting dropped at ethernetport > need to add padding for the shorter range frames to be transmit > the function "eth_skb_pad(skb" provides padding (and CRC) for > packets under 60 bytes > > Signed-off-by: Sathish Jarugumalli <sjarugum@cisco.com> > Cc: xe-linux-external@cisco.com > Signed-off-by: Daniel Walker <dwalker@fifo99.com> Please repost with an appropriate Fixes: tag. Thank you.
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 51ad86417cb1..047960b1c76e 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1823,6 +1823,9 @@ static netdev_tx_t gfar_start_xmit(struct sk_buff *skb, struct net_device *dev) if (unlikely(do_tstamp)) fcb_len = GMAC_FCB_LEN + GMAC_TXPAL_LEN; + if (eth_skb_pad(skb)) + return NETDEV_TX_OK; + /* make space for additional header when fcb is needed */ if (fcb_len && unlikely(skb_headroom(skb) < fcb_len)) { struct sk_buff *skb_new;