freebsd-dev/sys/dev
Pyun YongHyeon fee4d88e0f Fix "Duplicate mbuf free panic".
The cause of "Duplicate mbuf free panic" is in the programming
error of hme_load_txmbuf(). The code path of the panic is the
following.

1. Due to unknown reason DMA engine was freezed. So TX descritors
   of HME become full and the last failed attempt to transmit a
   packet had set its associated mbuf address to hme_txdesc
   structure. Also the failed packet is requeued into interface
   queue structure in order to retrasmit it when there are more
   available TX descritors.

2. Since DMA engine was freezed, if_timer starts to decrement its
   counter. When if_timer expires it tries to reset HME. During
   the reset phase, hme_meminit() is called and it frees all
   associated mbuf with descriptors. The last failed mbuf is also
   freed here.

3. After HME reset completed, HME starts to retransmit packets
   by dequeing the first packet in interface queue.(Note! the
   packet was already freed in hme_meminit()!)

4. When a TX completion interrupt is posted by the HME, driver
   tries to free the successfylly transmitted mbuf. Since the
   mbuf was freed in step2, now we get "Duplicate mbuf free panic".

However, the real cause is in DMA engine freeze. Since no fatal
errors reported via interrupts, there might be other cause of
the freeze. I tried hard to understand the cause of DMA engine
freeze but couldn't find any clues. It seems that the freeze
happens under very high network loads(e.g. 7.5-8.0 MB/s TX speed).

Though this fix is not enough to eliminate DMA engine freeze it's
better than panic.

Reported by:	jhb via sparc64 ML
2005-02-02 08:35:11 +00:00
..
aac Fix whitespace 2005-01-23 16:13:10 +00:00
acpi_support Unify ACPI_DEBUG support for all OEM drivers under ACPI_OEM. Since more than 2004-12-13 23:31:46 +00:00
acpica Consistently use pcib for a printf. 2005-01-27 20:49:59 +00:00
adlink
advansys Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
agp /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
aha Simplify aha resource management, and fix a few bugs in unwinding 2005-01-19 06:54:10 +00:00
ahb Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
aic Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
aic7xxx Make this compile from the last commit 2005-01-06 05:30:44 +00:00
amd Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
amr Add support for the LSI 320-2E PCI-Express controller. Fix a couple of bugs 2005-01-23 23:25:41 +00:00
an Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ar Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
arl
asr Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ata Boot away another stackgap (one of the lest ones in linuxlator/i386) by 2005-01-30 08:12:37 +00:00
ath Fixup radiotap handling of FCS and QoS frames per discussion with David Young: 2005-01-24 20:31:24 +00:00
atkbdc Make life for owners of Synaptics Touchpads more pleasant :-) 2005-01-10 13:05:58 +00:00
auxio Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
awi Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
bfe correct direction for bus_dma sync of rx buffer 2005-01-09 19:57:55 +00:00
bge Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
bktr Fix a few printf problems on ia64 (and other 64-bit platforms). 2005-01-27 01:40:12 +00:00
buslogic Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
cardbus Use the standard FreeBSD license 2005-01-13 19:12:10 +00:00
ciss Remove 6422, V100 and add the P600. 2005-01-20 22:51:38 +00:00
cm
cnw Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
cp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
cs Fix the worst offenders of style(9) with a small style sweep. 2005-01-28 06:50:59 +00:00
ct Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ctau Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
cx Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
cy Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
dc /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
dcons Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
de Hide link up/down/media printfs behind bootverbose 2004-11-08 19:21:57 +00:00
dec Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
digi Add new function ttyinitmode() which sets our systemwide default 2004-10-18 21:51:27 +00:00
dpt Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
drm Fix typo from previous commit. 2005-01-07 07:08:33 +00:00
ed Add back support for D-LINK DMR-650TX, and all the other OEMd versions 2005-01-27 02:37:39 +00:00
eisa Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
em Respect the current setting of IFCAP_VLAN_HWTAGGING on 2005-01-26 13:44:47 +00:00
en Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ep Don't print 'unknown id' in the ep_pccard_identify routine. It is 2005-01-20 20:36:59 +00:00
esp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ex Include necessary declarations 2005-01-20 20:06:44 +00:00
exca Properly calculate the offset in mapping the memory of pccards. This 2005-01-11 00:32:43 +00:00
fatm Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
fb Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
fdc Mask off the upper bits of the resource before using it as an index 2005-01-20 17:27:37 +00:00
fe we don't need the offset in the attr memory to get the ethernet 2005-01-21 19:51:23 +00:00
firewire Clear PCIM_CMD_SERRESPEN and PCIM_CMD_PERRESPEN for broken hardware. 2005-01-06 07:40:34 +00:00
fxp Disable ethernet flow control in if_fxp by default, in order to prevent 2005-01-29 23:13:20 +00:00
gem Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
gfb Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
harp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
hatm Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
hfa Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
hifn Update support for 795x parts: 2005-01-19 17:03:35 +00:00
hme Fix "Duplicate mbuf free panic". 2005-02-02 08:35:11 +00:00
hptmv Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ic Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ichsmb Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ichwd Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ida Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
idt Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ie Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ieee488 Forgot to mark the IRQ as MPSAFE. 2005-02-01 20:34:47 +00:00
if_ndis Begin the first phase of trying to add IRP support (and ultimately 2005-01-24 18:18:12 +00:00
iicbus Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
iir Remove a dead vtophys() reference. 2005-01-31 01:26:22 +00:00
io
ips Add crashdump support to the ips driver. It only works for the more modern 2005-01-30 17:45:45 +00:00
isp Provide a needed argument to AT_MAKE_TAGID. 2005-01-23 22:33:59 +00:00
ispfw Roll firmware to the latest version. There are a bunch of features 2005-01-29 01:12:37 +00:00
ixgb Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
joy
kbd #include fcntl.h not vnode.h. Check O_NONBLOCK not IO_NDELAY. 2004-12-22 17:29:02 +00:00
led Better locking. 2005-01-29 16:33:51 +00:00
lge Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
lnc Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mc146818 Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mca
mcd o Fix a typo. 2005-01-30 16:42:23 +00:00
md Use MAXMINOR 2005-01-29 16:50:04 +00:00
mem
mii Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mk48txx o Sync with the NetBSD mk48txx driver (the result simplyfies some changes 2004-11-17 12:54:12 +00:00
mlx Don't use PAGE_SIZE to calculate controller-specific attributes. 2004-11-25 12:15:49 +00:00
mly
mpt Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mse Use the standard FreeBSD license 2005-01-11 06:24:40 +00:00
musycc
my Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ncv Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
nge Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
nmdm If CDSR_OFLOW (stty dsrflow) is enabled on one or both sides of a 2005-01-26 23:42:18 +00:00
nsp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
null
ofw Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
owi The two PLANEX cards listed in pccarddevs, identified only by their 2005-02-01 18:28:09 +00:00
patm Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
pbio Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
pccard The two PLANEX cards listed in pccarddevs, identified only by their 2005-02-01 18:28:09 +00:00
pccbb Use the standard FreeBSD license for these files. 2005-01-13 19:05:25 +00:00
pcf
pci Fix typo. 2005-01-29 19:45:31 +00:00
pdq
ppbus Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ppc Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
pst
puc Revert rev. 1.5. 2005-01-31 04:25:48 +00:00
random Check O_NONBLOCK not IO_NDELAY. 2004-12-22 17:29:37 +00:00
ray 64-bit clean fixes: Use %zx in preference to %x to print size_t items. 2005-01-27 01:49:23 +00:00
rc Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
re Bring in support for SUGOI LAN GIGA NIC made by System TALKS, Inc from 2005-01-22 22:40:53 +00:00
rndtest Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
rp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sab Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
safe
sbni Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sbsh Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
scd Boot away another stackgap (one of the lest ones in linuxlator/i386) by 2005-01-30 08:12:37 +00:00
sf /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
si Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sio puc handles this card, so remove it from here. 2005-01-11 00:53:58 +00:00
sk Cleanup debugging code and put it under bootverbose 2005-01-29 19:26:53 +00:00
smbus Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sn Only attach to network functions. I'm not aware of any multifunction 2005-01-20 19:59:31 +00:00
snc Remove now-stale comment 2005-01-20 20:32:56 +00:00
snp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sound BUS_SPACE_UNRESTRICTED shouldn't be used with the bus_alloc_resource 2005-02-01 07:43:34 +00:00
speaker /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
sr Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
stg Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
streams Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sx Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
sym Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
syscons Remove the last vestiges of the userconfig option. None of this actually 2004-12-01 04:59:33 +00:00
tdfx Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
tga Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ti /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
trm Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
twa Changes corresponding to the 9.1.5.2 release of twa on the 3ware website. 2005-01-05 19:04:28 +00:00
twe Recognize the 32-bit form of the twe binary passthrough ioctl()s so that 2004-12-17 17:45:29 +00:00
tx
txp Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
uart Add the keyboard system device before we probe for the keyboard. 2005-01-31 04:31:22 +00:00
ubsec Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
usb Use a taskqueue to handle port status changes. 2005-01-31 13:58:10 +00:00
utopia Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
vge Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
vkbd Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
vr /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
vx Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
watchdog
wds Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
wi The two PLANEX cards listed in pccarddevs, identified only by their 2005-02-01 18:28:09 +00:00
wl Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
xe u_intXX_t -> uintXX_t 2005-01-20 19:32:37 +00:00
zs Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00