Ian Kumlien schrieb:
> On Sun, 2006-02-19 at 14:20 +0100, Wolfgang Hoffmann wrote:
>
>>On Saturday 18 February 2006 18:00, Carl-Daniel Hailfinger wrote:
>>
>>>Hi,
>>>
>>>Stephen Hemminger schrieb:
>>>
>>>>Could everyone who has problems with hangs try the
>>>>following patch (against current 2.6.16-rc3 version)
>>>
>>>If Stephen's patch doesn't work for you, could you try replacing
>>>sky2.c and sky2.h with the ones attached to this mail? I'd be very
>>>interested in feedback for my version of the hangfix.
>>
>>Yes, your version cures my hangs.
>
> It's official, it cures my hangs as well, but it doesn't do MSI, and MSI
> might add some additional complexity.
Could you all please test the attached patch against 2.6.16-rc4?
It is a straight forward-port of my sky2 version that worked for you.
Regards,
Carl-Daniel
--
http://www.hailfinger.org/
diff -urN linux-2.6.16-rc4/drivers/net/sky2.c
linux-2.6.16-rc4-sky2fix/drivers/net/sky2.c
--- linux-2.6.16-rc4/drivers/net/sky2.c 2006-02-21 01:31:18.000000000 +0100
+++ linux-2.6.16-rc4-sky2fix/drivers/net/sky2.c 2006-02-21 01:27:42.000000000
+0100
@@ -1863,6 +1863,17 @@
sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
+ /*
+ * Kick the STAT_LEV_TIMER_CTRL timer.
+ * This fixes my hangs on Yukon-EC (0xb6) rev 1.
+ * The if clause is there to start the timer only if it has been
+ * configured correctly and not been disabled via ethtool.
+ */
+ if (sky2_read8(hw, STAT_LEV_TIMER_CTRL) == TIM_START) {
+ sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_STOP);
+ sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_START);
+ }
+
hwidx = sky2_read16(hw, STAT_PUT_IDX);
BUG_ON(hwidx >= STATUS_RING_SIZE);
rmb();