From 140e24d99e1c8ffa7151b8ba76ee060e66c59d1d Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Nov 26 2012 19:48:40 +0000 Subject: Fix regression in 8139cp driver, debugged by William J. Eaton (rhbz 851278) --- 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?= +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 +Acked-by: Jeff Garzik +Signed-off-by: David S. Miller +--- + 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 +- 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)