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();

Reply via email to