re(4) watchdog timeouts after a short time

Joe Talbott josepht at cstone.net
Wed Dec 3 16:05:15 PST 2008


On Wed, Dec 03, 2008 at 11:34:31AM +0800, Sepherosa Ziehau wrote:
> On Wed, Dec 3, 2008 at 11:24 AM, Joe Talbott <josepht at cstone.net> wrote:
> > On Wed, Dec 03, 2008 at 09:16:28AM +0800, Sepherosa Ziehau wrote:
> >> On Wed, Dec 3, 2008 at 7:00 AM, Joe Talbott <josepht at cstone.net> wrote:
> >> > I upgraded my 2.1-DEVELOPMENT box from 2.1-DEVELOPMENT from several
> >> > months ago and my re(4) a RTL8101E card only works for a few seconds
> >> > after boot.  After which I get watchdog timeouts and am unable to ping
> >> > a remote host.  I was unable to get any information from tcpdump.
> >> > Here is the relevant verbose dmesg output and sysctl output.  I have
> >> > tried disabling rx/tx csum and vlan{mtu,hwtagging} all to no avail.  Let
> >> > me know what further info is needed.
> >> >
> >> > re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> >> >        options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
> >> >        inet6 fe80::2a0:d1ff:fe60:25a3%re0 prefixlen 64 scopeid 0x1
> >> >        inet x.x.x.x netmask 0xffffffc0 broadcast x.x.x.x
> >> >        ether 00:a0:d1:60:25:a3
> >> >        media: Ethernet autoselect (100baseTX <full-duplex>)
> >> >        status: active
> >>
> >> Does sysctl hw.re0.imtype=0 help?
> >
> > I failed to mention I tried that as well.  It did not work.
> 
> Try the attached patch.

That works.  I'm not sure if that needs be removed for all cards to I
made this patch.  Also I'm not sure if the 8102 cards need this or
not.  Thanks for your help on this.

Joe

diff --git a/sys/dev/netif/re/if_re.c b/sys/dev/netif/re/if_re.c
index 5f29074..3f65cee 100644
--- a/sys/dev/netif/re/if_re.c
+++ b/sys/dev/netif/re/if_re.c
@@ -2639,8 +2639,11 @@ re_init(void *xsc)
                        pcie_set_max_readrq(sc->re_dev,
                                PCIEM_DEVCTL_MAX_READRQ_512);
                } else {
-                       pcie_set_max_readrq(sc->re_dev,
-                               PCIEM_DEVCTL_MAX_READRQ_4096);
+                       if (sc->re_hwrev != RE_HWREV_8101E1 &&
+                           sc->re_hwrev != RE_HWREV_8101E2) {
+                               pcie_set_max_readrq(sc->re_dev,
+                                       PCIEM_DEVCTL_MAX_READRQ_4096);
+                       }
                }
        }
 






More information about the Bugs mailing list