mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	Alex Dubov <oakad@yahoo.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [20/70] gianfar: Fall back to software tcp/udp checksum on older controllers
Date: Tue, 19 Apr 2011 13:08:29 -0700	[thread overview]
Message-ID: <20110419201045.272386599@clark.kroah.org> (raw)
In-Reply-To: <20110419201501.GA8865@kroah.com>

2.6.38-stable review patch.  If anyone has any objections, please let us know.

------------------


From: Alex Dubov <oakad@yahoo.com>

[ Upstream commit 4363c2fddb1399b728ef21ee8101c148a311ea45 ]

As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,
older revisions of gianfar controllers will be unable to calculate a TCP/UDP
packet checksum for some alignments of the appropriate FCB. This patch checks
for FCB alignment on such controllers and falls back to software checksumming
if the alignment is known to be bad.

Signed-off-by: Alex Dubov <oakad@yahoo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/net/gianfar.c |   16 ++++++++++++++--
 drivers/net/gianfar.h |    1 +
 2 files changed, 15 insertions(+), 2 deletions(-)

--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct gf
 			(pvr == 0x80861010 && (mod & 0xfff9) == 0x80c0))
 		priv->errata |= GFAR_ERRATA_A002;
 
+	/* MPC8313 Rev < 2.0, MPC8548 rev 2.0 */
+	if ((pvr == 0x80850010 && mod == 0x80b0 && rev < 0x0020) ||
+			(pvr == 0x80210020 && mod == 0x8030 && rev == 0x0020))
+		priv->errata |= GFAR_ERRATA_12;
+
 	if (priv->errata)
 		dev_info(dev, "enabled errata workarounds, flags: 0x%x\n",
 			 priv->errata);
@@ -2156,8 +2161,15 @@ static int gfar_start_xmit(struct sk_buf
 	/* Set up checksumming */
 	if (CHECKSUM_PARTIAL == skb->ip_summed) {
 		fcb = gfar_add_fcb(skb);
-		lstatus |= BD_LFLAG(TXBD_TOE);
-		gfar_tx_checksum(skb, fcb);
+		/* as specified by errata */
+		if (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)
+			     && ((unsigned long)fcb % 0x20) > 0x18)) {
+			__skb_pull(skb, GMAC_FCB_LEN);
+			skb_checksum_help(skb);
+		} else {
+			lstatus |= BD_LFLAG(TXBD_TOE);
+			gfar_tx_checksum(skb, fcb);
+		}
 	}
 
 	if (vlan_tx_tag_present(skb)) {
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -1039,6 +1039,7 @@ enum gfar_errata {
 	GFAR_ERRATA_74		= 0x01,
 	GFAR_ERRATA_76		= 0x02,
 	GFAR_ERRATA_A002	= 0x04,
+	GFAR_ERRATA_12		= 0x08, /* a.k.a errata eTSEC49 */
 };
 
 /* Struct stolen almost completely (and shamelessly) from the FCC enet source



  parent reply	other threads:[~2011-04-19 20:17 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-19 20:15 [00/70] 2.6.38.4-rc1-stable review Greg KH
2011-04-19 20:08 ` [01/70] vm: fix vm_pgoff wrap in stack expansion Greg KH
2011-04-19 20:08 ` [02/70] drm/radeon/kms: pll tweaks for rv6xx Greg KH
2011-04-19 20:08 ` [03/70] drm/radeon/kms: fix suspend on rv530 asics Greg KH
2011-04-19 20:08 ` [04/70] cifs: always do is_path_accessible check in cifs_mount Greg KH
2011-04-19 20:08 ` [05/70] cifs: check for private_data before trying to put it Greg KH
2011-04-19 20:08 ` [06/70] cifs: set ra_pages in backing_dev_info Greg KH
2011-04-19 20:08 ` [07/70] cifs: wrap received signature check in srv_mutex Greg KH
2011-04-19 20:08 ` [08/70] [media] video: sn9c102: world-wirtable sysfs files Greg KH
2011-04-19 20:08 ` [09/70] UBIFS: restrict world-writable debugfs files Greg KH
2011-04-19 20:08 ` [10/70] ALSA: hda - Fix pin-config of Gigabyte mobo Greg KH
2011-04-19 20:08 ` [11/70] NET: cdc-phonet, handle empty phonet header Greg KH
2011-04-19 20:08 ` [12/70] x86: Fix a bogus unwind annotation in lib/semaphore_32.S Greg KH
2011-04-19 20:08 ` [13/70] [IA64] tioca: Fix assignment from incompatible pointer warnings Greg KH
2011-04-19 20:08 ` [14/70] [IA64] mca.c: Fix cast from integer to pointer warning Greg KH
2011-04-19 20:08 ` [15/70] vm: fix mlock() on stack guard page Greg KH
2011-04-19 20:08 ` [16/70] UBIFS: fix assertion warnings Greg KH
2011-04-19 20:08 ` [17/70] perf: Fix task context scheduling Greg KH
2011-04-19 20:08 ` [18/70] bridge: Fix possibly wrong MLD queries ethernet source address Greg KH
2011-04-19 20:08 ` [19/70] fib: add rtnl locking in ip_fib_net_exit Greg KH
2011-04-19 20:08 ` Greg KH [this message]
2011-04-19 20:08 ` [21/70] l2tp: fix possible oops on l2tp_eth module unload Greg KH
2011-04-19 20:08 ` [22/70] net ipv6: Fix duplicate /proc/sys/net/ipv6/neigh directory entries Greg KH
2011-04-19 20:08 ` [23/70] net_sched: fix ip_tos2prio Greg KH
2011-04-19 20:08 ` [24/70] pppoe: drop PPPOX_ZOMBIEs in pppoe_flush_dev Greg KH
2011-04-19 20:08 ` [25/70] sctp: Pass __GFP_NOWARN to hash table allocation attempts Greg KH
2011-04-19 20:08 ` [26/70] tcp: avoid cwnd moderation in undo Greg KH
2011-04-19 20:08 ` [27/70] xfrm: Refcount destination entry on xfrm_lookup Greg KH
2011-04-19 20:08 ` [28/70] vlan: should take into account needed_headroom Greg KH
2011-04-19 20:08 ` [29/70] bridge: Reset IPCB when entering IP stack on NF_FORWARD Greg KH
2011-04-19 20:08 ` [30/70] sparc: Fix .size directive for do_int_load Greg KH
2011-04-19 20:08 ` [31/70] sparc32: Fix might-be-used-uninitialized warning in do_sparc_fault() Greg KH
2011-04-19 20:08 ` [32/70] sparc32: Pass task_struct to schedule_tail() in ret_from_fork Greg KH
2011-04-19 20:08 ` [33/70] sparc64: Fix build errors with gcc-4.6.0 Greg KH
2011-04-19 20:08 ` [34/70] futex: Set FLAGS_HAS_TIMEOUT during futex_wait restart setup Greg KH
2011-04-19 20:08 ` [35/70] kstrto*: converting strings to integers done (hopefully) right Greg KH
2011-04-19 20:08 ` [36/70] mm/thp: use conventional format for boolean attributes Greg KH
2011-04-19 20:08 ` [37/70] ramfs: fix memleak on no-mmu arch Greg KH
2011-04-19 20:08 ` [38/70] oom-kill: remove boost_dying_task_prio() Greg KH
2011-04-19 20:08 ` [39/70] MAINTAINERS: update STABLE BRANCH info Greg KH
2011-04-19 20:08 ` [40/70] UBIFS: fix oops when R/O file-system is fsynced Greg KH
2011-04-19 20:08 ` [41/70] x86, AMD: Set ARAT feature on AMD processors Greg KH
2011-04-19 20:08 ` [42/70] x86, amd: Disable GartTlbWlkErr when BIOS forgets it Greg KH
2011-04-19 20:08 ` [43/70] vfs: Fix absolute RCU path walk failures due to uninitialized seq number Greg KH
2011-04-19 20:08 ` [44/70] ARM: 6864/1: hw_breakpoint: clear DBGVCR out of reset Greg KH
2011-04-19 20:08 ` [45/70] i2c-algo-bit: Call pre/post_xfer for bit_test Greg KH
2011-04-19 20:08 ` [46/70] RTC: add missing "return 0" in new alarm func for rtc-bfin.c Greg KH
2011-04-19 20:08 ` [47/70] sched: Fix erroneous all_pinned logic Greg KH
2011-04-19 20:08 ` [48/70] vmscan: all_unreclaimable() use zone->all_unreclaimable as a name Greg KH
2011-04-21  3:40   ` [Stable-review] " Ben Hutchings
2011-04-21  4:24     ` KOSAKI Motohiro
2011-04-21  4:52       ` Ben Hutchings
2011-04-21  6:10         ` KOSAKI Motohiro
2011-04-25  1:50           ` Ben Hutchings
2011-04-19 20:08 ` [49/70] brk: COMPAT_BRK: fix detection of randomized brk Greg KH
2011-04-19 20:08 ` [50/70] usb: musb: temporarily make it bool Greg KH
2011-04-19 20:09 ` [51/70] USB: ftdi_sio: Added IDs for CTI USB Serial Devices Greg KH
2011-04-19 20:09 ` [52/70] USB: ftdi_sio: add PID for OCT DK201 docking station Greg KH
2011-04-19 20:09 ` [53/70] USB: ftdi_sio: add ids for Hameg HO720 and HO730 Greg KH
2011-04-19 20:09 ` [54/70] USB: option: Added support for Samsung GT-B3730/GT-B3710 LTE USB modem Greg KH
2011-04-19 20:09 ` [55/70] next_pidmap: fix overflow condition Greg KH
2011-04-19 20:09 ` [56/70] proc: do proper range check on readdir offset Greg KH
2011-04-19 20:09 ` [57/70] powerpc: Fix oops if scan_dispatch_log is called too early Greg KH
2011-04-19 20:09 ` [58/70] powerpc/perf_event: Skip updating kernel counters if register value shrinks Greg KH
2011-04-19 20:09 ` [59/70] usb: Fix qcserial memory leak on rmmod Greg KH
2011-04-19 20:09 ` [60/70] usb: qcserial avoid pointing to freed memory Greg KH
2011-04-19 20:09 ` [61/70] usb: qcserial add missing errorpath kfrees Greg KH
2011-04-19 20:09 ` [62/70] USB: EHCI: unlink unused QHs when the controller is stopped Greg KH
2011-04-19 20:09 ` [63/70] USB: fix formatting of SuperSpeed endpoints in /proc/bus/usb/devices Greg KH
2011-04-19 20:09 ` [64/70] USB: xhci - fix unsafe macro definitions Greg KH
2011-04-19 20:09 ` [65/70] USB: xhci - fix math in xhci_get_endpoint_interval() Greg KH
2011-04-19 20:09 ` [66/70] USB: xhci - also free streams when resetting devices Greg KH
2011-04-19 20:09 ` [67/70] USB: Fix unplug of device with active streams Greg KH
2011-04-19 20:09 ` [68/70] radeon: Fix KMS CP writeback on big endian machines Greg KH
2011-04-19 20:09 ` [69/70] Bluetooth: Fix HCI_RESET command synchronization Greg KH
2011-04-19 20:09 ` [70/70] perf tool: Fix gcc 4.6.0 issues Greg KH

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=20110419201045.272386599@clark.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oakad@yahoo.com \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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®