Replying to my own message from 20051120.... :
Hello misc,
I recently installed 3.8 on a system using two FA310TX NICs (dmesg to
follow with more information on the system). Every 2-3 hours, the
system stops responding over the network. It is headless, so I'm not
sure if the whole system is hanging, or just the network. At any rate,
the last few lines of /var/log/messages before the system hangs are:
Nov 18 23:59:37 Ozzie /bsd: dc0: failed to force tx and rx to idle state
Nov 18 23:59:37 Ozzie /bsd: dc1: failed to force tx and rx to idle state
Nov 19 00:30:13 Ozzie /bsd: dc0: failed to force tx and rx to idle state
Nov 19 00:30:13 Ozzie /bsd: dc1: failed to force tx and rx to idle state
Nov 19 00:59:50 Ozzie syslogd: restart
I've read several messages from the past few years on Usenet and the
archives indicating that the "dc0: failed to force tx and rx to idle
state" message is the result of a known, but harmless, bug in dc(4). I
haven't found any documentation of this problem manifesting itself as
it is on this machine, although at this point I can't say for sure
that the problem has anything to do with dc(4), it just seems likely.
I have tried 'ifconfig dc0 down && ifconfig dc0 up` as some previous
messages suggested. I have also tried setting the media type
specifically in hostname.[dc0|dc1] versus using autoselect. Neither of
these actions has had any effect.
Has anyone else had a similar issue? What other steps can I take to
debug this and find out exactly what's happening prior to the network
going down?
Thank you.
dmesg follows (looks like things are about to go down soon...):
<snip>
In the process of trying to figure this out, I wanted to see what was
going over the network right before the system stopped responding, so I
ran tcpdump on the dc1 interface, writing all packets to a file.
Interestingly, the system does not go down when tcpdump is running.
Perhaps setting dc1 into promiscuous mode is the key, but why? Any
thoughts about what else I can do to track down the problem?
Just in case, below is the output from 'pfctl -sr' (dc0 is external if,
dc1 is internal if) :
scrub in on dc0 all fragment reassemble
block drop all
block drop out log on dc0 proto tcp from any to any port = smtp
block drop out log quick on dc0 from ! (dc0:0) to any
block drop in quick on dc0 inet from any to 255.255.255.255
block drop in quick on dc0 inet from 10.0.0.0/8 to any
block drop in quick on dc0 inet from 172.16.0.0/12 to any
block drop in quick on dc0 inet from 192.168.0.0/16 to any
block drop in quick on dc0 inet from 255.255.255.255 to any
pass in on dc1 inet proto tcp from 192.168.1.0/24 to any port != smtp
flags S/SA keep state
pass in on dc1 inet proto udp from 192.168.1.0/24 to any port != 25 keep
state
pass out on dc0 proto tcp from (dc0) to any port != smtp flags S/SA
modulate state
pass out on dc0 proto udp from (dc0) to any port != 25 keep state
pass in on dc0 inet proto tcp from any port = ftp-data to (dc0) user =
71 flagsS/SA keep state
block drop in on dc1 inet proto tcp from any to any port = netbios-ns
block drop in on dc1 inet proto tcp from any to any port = netbios-dgm
block drop in on dc1 inet proto tcp from any to any port = netbios-ssn
block drop in on dc1 inet proto tcp from any to any port = smtp
block drop in on dc1 inet proto udp from any to any port = netbios-ns
block drop in on dc1 inet proto udp from any to any port = netbios-dgm
block drop in on dc1 inet proto udp from any to any port = netbios-ssn
and from `pfctl -sn`:
nat on dc0 inet from 192.168.1.0/24 to ! 192.168.1.0/24 -> (dc0) round-robin
rdr on dc1 inet proto tcp from any to any port = ftp -> 127.0.0.1 port 8021
Thank you.