Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- From: John Baldwin <jhb@xxxxxxxxxxx>
- Date: Tue, 29 Aug 2006 18:04:03 -0400
On Tuesday 29 August 2006 17:33, David Christensen wrote:
I see looking through the archives that Julian Elischer has reported
something *vaguely* similar to my problems described in the attached
message to this list, so I thought I'd join in.
Julian reports a problem when the bce interface is
disconnected and then
reconnected under load, and never comes back until all load
is removed,
while reporting watchdog timeout errors.
I see something rather like this (details in the attached message
(hopefully the attachment will survive :))), but without physically
disconnecting the cable.
I am wondering if I'm actually seeing the same problem, but
that rather
than the cable being unplugged, it's something like the interface
resetting on our (old, 100Mb/s) switch resetting and triggering this.
Thought it was worth offering another data point. I'm
running the most
recent version of the bce driver with the changes to fix the 'mbuf'
errors.
A change was recently added to bge (r1.140) to address some issues
with locking in the driver when performing PHY accesses which was
also causing watchdog timeout errors. I need to look at those
changes and see if they are applicable to the bce driver as well,
though I've been having problems loading both bge and bce as
modules on -CURRENT (causes a panic). If I can get past the module
problem I'll look at the bge change soon.
bce_ifmedia_sts() has locking, but bce_ifmedia_upd() is missing locking.
Something like this would do it:
Index: if_bce.c
===================================================================
RCS file: /host/cvs/usr/cvs/src/sys/dev/bce/if_bce.c,v
retrieving revision 1.7
diff -u -r1.7 if_bce.c
--- if_bce.c 15 Aug 2006 04:56:29 -0000 1.7
+++ if_bce.c 29 Aug 2006 22:03:17 -0000
@@ -3933,15 +3933,17 @@
/* DRC - ToDo: Add SerDes support. */
+ BCE_LOCK(sc);
mii = device_get_softc(sc->bce_miibus);
sc->bce_link = 0;
if (mii->mii_instance) {
struct mii_softc *miisc;
- for (miisc = LIST_FIRST(&mii->mii_phys); miisc != NULL;
- miisc = LIST_NEXT(miisc, mii_list))
+
+ LIST_FOREACH(miisc, &mii->mii_physm, mii_list)
mii_phy_reset(miisc);
}
mii_mediachg(mii);
+ BCE_UNLOCK(sc);
return(rc);
}
--
John Baldwin
_______________________________________________
freebsd-current@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- From: Sam Eaton
- Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- References:
- RE: [sam@fqdn.net: bce0 watchdog timeout errors]
- From: David Christensen
- RE: [sam@fqdn.net: bce0 watchdog timeout errors]
- Prev by Date: Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- Next by Date: Re: HEADS UP: GCC 3.4.6 update in progress
- Previous by thread: Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- Next by thread: Re: [sam@fqdn.net: bce0 watchdog timeout errors]
- Index(es):
Relevant Pages
- Re: [sam@fqdn.net: bce0 watchdog timeout errors]
... recent version of the bce driver with the changes to fix the 'mbuf' ... A change
was recently added to bge to address some issues ... start getting watchdog timeout
errors again. ... (freebsd-current) - Re: [sam@fqdn.net: bce0 watchdog timeout errors]
... A change was recently added to bge to address some issues ... with locking in
the driver when performing PHY accesses which was ... also causing watchdog timeout
errors. ... changes and see if they are applicable to the bce driver as well, ...
(freebsd-current)