freebsd-dev/sys/dev
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
..
advansys Fix typo (accessable --> accessible). 2000-06-14 17:53:40 +00:00
agp Add support for Intel's i810 chipset with integrated graphics. An 2000-07-12 10:13:07 +00:00
aha Fix typo (accessable --> accessible). 2000-06-14 17:53:40 +00:00
ahb Fix typo (accessable --> accessible). 2000-06-14 17:53:40 +00:00
aic Terminate aic_ids[] 2000-06-19 22:16:14 +00:00
aic7xxx *smack* #if 0, not #ifdef 0. 2000-08-04 18:17:45 +00:00
amd Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
amr The AMI MegaRAID's internal memory map conflicts with scatter/gather 2000-06-10 19:22:39 +00:00
an MF4: fix style(9) whitespace breakage. 2000-08-08 23:53:11 +00:00
ar Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
ata Backout the tsleep on probe, it breaks in resume mode as tsleep 2000-08-11 10:34:22 +00:00
atkbdc Fix GENERIC_MOUSE_ENTRY. 2000-07-28 03:48:46 +00:00
awi Remove the awi(4) manual page from the sys/ hierarchy after a repo- 2000-07-23 09:40:39 +00:00
bktr Update to driver 2.14. Adds new Tuner types for Hauppauge WinTV cards 2000-06-28 15:09:12 +00:00
buslogic Fix typo (accessable --> accessible). 2000-06-14 17:53:40 +00:00
cardbus Sync to latest cardbusdevs file 1999-11-18 07:22:59 +00:00
ccd Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
cs Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
cy Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
dc Close PR 20438. Make fix for preserving LED settings conditional on 2000-08-07 17:03:20 +00:00
de Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
dec Add missing $FreeBSD$ 2000-05-01 19:54:26 +00:00
dgb Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
dpt Fix some warnings. Here are more part-time volatiles - ie: data that 2000-08-07 18:44:05 +00:00
ed MFPAO: Add support for AX88190, equipped in MELCO LPC3-TX. 2000-07-23 15:15:43 +00:00
eisa Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
en Ahhrggg. Put the test for the compat shims AFTER the file that includes 2000-03-27 20:24:02 +00:00
ep Properly detect ISA cards in EISA mode and skip them in the ISA identify 2000-07-18 06:37:08 +00:00
ex Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
fb Unused include: #include "fb.h" 2000-06-10 06:41:11 +00:00
fdc Avoid a '"fd" is usurping ...' message. 2000-08-09 12:45:04 +00:00
fe Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
fxp Fix a bug brought to light by the people working on SMPng. I don't quite 2000-08-11 17:47:55 +00:00
hea Remove un-needed #include's. 2000-01-17 20:49:59 +00:00
hfa Ensure that DMA mappings are freed in error situations. 2000-01-15 21:01:04 +00:00
ic Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
ida The DEC version of the Smart controller has its configuration information 2000-07-27 22:24:44 +00:00
ie Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
iicbus Allow these drivers to be detached. 2000-06-16 07:20:29 +00:00
isp Add a comment as to where stdarg.h applies. 2000-08-03 03:05:50 +00:00
ispfw Roll back target mode f/w to 7.55- 7.65 hangs when presented with a 2000-07-17 00:34:52 +00:00
joy Add ADS7182 as a known Joystick. 2000-01-18 08:38:35 +00:00
kbd Manipulate with AltGR Led (really CapsLock Led) only in K_XLATE mode, because 2000-05-28 12:43:24 +00:00
lmc Adjust to accomodate recent changes to the rcvdata and rcvmsg 2000-05-01 03:31:58 +00:00
lnc Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
mc146818 Add missing $FreeBSD$ 2000-05-01 19:54:26 +00:00
mca Set the RF_SHAREABLE flage when we allocate an IRQ. 2000-03-13 11:43:53 +00:00
mcd Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
md Rename MDNSECT to MD_NSECT and declare it as something that isn't 2000-07-17 13:13:04 +00:00
mii Added Altima Communications OUI and their AC101 10/100 2000-06-21 19:26:01 +00:00
mlx Add support for 2.x/3.x firmware adapters which are too old to have a 2000-08-04 06:52:00 +00:00
mse - `Newbus'ified the driver. 2000-03-18 15:13:30 +00:00
musycc Add transmit buffer limitation depending on actual bandwidth. 2000-07-22 17:08:52 +00:00
null Small style change; make function names less likely to clash with 2000-07-09 12:29:24 +00:00
nulldev Small style change; make function names less likely to clash with 2000-07-09 12:29:24 +00:00
pccard Define get_memory_offset method 2000-08-11 15:51:51 +00:00
pcf Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
pci Nuke the useless chip driver. It gets in the way when you want to load 2000-06-09 16:00:29 +00:00
pcic Almost make loading work. This is a checkpoint. With these change we 2000-06-18 05:25:30 +00:00
pdq Uh, ya, sure this almost compiled for __bsdi__. NOT! 2000-05-21 05:33:40 +00:00
ppbus Remove an unused variable warning. 2000-07-18 20:16:36 +00:00
ppc Add support for the PC87303 chipset (found on Miata alphas) and add 2000-07-20 09:28:07 +00:00
random o Fix a horrible bug where small reads (< 8 bytes) would return the 2000-07-25 21:18:47 +00:00
randomdev o Fix a horrible bug where small reads (< 8 bytes) would return the 2000-07-25 21:18:47 +00:00
ray Add attribute memory setup warnings 2000-07-11 21:31:59 +00:00
rc Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
rp - Eliminate rpread(). Call generic ttyread(). (cf rev 1.33) 2000-06-12 15:21:59 +00:00
scd Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
sf Close PR# 19904: remember to call sf_setmulti() when initializing the 2000-07-14 19:11:02 +00:00
si Always leave SP_DCEN on (monitor DCD). Otherwise the firmware *really* 2000-01-25 16:45:54 +00:00
sio Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
sk Add call to bus_generic_attach() at the end of sk_attach(). It turns out that 2000-08-02 18:19:00 +00:00
smbus Remove unneeded #include <sys/kernel.h> 2000-04-29 15:36:14 +00:00
sn Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
snp Unstaticize this driver. You can have as many snoop devices as you can 2000-04-02 00:35:37 +00:00
sound Missed a step when activating the solo driver. 2000-08-09 20:28:19 +00:00
speaker Add PnP probe methods to some common AT hardware drivers. In each case, 2000-06-23 07:44:33 +00:00
sr Mass update of isa drivers using compatability shims to use 2000-05-28 13:40:48 +00:00
streams Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
sym - Various comment fixes and additions. 2000-07-02 21:26:50 +00:00
syscons o Fix a horrible bug where small reads (< 8 bytes) would return the 2000-07-25 21:18:47 +00:00
tdfx Bring tdfx_pci.c in sync with some patches I have been testing. Adds better 2000-08-01 05:10:29 +00:00
ti Add support for the Netgear GA620T copper gigabit card. 2000-08-02 18:49:17 +00:00
twe Remove some confusing verbosity - we have no idea what RAID level the 2000-07-20 02:31:56 +00:00
tx Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
usb Fix indentation ruined by previous commit. 2000-08-11 16:37:43 +00:00
vinum start_object: Set the revive length correctly. 2000-06-07 03:34:18 +00:00
vn Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vr Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
vx Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
wi Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
wl Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00
xe Make all Ethernet drivers attach using ether_ifattach() and detach using 2000-07-13 22:54:34 +00:00