[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

Reply via email to