drivers: net: gianfar: Shortest frame drops at Ethernet port
diff mbox series

Message ID 20191106170320.27662-1-danielwa@cisco.com
State New, archived
Headers show
Series
  • drivers: net: gianfar: Shortest frame drops at Ethernet port
Related show

Commit Message

Daniel Walker Nov. 6, 2019, 5:03 p.m. UTC
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>
---
 drivers/net/ethernet/freescale/gianfar.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Claudiu Manoil Nov. 6, 2019, 5:38 p.m. UTC | #1
>-----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
Daniel Walker Nov. 6, 2019, 5:46 p.m. UTC | #2
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
David Miller Nov. 7, 2019, 11:15 p.m. UTC | #3
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.

Patch
diff mbox series

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;