[kernel/f17] Fix regression in 8139cp driver, debugged by William J. Eaton (rhbz 851278)
Josh Boyer
jwboyer at fedoraproject.org
Mon Nov 26 19:49:02 UTC 2012
commit 140e24d99e1c8ffa7151b8ba76ee060e66c59d1d
Author: Josh Boyer <jwboyer at redhat.com>
Date: Mon Nov 26 14:48:18 2012 -0500
Fix regression in 8139cp driver, debugged by William J. Eaton (rhbz 851278)
...rt-set-ring-address-before-enabling-recei.patch | 62 ++++++++++++++++++++
kernel.spec | 7 ++
2 files changed, 69 insertions(+), 0 deletions(-)
---
diff --git a/8139cp-revert-set-ring-address-before-enabling-recei.patch b/8139cp-revert-set-ring-address-before-enabling-recei.patch
new file mode 100644
index 0000000..d9ca2f2
--- /dev/null
+++ b/8139cp-revert-set-ring-address-before-enabling-recei.patch
@@ -0,0 +1,62 @@
+From b26623dab7eeb1e9f5898c7a49458789dd492f20 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu at fr.zoreil.com>
+Date: Wed, 21 Nov 2012 10:07:29 +0000
+Subject: [PATCH] 8139cp: revert "set ring address before enabling receiver"
+
+This patch reverts b01af4579ec41f48e9b9c774e70bd6474ad210db.
+
+The original patch was tested with emulated hardware. Real
+hardware chokes.
+
+Fixes https://bugzilla.kernel.org/show_bug.cgi?id=47041
+
+Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
+Acked-by: Jeff Garzik <jgarzik at redhat.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/ethernet/realtek/8139cp.c | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
+index 1c81825..b01f83a 100644
+--- a/drivers/net/ethernet/realtek/8139cp.c
++++ b/drivers/net/ethernet/realtek/8139cp.c
+@@ -979,17 +979,6 @@ static void cp_init_hw (struct cp_private *cp)
+ cpw32_f (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0)));
+ cpw32_f (MAC0 + 4, le32_to_cpu (*(__le32 *) (dev->dev_addr + 4)));
+
+- cpw32_f(HiTxRingAddr, 0);
+- cpw32_f(HiTxRingAddr + 4, 0);
+-
+- ring_dma = cp->ring_dma;
+- cpw32_f(RxRingAddr, ring_dma & 0xffffffff);
+- cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16);
+-
+- ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE;
+- cpw32_f(TxRingAddr, ring_dma & 0xffffffff);
+- cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16);
+-
+ cp_start_hw(cp);
+ cpw8(TxThresh, 0x06); /* XXX convert magic num to a constant */
+
+@@ -1003,6 +992,17 @@ static void cp_init_hw (struct cp_private *cp)
+
+ cpw8(Config5, cpr8(Config5) & PMEStatus);
+
++ cpw32_f(HiTxRingAddr, 0);
++ cpw32_f(HiTxRingAddr + 4, 0);
++
++ ring_dma = cp->ring_dma;
++ cpw32_f(RxRingAddr, ring_dma & 0xffffffff);
++ cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16);
++
++ ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE;
++ cpw32_f(TxRingAddr, ring_dma & 0xffffffff);
++ cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16);
++
+ cpw16(MultiIntr, 0);
+
+ cpw8_f(Cfg9346, Cfg9346_Lock);
+--
+1.8.0
+
diff --git a/kernel.spec b/kernel.spec
index f211a66..536f8a8 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -795,6 +795,9 @@ Patch21230: SCSI-mvsas-Fix-oops-when-ata-commond-timeout.patch
#rhbz 869383
Patch21231: ACPI-video-Ignore-errors-after-_DOD-evaluation.patch
+#rhbz 851278
+Patch21232: 8139cp-revert-set-ring-address-before-enabling-recei.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -1544,6 +1547,9 @@ ApplyPatch SCSI-mvsas-Fix-oops-when-ata-commond-timeout.patch
#rhbz 869383
ApplyPatch ACPI-video-Ignore-errors-after-_DOD-evaluation.patch
+#rhbz 851278
+ApplyPatch 8139cp-revert-set-ring-address-before-enabling-recei.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2408,6 +2414,7 @@ fi
# '-'
%changelog
* Mon Nov 26 2012 Josh Boyer <jwboyer at redhat.com>
+- Fix regression in 8139cp driver, debugged by William J. Eaton (rhbz 851278)
- Fix ACPI video after _DOD errors (rhbz 869383)
- Fix ata command timeout oops in mvsas (rhbz 869629)
- Enable CONFIG_UIO_PDRV on ppc64 (rhbz 878180)
More information about the scm-commits
mailing list