Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Jun 2004 15:55:14 +0200
From:      John Angelmo <john@veidit.net>
To:        Sven Petai <hadara@bsd.ee>
Cc:        freebsd-current@freebsd.org
Subject:   Re: re driver problem
Message-ID:  <40BF2DC2.7040202@veidit.net>
In-Reply-To: <200405262218.24586.hadara@bsd.ee>
References:  <40A10AC8.6080406@veidit.net> <40A1F7C9.1010801@veidit.net> <20040517201611.GC88080@cserv62.csub.edu> <200405262218.24586.hadara@bsd.ee>

next in thread | previous in thread | raw e-mail | index | archive | help
Sven Petai wrote:
> On Monday 17 May 2004 23:16, Russell Jackson wrote:
> 
>>On Wed, May 12, 2004 at 12:09:13PM +0200, John Angelmo wrote:
>>
>>>S?ren Schmidt wrote:
>>>
>>>>Thats a known problem, its been like this for ages...
>>>>
>>>>I hacked rl to take the card instead, works like a charm...
>>>
>>>How did you do that? do you have a patch for it? perhaps we can replace
>>>re with a hacked rl?
>>>
>>>/John
>>
>>I'd also be interested in a patch.
> 
> 
> hi
> 
> following patch seems to fix the longstanding "re0: watchdog timeout" problem 
> ( at least on my laptop). I haven't done much testing yet but it survived 3 
> cvsups without problems, without it I got first timeout in ~30 seconds, so 
> let me know if it works/doesn't work for your systems....
> 
> Sven Petai
> 
> --- sys/dev/re/if_re.c.orig     Wed May 26 21:33:53 2004
> +++ sys/dev/re/if_re.c  Wed May 26 21:42:05 2004
> @@ -1727,7 +1727,9 @@
>         if (idx != sc->rl_ldata.rl_tx_considx) {
>                 sc->rl_ldata.rl_tx_considx = idx;
>                 ifp->if_flags &= ~IFF_OACTIVE;
> -               ifp->if_timer = 0;
> +               /* reset the timer only if TX buffer is empty */
> +               if (idx == sc->rl_ldata.rl_tx_prodidx)
> +                       ifp->if_timer = 0;
>         }
>  
>         /*
> @@ -1736,8 +1738,10 @@
>          * interrupt that will cause us to re-enter this routine.
>          * This is done in case the transmitter has gone idle.
>          */
> -       if (sc->rl_ldata.rl_tx_free != RL_TX_DESC_CNT)
> -                CSR_WRITE_4(sc, RL_TIMERCNT, 1);
> +       if (sc->rl_ldata.rl_tx_free != RL_TX_DESC_CNT) {
> +               CSR_WRITE_4(sc, RL_TIMERCNT, 1);
> +               ifp->if_timer = 5;      
> +       }
>  
>         return;
>  }
> 


Sorry I still got the same problem, the patch compiles just fine but the 
driver still gets timeout

/John



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40BF2DC2.7040202>