linux/drivers/net
David S. Miller 49d85c502e [NET]: Fix interrupt semaphore corruption in Intel drivers.
Several of the Intel ethernet drivers keep an atomic counter used to
manage when to actually hit the hardware with a disable or an enable.

The way the net_rx_work() breakout logic works during a pending
napi_disable() is that it simply unschedules the poll even if it
still has work.

This can potentially leave interrupts disabled, but that is OK
because all of the drivers are about to disable interrupts
anyways in all such code paths that do a napi_disable().

Unfortunately, this trips up the semaphore used here in the Intel
drivers.  If you hit this case, when you try to bring the interface
back up it won't enable interrupts.  A reload of the driver module
fixes it of course.

So what we do is make sure all the sequences now go:

	napi_disable();
	atomic_set(&adapter->irq_sem, 0);
	*_irq_disable();

which makes sure the counter is always in the correct state.

Reported by Robert Olsson.

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-20 20:31:39 -08:00
..
appletalk
arcnet
arm
atl1 atl1: fix frame length bug 2008-01-18 14:41:49 -05:00
bonding bonding: Don't hold lock when calling rtnl_unlock 2008-01-18 14:38:39 -05:00
chelsio cxgb - revert file mode changes. 2007-12-04 14:52:58 -05:00
cris CRISv10 Ethernet declare mac fix 2007-11-14 18:45:47 -08:00
cxgb3 cxgb3 - T3C support update 2007-12-07 15:00:36 -05:00
e1000 [NET]: Fix interrupt semaphore corruption in Intel drivers. 2008-01-20 20:31:39 -08:00
e1000e [NET]: Fix interrupt semaphore corruption in Intel drivers. 2008-01-20 20:31:39 -08:00
ehea ehea: Reworked rcv queue handling to log only fatal errors 2007-11-23 22:09:01 -05:00
fec_8xx [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
fs_enet fs_enet: check for phydev existence in the ethtool handlers 2008-01-12 17:45:33 -05:00
hamradio
ibm_emac
ibm_newemac Net: ibm_newemac, remove SPIN_LOCK_UNLOCKED 2007-12-14 16:12:45 -05:00
irda [IRDA]: stir4200 fixes. 2007-12-16 14:09:44 -08:00
ixgb [NET]: Fix interrupt semaphore corruption in Intel drivers. 2008-01-20 20:31:39 -08:00
ixgbe [NET]: Fix interrupt semaphore corruption in Intel drivers. 2008-01-20 20:31:39 -08:00
ixp2000 [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
mlx4 mlx4_core: Fix state check in mlx4_qp_modify() 2007-11-20 13:01:28 -08:00
myri10ge [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
netxen netxen: fix byte-swapping in tx and rx 2008-01-12 17:35:38 -05:00
pcmcia 3c574, 3c515 bitfields abuse 2008-01-18 14:44:33 -05:00
phy PHY: Add the phy_device_release device method. 2007-12-04 15:06:33 -05:00
sk98lin
skfp
tokenring 3c359 endianness annotations and fixes 2007-12-22 23:16:42 -05:00
tulip endianness noise in tulip_core 2008-01-12 17:33:04 -05:00
usb [usb netdev] asix: fix regression 2008-01-12 17:43:19 -05:00
wan sbni endian fixes 2008-01-18 14:44:33 -05:00
wireless rt2x00: Fix ieee80211 payload alignment 2008-01-16 12:53:32 -05:00
3c59x.c
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c 3c509: PnP resource management fix 2008-01-12 17:41:04 -05:00
3c515.c 3c574, 3c515 bitfields abuse 2008-01-18 14:44:33 -05:00
3c523.c
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c
8139too.c
8390.c
8390.h
82596.c
a2065.c
a2065.h
ac3200.c
acenic_firmware.h
acenic.c
acenic.h
amd8111e.c amd8111e: don't call napi_enable if configured w/o NAPI 2007-11-23 22:09:00 -05:00
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c
au1000_eth.h
ax88796.c
b44.c
b44.h
bfin_mac.c Merge branch 'master' into upstream-fixes 2007-12-01 16:18:56 -05:00
bfin_mac.h Blackfin arch: change get_bf537_ether_addr() to bfin_get_ether_addr() since this is not BF537 specific and to better match other Blackfin-specific conventions 2007-11-15 21:21:20 +08:00
bmac.c
bmac.h
bnx2_fw2.h
bnx2_fw.h
bnx2.c [BNX2]: Update version to 1.6.9. 2007-12-11 02:45:31 -08:00
bnx2.h [BNX2]: Fix RX packet rot. 2007-12-11 02:45:30 -08:00
bsd_comp.c
cassini.c [CASSINI]: Bump driver version and release date. 2008-01-04 03:55:30 -08:00
cassini.h [CASSINI]: Fix endianness bug. 2008-01-04 00:47:04 -08:00
cpmac.c Replace cpmac fix 2008-01-18 14:45:41 -05:00
cs89x0.c
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c dl2k: the rest 2008-01-18 14:44:33 -05:00
dl2k.h dl2k: the rest 2008-01-18 14:44:33 -05:00
dm9000.c
dm9000.h
dummy.c
e100.c [NET]: Make ->poll() breakout consistent in Intel ethernet drivers. 2008-01-08 23:30:14 -08:00
e2100.c
eepro100.c
eepro.c
eexpress.c
eexpress.h
epic100.c [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c
fec_mpc52xx_phy.c
fec_mpc52xx.c fec_mpc52xx: write in C... 2007-12-22 22:53:07 -05:00
fec_mpc52xx.h
fec.c
fec.h
forcedeth.c [FORCEDETH]: Fix reversing the MAC address on suspend. 2008-01-08 23:30:20 -08:00
gianfar_ethtool.c
gianfar_mii.c
gianfar_mii.h
gianfar_sysfs.c
gianfar.c gianfar: fix compile warning 2007-12-04 15:06:11 -05:00
gianfar.h
hamachi.c hamachi endianness fixes 2007-12-14 15:26:15 -05:00
hp100.c
hp100.h
hp-plus.c
hp.c
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c ipg: fix Tx completion irq request 2008-01-17 23:35:09 +01:00
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
Kconfig e1000e Kconfig: remove ref to nonexistant docs 2008-01-18 14:40:18 -05:00
lance.c
lasi_82596.c
lib8390.c
lib82596.c LIB82596: correct data types for hardware addresses 2007-12-01 16:38:28 -05:00
LICENSE.SRC
lne390.c
loopback.c Fixed a small typo in the loopback driver 2008-01-12 17:41:04 -05:00
lp486e.c
mac89x0.c
mac8390.c
macb.c MACB: clear transmit buffers properly on transmit underrun 2007-12-22 23:26:51 -05:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c [MACVLAN]: Prevent nesting macvlan devices 2008-01-10 22:39:28 -08:00
Makefile
meth.c [METH]: Fix MAC address handling. 2008-01-08 23:30:00 -08:00
meth.h
mii.c
mipsnet.c
mipsnet.h
mv643xx_eth.c
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
ne2.c
ne2k-pci.c
ne3210.c
ne-h8300.c
ne.c
netconsole.c
netx-eth.c [NET]: Fix netx-eth.c compilation. 2008-01-08 23:29:59 -08:00
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c [NIU]: Fix 1G PHY link state handling. 2008-01-17 01:49:30 -08:00
niu.h [NIU]: Support for Marvell PHY 2008-01-10 02:12:44 -08:00
ns83820.c
pasemi_mac.c pasemi_mac: Fix reuse of free'd skb 2007-12-04 14:53:49 -05:00
pasemi_mac.h
pci-skeleton.c
pcnet32.c [NET]: Fix drivers to handle napi_disable() disabling interrupts. 2008-01-08 23:30:12 -08:00
plip.c plip: fix parport_register_device name parameter 2007-11-26 19:39:01 -08:00
ppp_async.c
ppp_deflate.c
ppp_generic.c
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c
pppol2tp.c
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
qla3xxx.c [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
qla3xxx.h
r8169.c r8169: fix missing loop variable increment 2008-01-12 17:41:04 -05:00
rionet.c
rrunner.c rrunner: use offsetof() instead of homegrown insanity 2007-12-22 22:53:07 -05:00
rrunner.h rrunner: use offsetof() instead of homegrown insanity 2007-12-22 22:53:07 -05:00
s2io-regs.h S2io: Check for register initialization completion before accesing device registers 2007-12-07 15:09:06 -05:00
s2io.c S2io: Fixed synchronization between scheduling of napi with card reset and close 2008-01-18 14:41:50 -05:00
s2io.h
saa9730.c
saa9730.h
sb1000.c
sb1250-mac.c
sc92031.c
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
shaper.c
sis190.c sis190 endianness 2007-12-17 16:02:28 -05:00
sis900.c
sis900.h
skge.c skge: MTU changing fix 2007-12-01 16:32:30 -05:00
skge.h
sky2.c Revert "sky2: remove check for PCI wakeup setting from BIOS" 2008-01-18 14:41:49 -05:00
sky2.h sky2: large memory workaround. 2008-01-12 17:49:10 -05:00
slhc.c
slip.c
slip.h
smc91x.c
smc91x.h Blackfin SMC91x Driver: punt CONFIG_BFIN -- we already have CONFIG_BLACKFIN 2007-11-23 22:09:02 -05:00
smc911x.c SMC911X: Fix using of dereferenced skb after netif_rx 2007-12-04 14:53:43 -05:00
smc911x.h net: smc911x: shut up compiler warnings 2007-12-14 16:12:42 -05:00
smc9194.c
smc9194.h
smc-mca.c
smc-ultra32.c
smc-ultra.c
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net_ethtool.c
spider_net.c
spider_net.h
starfire_firmware.h
starfire_firmware.pl
starfire.c starfire VLAN fix 2007-12-14 15:26:04 -05:00
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c sundance fixes 2007-12-14 15:26:00 -05:00
sungem_phy.c
sungem_phy.h
sungem.c [SUNGEM]: Fix NAPI regression with reset work 2007-11-29 21:51:36 +11:00
sungem.h
sunhme.c [SUNHME]: VLAN support for sunhme 2007-11-15 15:38:45 -08:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti_fw.h
tehuti.c
tehuti.h
tg3.c [TG3]: Endianness bugfix. 2007-12-19 16:43:48 -08:00
tg3.h
tlan.c
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c [TUNTAP]: Fix wrong debug message. 2007-12-26 19:36:34 -08:00
typhoon-firmware.h
typhoon.c typhoon: trivial endianness annotations 2007-12-22 22:53:06 -05:00
typhoon.h typhoon: trivial endianness annotations 2007-12-22 22:53:06 -05:00
ucc_geth_ethtool.c
ucc_geth_mii.c
ucc_geth_mii.h ucc_geth: really fix section mismatch 2007-12-17 16:02:20 -05:00
ucc_geth.c ucc_geth: minor whitespace fix 2007-12-14 16:12:38 -05:00
ucc_geth.h
veth.c [VETH]: move veth.h to include/linux 2007-12-26 19:36:35 -08:00
via-rhine.c
via-velocity.c via-velocity: don't oops on MTU change (resend) 2007-12-01 16:35:51 -05:00
via-velocity.h
virtio_net.c virtio: fix net driver loop case where we fail to restart 2007-11-19 11:20:44 +11:00
wd.c
xen-netfront.c [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
yellowfin.c yellowfin: annotations and fixes (.24 fodder?) 2007-12-22 22:53:06 -05:00
znet.c
zorro8390.c