freebsd-nq/sys
Bill Paul 069363018f Fix a bug brought to light by the people working on SMPng. I don't quite
understand exactly what it is about SMPng that tickles this bug. What I
do know is that the foo_init() routine in most drivers is often called
twice when an interface is brought up. One time is due to the ifconfig(8)
command calling the SIOCSIFFLAGS ioctl to set the IFF_UP flag, and another
is probably due to the kernel calling ifp->if_init at some point. In any
case, the SMPng changes seem to affect the timing of these two events in
such a way that there is a significant delay before any packets are sent
onto the wire after the interface is first brought up. This manifested
itself locally as an SMPng test machine which failed to obtain an address
via DHCP when booting up.

It looks like the second call to fxp_init() is happening faster now than
it did before, and I think it catches the chip while it's in the process
of dealing with the configuration command from the first call. Whatever
the case, a FXP_CSR_SCB_CNA interrupt event is now generated shortly after
the second fxp_init() call. (This interrupt is apparently never generated
by a non-SMPng kernel, so nobody noticed.)

There are two problems with this: first, fxp_intr() does not handle the
FXP_CSR_SCB_CNA interrupt event (it never tests for it or does anything
to deal with it), and second, the meaning of FXP_CSR_SCB_CNA is not
documented in the driver. (Apparently it means "command unit not active.")
Bad coder. No biscuit.

The fix is to have the FXP_CSR_SCB_CNA interrupt handled just like the
FXP_SCB_STATACK_CXTNO interrupt. This prevents the state machine for
the configuration/RX filter programming stuff from getting wedged for
several seconds and preventing packet transmission.

Noticed by: jhb
2000-08-11 17:47:55 +00:00
..
alpha Regen. (Fix SYS_exit) 2000-07-29 10:07:38 +00:00
amd64 Clean up some low level bootstrap code: 2000-08-11 09:05:12 +00:00
boot Add missing "is". 2000-08-11 10:32:23 +00:00
cam Don't attempt to actually read SAF-TE temperature objects- nobody seems 2000-08-08 23:00:11 +00:00
coda Remove 42 unneeded #include <sys/ioccom.h>. 2000-05-03 07:31:38 +00:00
compat Regen. (Fix SYS_exit) 2000-07-29 10:07:38 +00:00
compile
conf activate via82c686 audio driver 2000-08-09 01:08:59 +00:00
contrib/dev Remove these here, these were repocopied to src/sys/ufs/ffs. 2000-06-23 00:11:32 +00:00
crypto sync with kame tree as of july00. tons of bug fixes/improvements. 2000-07-04 16:35:15 +00:00
ddb Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
dev Fix a bug brought to light by the people working on SMPng. I don't quite 2000-08-11 17:47:55 +00:00
fs Rename the loadable nullfs kernel module: null -> nullfs 2000-07-28 11:54:09 +00:00
geom Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
gnu sync CCR register definitions with creative sources 2000-08-06 20:58:11 +00:00
i4b Borrow phk's axe and apply the next stage of config(8)'s evolution. 2000-06-13 22:28:50 +00:00
i386 Clean up some low level bootstrap code: 2000-08-11 09:05:12 +00:00
isa Avoid a '"fd" is usurping ...' message. 2000-08-09 12:45:04 +00:00
isofs/cd9660 This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
kern Clean up some low level bootstrap code: 2000-08-11 09:05:12 +00:00
libkern Comment out unavailable call. This needs to be revisited when the entropy 2000-06-25 10:15:58 +00:00
miscfs Rename the loadable nullfs kernel module: null -> nullfs 2000-07-28 11:54:09 +00:00
modules activate via82c686 audio driver 2000-08-09 01:08:59 +00:00
msdosfs Certain error contitions cause msdosfs_rename() to decrement the 2000-07-14 11:52:56 +00:00
net Replace nonexistent !defined(_LKM) by !defined(KLD_MODULE) 2000-08-01 00:40:32 +00:00
netatalk Just need to pass the address family to if_simloop(), not the whole sockaddr. 2000-05-24 21:16:56 +00:00
netatm Just need to pass the address family to if_simloop(), not the whole sockaddr. 2000-05-24 21:16:56 +00:00
netgraph Oops, previous commit fixed a bug that was already fixed before. 2000-08-10 23:04:46 +00:00
netinet - Do not modify Peer's Call ID in outgoing Incoming-Call-Connected 2000-08-09 11:25:44 +00:00
netinet6 backout ND6_USE_RTSOCK change in previous 2000-08-11 12:29:04 +00:00
netipx Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
netkey Add missing #include to unbreak IPSEC_DEBUG builds 2000-07-07 08:36:00 +00:00
netnatm Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
netncp Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
netns Clean up some loose ends in the network code, including the X.25 and ISO 2000-02-13 03:32:07 +00:00
nfs This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
nfsclient This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
nfsserver This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
ntfs Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
nwfs Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
pc98 Merged from sys/i386/conf/GENERIC revisions 1.266 and 1.267. 2000-08-08 11:57:09 +00:00
pccard Add some infrastructure support for dealing with large attribute 2000-08-10 17:35:11 +00:00
pci Fix a bug brought to light by the people working on SMPng. I don't quite 2000-08-11 17:47:55 +00:00
posix4 Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
powerpc Support bounce buffers for ISA DMA on the alpha. This is required for the 2000-06-19 18:41:27 +00:00
rpc
svr4 Regen. (Fix SYS_exit) 2000-07-29 10:07:38 +00:00
sys o Add POSIX1E_CAPABILITY_EXTATTR_NAME, a string constant for the 2000-08-08 18:47:59 +00:00
tools remove crufty exec stuff, perl is in the base system 2000-06-27 19:09:55 +00:00
ufs Initialize *countp to 0 in stub for softdep_flushworklist(). 2000-08-09 00:41:54 +00:00
vm Minor cleanups: 2000-07-28 22:03:08 +00:00
Makefile If "MODULES_WITH_WORLD" is defined, sys/modules will be built with the 2000-06-17 10:51:56 +00:00