freebsd-dev/sys/dev
Bjoern A. Zeeb 902827f6f3 In some situations we were not clearing pending link state attentions.
Because of this we were not getting further interrupts for link state
changes, thus never went into iface UP state and thus could not transmit.

The only way out of this was an incoming packet generating an rx interrupt
and making us call into bge_link_upd.

Up to rev. 1.101, in bge_start_locked, we only returned instantly
if there was 'no link AND nothing queued for tx'. So with a packet queued
for tx, we hit the register scrubbing at the end of bge_start_locked
and were out fine. We simply lost a packet or two but got the interrupts
need to get into UP state.
With rev. 1.102 this was turned into 'if there is no link OR there is
nothing to send' (correct behaviour) and as long as there is no link
we never hit the register scrubbing and consequently never got the link UP.

What we do now is force an interrupt at the end of bge_ifmedia_upd_locked
so we will call bge_link_upd, clear the link state attention and get
further interrupts.
This helps to get the iface UP on an idle network or at least to get
it UP faster not depending on an rx intr anymore.
In case you could not get a DHCP lease or it took very long,
it was because of this.

It is unknown which chips are affected by this. ASIC rev. 0x2003 was the
most popular trouble candidate.
At least the fiber cards should have been working fine.

Which register to scrub is currently under discussion. The comitted
solution was tested and found to work for a lot of setups. It might
not help with MSI.
The reason why we end up in such a situation is entirely unknown.

PR:		kern/111804
Tested by:	phk, scottl at Y!
MFC after:	14 days
2008-04-08 11:51:17 +00:00
..
aac Allow crashdumps on machines with >4GB of RAM as long as the adapter can 2008-04-03 23:29:31 +00:00
acpi_support Don't attach to the "IBM0057" ID. This ID is used by IBM machines for 2007-10-25 17:30:18 +00:00
acpica Revert back to probing Host-PCI bridges in the order we encounter them in 2008-04-07 18:35:11 +00:00
adlink Set D_NEEDGIANT. 2007-08-04 17:43:11 +00:00
advansys Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
agp Add resume support to the agp_i810 family. 2008-03-12 18:23:39 +00:00
aha Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
ahb Fix a compile error from the last change. 2007-06-17 15:21:09 +00:00
aic Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
aic7xxx Only print sense data diagnostics if debugging is enabled with the 2008-02-17 16:00:36 +00:00
amd Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
amr Remove an errant definition for AMR_CONFIG_ENQ3_SOLICITED NOTIFY that was 2008-02-06 14:26:31 +00:00
an Style changes from avatar. 2008-01-18 16:34:18 +00:00
ar Don't call bus_deactivate_resource() explicitly before calling 2007-03-21 03:38:37 +00:00
arcmsr Fix an incorrect FreeBSD version test. 2007-12-09 19:24:27 +00:00
arl o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
asmc Actually, I was looking at the wrong Linux .c file. Set INIT2 to its 2008-04-07 12:58:43 +00:00
asr Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
ata Unbreak the last commit. 2008-03-20 21:21:31 +00:00
ath (finally) add the hal status to the diagnostic generated after 2008-03-22 16:27:47 +00:00
atkbdc Some PS/2 mice (at least the A4Tech X-7xx) need to be set to Intelli mode 2008-02-25 13:57:18 +00:00
auxio
awi o add 802.11 state machine states for DFS and client-side power save 2007-09-05 21:31:32 +00:00
bce MFC after: 4 weeks 2008-02-22 00:46:22 +00:00
bfe Fix link state handling in bfe(4). 2008-01-29 02:15:11 +00:00
bge In some situations we were not clearing pending link state attentions. 2008-04-08 11:51:17 +00:00
bktr Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
buslogic Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
cardbus Make the PCI code aware of PCI domains (aka PCI segments) so we can 2007-09-30 11:05:18 +00:00
ce First in a series of changes to remove the now-unused Giant compatibility 2007-07-27 11:59:57 +00:00
ciss Add `hw.ciss.nop_message_heartbeat' tunable (default disabled) for 2008-02-10 06:21:52 +00:00
cm Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
cmx Commit cmx(4), a driver for Omnikey CardMan 4040 PCMCIA smartcard readers. 2008-03-06 08:09:45 +00:00
cnw Catchup to filters by piso. 2007-02-23 19:27:49 +00:00
coretemp Don't attach to non Core CPUs. This is needed because on the PIII, 2008-02-14 14:14:59 +00:00
cp First in a series of changes to remove the now-unused Giant compatibility 2007-07-27 11:59:57 +00:00
cpufreq Probe CPUs after the PCI hierarchy on i386, amd64, and ia64. This allows 2008-03-10 22:18:07 +00:00
cs o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
ct o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
ctau Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
cx Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
cxgb reduce the size of the jumbo ring on i386 and disable pcpu cluster caching 2008-03-31 21:02:27 +00:00
cy o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
dc - Const'ify the dc_devs array. 2008-03-24 17:38:24 +00:00
dcons Add a new 'why' argument to kdb_enter(), and a set of constants to use 2007-12-25 17:52:02 +00:00
de During attach on some de(4) adapters the driver sends out a test packet as 2008-04-05 17:24:44 +00:00
digi Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
dpt Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
drm Add the i915 GME device to DRM. 2008-03-21 16:38:42 +00:00
ed Add Winbond W89C940F to the list. Also, stub in some entries for two 2007-12-31 03:29:02 +00:00
eisa
em This update primarily addresses the ability to have both the em 2008-04-02 22:00:36 +00:00
en Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
ep o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 15:55:37 +00:00
esp The ESP driver isn't really MPSAFE, so don't mark it that it is. 2007-11-11 14:45:35 +00:00
ex s/destory/destroy/ (except for the code in contrib/). 2007-04-16 12:31:35 +00:00
exca - Fix exca_(io|mem)_map() to return proper errno values. 2007-03-23 17:15:07 +00:00
fatm Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
fb Replace explicit calls to video methods with their respective variants 2007-12-29 23:26:59 +00:00
fdc The wakeup() line from the rev. 1.319 is wrong and reintroduces 2008-01-11 16:50:52 +00:00
fe o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
firewire Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
flash Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
fxp Reuse the mbuf that was just retrieved from the receive ring if mbuf 2008-03-22 18:13:39 +00:00
gem Split the registers into two halves in preparation for SBus support. 2008-03-24 17:23:53 +00:00
harp
hatm Give MEXTADD() another argument to make both void pointers to the 2008-02-01 19:36:27 +00:00
hfa o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
hifn Overhaul driver/subsystem api's: 2007-03-21 03:42:51 +00:00
hme Remove invalid BUS_DMA_ALLOCNOW when creating a tag which is used for 2007-05-01 11:50:11 +00:00
hptiop Update the hptiop driver to version 1.3. This adds support for the 4xxx 2008-02-03 16:07:12 +00:00
hptmv Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
hptrr Fix a mistake made during the import of the driver. Previous versions of 2008-03-08 18:06:48 +00:00
hwpmc Sign-extend the 48-bit AMD PMC counter before treating it to a 64-bit 2008-03-18 08:39:11 +00:00
ic Support for Freescale QUad Integrated Communications Controller. 2008-03-03 18:20:17 +00:00
ichsmb Add the Intel 82801FB (ICH6) SMBus controller and the 2007-11-26 19:54:54 +00:00
ichwd Add support for ICH8M. 2008-01-07 09:46:39 +00:00
ida o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
idt Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
ie o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
ieee488 Catchup with filters 2007-02-23 19:34:52 +00:00
if_ndis Use pause(9) instead of a tsleep() on a stack variable. 2008-01-17 20:11:58 +00:00
igb Another build fix 2008-04-03 06:45:38 +00:00
iicbus Don't use spinlocks here. The iicbus transactions can take a long 2007-04-17 05:48:35 +00:00
iir Fix a buffer overflow in the processing of various SCSI commands. This likely 2008-01-09 20:02:56 +00:00
io
ipmi Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
ips o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
ipw Plug two potential (root-only, local) information leaks. buf is not 2007-12-05 19:32:07 +00:00
iscsi/initiator Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
isp Add missing locking for SBus controllers. 2007-11-05 11:22:18 +00:00
ispfw The MODULE_NAME should "ispfw" unless overriden, not "isp". 2006-12-10 03:42:57 +00:00
iwi Plug two potential (root-only, local) information leaks. buf is not 2007-12-05 19:32:07 +00:00
ixgb Catch up the rest of the drivers with the ether_vlan_mtap modifications. 2007-03-04 03:38:08 +00:00
ixgbe This is an update to the new Intel 10G 82598 driver. 2007-09-04 02:31:35 +00:00
joy
kbd Remove explicit calls to keyboard methods with their respective variants 2007-12-29 21:55:25 +00:00
kbdmux Remove explicit calls to keyboard methods with their respective variants 2007-12-29 21:55:25 +00:00
le Correct the comments in am7990_intr() and am79900_intr(); it's not 2007-12-30 00:23:38 +00:00
led Make it possible to specify an initial state for the LED. 2007-04-23 12:42:15 +00:00
lge Plug memory leak in jumbo buffer allocation failure path. 2008-03-05 05:36:09 +00:00
lmc Universally adopt most conventional spelling of acquire. 2007-05-27 20:50:23 +00:00
malo remove warnings for 64bit aware platforms. 2008-04-01 01:48:08 +00:00
mc146818 Export mc146818_def_{read,write}() so the front-end can make use 2007-06-16 23:10:00 +00:00
mca
mcd
md Zero sc->vnode if mdsetcred() fails. 2008-02-28 18:31:54 +00:00
mem
mfi Add in a compat. mode so you can either open the card's device 2008-03-22 02:57:49 +00:00
mii Add support for IC Plus IP1001 PHY. 2008-04-05 00:52:07 +00:00
mk48txx Revisit the watchdogs: Resetting the error to EINVAL after failing to set the 2007-03-27 21:03:37 +00:00
mlx o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
mly Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
mmc Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
mpt Don't force a reset at driver attach time. It doesn't work on some 2008-04-03 14:39:48 +00:00
mse o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
msk Move comments block 1 line up to remark on the setting 2008-03-11 02:39:52 +00:00
mxge Initialize if_baudrate using IF_Gbps() macro. 2008-04-02 13:59:43 +00:00
my Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
ncv o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
nfe Nuke local jumbo allocator and switch to use of UMA backed page 2008-03-06 01:47:53 +00:00
nge Fix function prototype for device_shutdown method. 2007-11-22 02:45:00 +00:00
nmdm Call ttyld_close() in nmdmclose() to ensure that nmdm(4) 2007-08-01 21:38:11 +00:00
nsp o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
null Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
nve Fix function prototype for device_shutdown method. 2007-11-22 02:45:00 +00:00
nvram Split /dev/nvram driver out of isa/clock.c for i386 and amd64. I have not 2007-10-26 03:23:54 +00:00
nxge Merge Neterion if_nxge driver version 2.0.9.11230 with the following 2007-10-29 14:19:32 +00:00
ofw In keeping with style(9)'s recommendations on macros, use a ';' 2008-03-16 10:58:09 +00:00
patm Give MEXTADD() another argument to make both void pointers to the 2008-02-01 19:36:27 +00:00
pbio
pccard Commit cmx(4), a driver for Omnikey CardMan 4040 PCMCIA smartcard readers. 2008-03-06 08:09:45 +00:00
pccbb Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
pcf Don't call bus_deactivate_resource() explicitly before calling 2007-03-21 03:38:37 +00:00
pci Relax the check for a PCI-express chipset by assuming the system is a 2008-02-01 20:31:09 +00:00
pdq Fix preprocessor code to check for a symbol being defined prior to checking 2007-06-08 01:49:04 +00:00
powermac_nvram Redefine bus_space_tag_t on PowerPC from a 32-bit integral to 2007-12-19 18:00:50 +00:00
ppbus Work around problems with the ppbus(4)'s interesting way of managing 2008-01-10 23:43:47 +00:00
ppc Don't call bus_deactivate_resource() explicitly before calling 2007-03-21 03:38:37 +00:00
pst o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
puc o Add Moxa Technologies CP-104EL PCI Express 4 port Serial card. 2008-01-12 19:14:29 +00:00
quicc Support for Freescale QUad Integrated Communications Controller. 2008-03-03 18:20:17 +00:00
ral Various bug fixes for 2560 parts of ral(4): 2008-02-03 11:47:38 +00:00
random Correct a random value disclosure in random(4). 2007-11-29 16:06:12 +00:00
ray add defs just removed from ieee80211.h 2007-09-05 21:25:58 +00:00
rc o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
re Padding more bytes than necessary one broke another variants of 2008-03-31 04:03:14 +00:00
rndtest
rp Initialize DWBuf[3]. 2007-07-05 06:51:49 +00:00
safe bandaid crash as I have no time to research the issue and the driver 2007-11-03 19:10:14 +00:00
sbni Quiet framelen uninitialized warning. I think it was a false alarm. 2007-07-05 07:46:33 +00:00
sbsh Propagae volatile qualifier. 2007-06-08 01:54:22 +00:00
scc Support for Freescale QUad Integrated Communications Controller. 2008-03-03 18:20:17 +00:00
scd Use pause() rather than tsleep() on stack variables and function pointers. 2007-02-27 17:23:29 +00:00
sf Fix build. 2008-01-21 09:51:28 +00:00
si Based in info gleaned from the web and other drivers (including the Linux 2007-12-01 20:39:47 +00:00
sio Add a new 'why' argument to kdb_enter(), and a set of constants to use 2007-12-25 17:52:02 +00:00
sk Prefer NULL over integer 0 for pointer type. 2008-02-14 01:25:01 +00:00
smbus Only support the SMB_OLD_BREAD ioctl if one of COMPAT_FREEBSD[456] is 2006-09-26 14:38:56 +00:00
sn o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
snc o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
snp Move the check for the snp device being already attached after the 2007-12-24 13:47:16 +00:00
sound Limit total hardware playback channels to just 1. The reliability of 2007-12-14 02:16:26 +00:00
speaker Make speaker a pseudo device driver instead of attaching to a PnP id. 2008-03-26 21:33:41 +00:00
spibus MFp4: when passing the transfer up the foodchain, make sure we go up 2006-10-20 07:11:52 +00:00
sr Don't call bus_deactivate_resource() explicitly before calling 2007-03-21 03:38:37 +00:00
stg o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
stge Use m_collapse(9) to collapse mbuf chains instead of relying on 2008-01-18 08:32:08 +00:00
streams Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
sym Fix Symbios driver on amd64: Since amd64 has 64 bit pointers but the same 2007-07-20 23:02:01 +00:00
syscons The "free-lance" timer in the i8254 is only used for the speaker 2008-03-26 20:09:21 +00:00
tdfx Add the module dependency on the mem(4) module. This will fix the module 2008-03-13 14:08:41 +00:00
ti Fix some "in in" typos in comments. 2008-03-26 07:32:08 +00:00
trm Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
tsec Convert TSEC watchdog to the new scheme. 2008-03-12 16:35:25 +00:00
twa Deferred interrupts don't work yet, disable them. 2007-10-12 16:51:22 +00:00
twe Add missing \n. 2008-02-12 08:58:26 +00:00
tx o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
txp Read MII_ANAR register and get common denominator ability. 2007-11-16 10:32:10 +00:00
uart add device hints to control the rx FIFO interrupt level on 16550A parts 2008-03-12 19:09:20 +00:00
ubsec Overhaul driver/subsystem api's: 2007-03-21 03:42:51 +00:00
usb Add PCI ID's for ICH8 USB controllers. 2008-04-07 19:12:22 +00:00
utopia Fix a use-after-free. 2007-12-05 19:32:59 +00:00
vge Fix function prototype for device_shutdown method. 2007-11-22 02:45:00 +00:00
vkbd Remove explicit calls to keyboard methods with their respective variants 2007-12-29 21:55:25 +00:00
vr Teach vr(4) to use bus_dma(9) and major overhauling to handle link 2008-03-11 04:51:22 +00:00
vx Fix function prototype for device_shutdown method. 2007-11-22 02:45:00 +00:00
watchdog Revisit the watchdogs: Resetting the error to EINVAL after failing to set the 2007-03-27 21:03:37 +00:00
wds Prepare for future integration between CAM and newbus. xpt_bus_register 2007-06-17 05:55:54 +00:00
wi Make wi_set_channel() actually change the channel in hardware so that hostap 2007-09-16 20:02:29 +00:00
wl Don't call bus_deactivate_resource() explicitly before calling 2007-03-21 03:38:37 +00:00
wpi fix inverted test that disabled ACK's on xmit 2008-03-12 20:03:31 +00:00
xe o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00