re driver problem

John Angelmo john at veidit.net
Thu Jun 3 13:56:32 GMT 2004


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


More information about the freebsd-current mailing list