[Bill Paul and Matthew Dodd cc:'d.
Sorry for this intrusion guys, but I just want you opinions on some of
the blabbering I exclaim]
-On [20010218 21:37], Dan Debertin ([EMAIL PROTECTED]) wrote:
>On Sun, 18 Feb 2001, Jeroen Ruigrok/Asmodai wrote:
>
>> -On [20010216 16:00], Dan Debertin ([EMAIL PROTECTED]) wrote:
>> >flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> mtu 1500
>>
>> OK, so it is setting the output active flag and quite possibly never
>> returns from that state.
>
>Quite so.
Matthew Dodd said that NetBSD might've a workaround/solution for this.
His guess was that the hardware wedges for some reason.
>> Hmmm, if you don't do an ifconfig down/up or just up it won't come back,
>> right? I mean, you can sit it there for days if you want, you have to
>> up it to get it back?
>
>Yes, and have done so. I've left it hung for as long as 2 days; it doesn't
>pick back up until I ifconfig down/up.
During this time the OACTIVE flag stays there all the time?
Which FreeBSD version?
What is the dmesg line for the ep card you have? [grep ep0
/var/run/dmesg.boot]
>Strangely, this only way I can reproduce the problem is by installing
>Solaris patch-clusters on my diskless workstation via NFS. Every other
>network activity, no matter how strenuous, won't trigger it.
Try nmap scans. I got an ep here too:
ep0: <3Com 3C509-TP EtherLink III> at port 0x300-0x30f irq 10 on isa0
which I can have `hanging' too after I did some nmap scans. I haven't
checked for the OACTIVE flag yet. I'll try to reproduce this during the
week.
I have been looking if I could find a solution for the problem.
When you do the ifconfig ep0 up you will trigger the ep_if_init(sc) line
in if_ep.c:
case SIOCSIFFLAGS:
if (((ifp->if_flags & IFF_UP) == 0) &&
(ifp->if_flags & IFF_RUNNING)) {
ifp->if_flags &= ~IFF_RUNNING;
epstop(sc);
} else {
/* reinitialize card on any parameter change */
ep_if_init(sc);
}
break;
Since your card is already in RUNNING and UP status and those bits are
set in the ifp.if_flags.
in ep_if_init() we find:
ifp->if_flags |= IFF_RUNNING;
ifp->if_flags &= ~IFF_OACTIVE; /* just in case */
Which effectively sets RUNNING and clears OACTIVE and then proceeds to
ep_if_start().
I need to look further, but I have had other things to do as well...
Ideas/thoughts welcome.
--
Jeroen Ruigrok vd Werven/Asmodai asmodai@[wxs.nl|bart.nl|freebsd.org]
Documentation nutter/C-rated Coder BSD: Technical excellence at its best
D78D D0AD 244D 1D12 C9CA 7152 035C 1138 546A B867
I'm a child of the air, I'm a witch of the wind...
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message