From: "Lothar Waßmann" <LW@KARO-electronics.de>
To: David Laight <David.Laight@ACULAB.COM>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Russell King <rmk+kernel@arm.linux.org.uk>,
Frank Li <Frank.Li@freescale.com>,
"Fabio Estevam" <fabio.estevam@freescale.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCHv2 6/6] net: fec: fix regression on i.MX28 introduced by rx_copybreak support
Date: Tue, 28 Oct 2014 13:36:09 +0100 [thread overview]
Message-ID: <20141028133609.2bf6c745@ipc1.ka-ro> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1C9E04C0@AcuExch.aculab.com>
Hi,
David Laight wrote:
> From: Lothar Waßmann
> > commit 1b7bde6d659d ("net: fec: implement rx_copybreak to improve rx performance")
> > introduced a regression for i.MX28. The swap_buffer() function doing
> > the endian conversion of the received data on i.MX28 may access memory
> > beyond the actual packet size in the DMA buffer. fec_enet_copybreak()
> > does not copy those bytes, so that the last bytes of a packet may be
> > filled with invalid data after swapping.
> > This will likely lead to checksum errors on received packets.
> > E.g. when trying to mount an NFS rootfs:
> > UDP: bad checksum. From 192.168.1.225:111 to 192.168.100.73:44662 ulen 36
> >
> > Do the byte swapping and copying to the new skb in one go if
> > necessary.
> >
> > Signed-off-by: Lothar Wamann <LW@KARO-electronics.de>
> > ---
> > drivers/net/ethernet/freescale/fec_main.c | 25 +++++++++++++++++++++----
> > 1 file changed, 21 insertions(+), 4 deletions(-)
> >
> > @@ -1455,7 +1472,7 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
> > prefetch(skb->data - NET_IP_ALIGN);
> > skb_put(skb, pkt_len - 4);
> > data = skb->data;
> > - if (fep->quirks & FEC_QUIRK_SWAP_FRAME)
> > + if (!is_copybreak && need_swap)
> > swap_buffer(data, pkt_len);
>
> It has to be better to set the 'copybreak' limit to be larger than the
> maximum frame size and so always go through the 'copybreak' paths.
>
Since the copybreak support is all about performance optimistation, we
should IMO buy the additional advantage for i.MX28 by not having to
access the buffer twice (once for copying and once again for swapping).
Lothar Waßmann
--
___________________________________________________________
Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996
www.karo-electronics.de | info@karo-electronics.de
___________________________________________________________
next prev parent reply other threads:[~2014-10-28 12:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-28 11:01 [PATCHv2 0/6] " Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 1/6] net: fec: indentation cleanup; no functional change Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 2/6] net: fec: declare bufdesc_ex flag as bool Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 3/6] net: fec: improve access to quirk flags by copying them into fec_enet_private struct Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 4/6] net: fec: use swab32s() instead of cpu_to_be32() Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 5/6] net: fec: simplify loop counter handling in swap_buffer() Lothar Waßmann
2014-10-28 11:01 ` [PATCHv2 6/6] net: fec: fix regression on i.MX28 introduced by rx_copybreak support Lothar Waßmann
2014-10-28 11:12 ` David Laight
2014-10-28 12:36 ` Lothar Waßmann [this message]
2014-10-28 13:01 ` David Laight
2014-10-28 13:30 ` Lothar Waßmann
2014-10-28 11:14 ` David Laight
2014-10-28 12:10 ` Lothar Waßmann
2014-10-28 13:22 ` Lothar Waßmann
2014-10-28 13:22 ` [PATCHv3 1/9] net: fec: indentation cleanup Lothar Waßmann
2014-10-28 13:22 ` [PATCHv3 2/9] net: fec: consistently use lower case chars as hex digits Lothar Waßmann
2014-10-28 13:22 ` [PATCHv3 3/9] net: fec: properly parenthesize macro args Lothar Waßmann
2014-10-28 13:22 ` [PATCHv3 4/9] net: fec: declare bufdesc_ex flag as bool Lothar Waßmann
2014-10-28 13:23 ` [PATCHv3 5/9] net: fec: improve access to quirk flags by copying them into fec_enet_private struct Lothar Waßmann
2014-10-28 13:23 ` [PATCHv3 6/9] net: fec: use swab32s() instead of cpu_to_be32() Lothar Waßmann
2014-10-28 13:23 ` [PATCHv3 7/9] net: fec: simplify loop counter handling in swap_buffer() Lothar Waßmann
2014-10-28 13:23 ` [PATCHv3 8/9] net: fec: remove unused return value from swap_buffer() Lothar Waßmann
2014-10-28 13:23 ` [PATCHv3 9/9] net: fec: fix regression on i.MX28 introduced by rx_copybreak support Lothar Waßmann
2014-11-03 22:58 ` Stefan Wahren
2014-10-29 19:34 ` David Miller
2014-10-30 6:51 ` Lothar Waßmann
2014-10-30 16:17 ` David Miller
2014-10-31 5:32 ` Lothar Waßmann
2014-11-04 10:29 ` Lothar Waßmann
2014-11-04 16:28 ` David Miller
2014-11-05 5:21 ` Lothar Waßmann
2014-11-05 20:52 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141028133609.2bf6c745@ipc1.ka-ro \
--to=lw@karo-electronics.de \
--cc=David.Laight@ACULAB.COM \
--cc=Frank.Li@freescale.com \
--cc=davem@davemloft.net \
--cc=fabio.estevam@freescale.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rmk+kernel@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®