linux/drivers/net/ethernet
Sathya Perla d0b9cec3e2 be2net: fix unconditionally returning IRQ_HANDLED in INTx
commit e49cc34f introduced an unconditional IRQ_HANDLED return in be_intx()
to workaround Lancer and BE2 HW issues. This is bad as it prevents the kernel
from detecting interrupt storms due to broken HW.

The BE2/Lancer HW issues are:
1) In Lancer, there is no means for the driver to detect if the interrupt
belonged to device, other than counting and notifying events.
2) In Lancer de-asserting INTx takes a while, causing the INTx irq handler
to be called multiple times till the de-assert happens.
3) In BE2, we see an occasional interrupt even when EQs are unarmed.

Issue (1) can cause the notified events to be orphaned, if NAPI was already
running.
This patch fixes this issue by scheduling NAPI only if it is not scheduled
already. Doing this also takes care of possible events_get() race that may be
caused due to issue (2) and (3). Also, IRQ_HANDLED is returned only the first
time zero events are detected.
(Thanks Ben H. for the feedback and suggestions.)

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-01-12 15:33:01 -08:00
..
3com drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
8390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
adaptec drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
adi bfin_mac: Restore hardware time-stamping dependency on BF518 2013-01-10 14:27:22 -08:00
aeroflex aeroflex: remove __dev* attributes 2012-12-03 11:16:41 -08:00
alteon drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
amd drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
apple net/apple: remove __dev* attributes 2012-12-03 11:16:54 -08:00
atheros drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
broadcom bnx2x: Allow management traffic after boot from SAN 2013-01-10 14:28:26 -08:00
brocade bna: Driver Version Updated to 3.1.2.1 2012-12-11 18:25:53 -05:00
cadence net/cadence: remove __dev* attributes 2012-12-03 11:16:54 -08:00
calxeda net: calxedaxgmac: ip align receive buffers 2012-11-07 03:51:14 -05:00
chelsio RDMA/cxgb4: Fix bug for active and passive LE hash collision path 2012-12-19 23:03:12 -08:00
cirrus cs89x0 : packet reception not working 2012-08-31 15:48:56 -04:00
cisco drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
davicom net: dm9000: use io{read,write}*_rep accessors 2012-12-10 15:46:27 -05:00
dec drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
dlink Networking: Remove __dev* markings from the networking drivers 2012-12-03 15:35:28 -05:00
emulex be2net: fix unconditionally returning IRQ_HANDLED in INTx 2013-01-12 15:33:01 -08:00
faraday
freescale net: fec: forbid FEC_PTP on SoCs that do not support 2012-12-18 16:26:18 -08:00
fujitsu
hp drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
i825xx i825xx: remove __dev* attributes 2012-12-03 11:16:12 -08:00
ibm Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-12-18 09:58:09 -08:00
icplus drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
intel Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
marvell Drivers: network: more __dev* removal 2012-12-22 00:03:00 -08:00
mellanox mlx4_core: Allow choosing flow steering mode 2012-12-19 11:47:22 -08:00
micrel ksz884x: fix receive polling race condition 2012-12-19 12:44:45 -08:00
microchip enc28j60: remove __dev* attributes 2012-12-03 11:16:44 -08:00
myricom Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
natsemi drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
neterion drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
nuvoton nuvoton: remove __dev* attributes 2012-12-03 11:16:44 -08:00
nvidia forcedeth: Fix WARNINGS that result when DMA mapping is not checked 2012-12-28 15:30:28 -08:00
nxp lpc_eth: remove __dev* attributes 2012-12-03 11:16:44 -08:00
octeon net/octeon_mgmt: remove __dev* attributes 2012-12-03 11:16:45 -08:00
oki-semi pch_gbe, ptp_pch: Fix the dependency direction between these drivers 2012-11-17 22:11:45 -05:00
packetengines drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
pasemi net/pasemi: remove __dev* attributes 2012-12-03 11:16:55 -08:00
qlogic qlge: remove NETIF_F_TSO6 flag 2013-01-11 15:55:10 -08:00
racal
rdc drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
realtek 8139cp: Prevent dev_close/cp_interrupt race on MTU change 2012-12-19 14:30:59 -08:00
renesas net: sh_eth: Fix a typo - replace regist with register. 2012-11-03 15:37:35 -04:00
seeq seeq: remove __dev* attributes 2012-12-03 11:16:46 -08:00
sfc drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
sgi drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
silan drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
sis drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
smsc drivers/net: Use of_match_ptr() macro in smsc911x.c 2012-12-19 12:50:07 -08:00
stmicro stmmac: fix platform driver unregistering 2012-12-14 13:14:07 -05:00
sun drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
tehuti tehuti: remove __dev* attributes 2012-12-03 11:16:53 -08:00
ti cpts: fix a run time warn_on. 2012-12-26 14:15:09 -08:00
tile tilegx: request_irq with a non-null device name 2012-11-16 01:40:41 -05:00
toshiba drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
tundra drivers/net/ethernet/tundra/tsi108_eth.c: delete double assignment 2012-08-30 13:08:37 -04:00
via drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
wiznet net/wiznet: remove __dev* attributes 2012-12-03 11:16:56 -08:00
xilinx net: ethernet: xilinx: Do not use NO_IRQ in axienet 2013-01-10 14:28:26 -08:00
xircom
xscale ixp4xx_eth: remove __dev* attributes 2012-12-03 11:16:53 -08:00
dnet.c net/ethernet: remove __dev* attributes 2012-12-03 11:16:56 -08:00
dnet.h
ethoc.c net/ethernet: remove __dev* attributes 2012-12-03 11:16:56 -08:00
fealnx.c drivers/net: fix up function prototypes after __dev* removals 2012-12-07 14:22:22 -05:00
jme.c jme: remove __dev* attributes 2012-12-03 11:16:54 -08:00
jme.h
Kconfig net: mipsnet: Remove the MIPSsim Ethernet driver. 2012-09-24 16:47:23 -04:00
korina.c
lantiq_etop.c net/ethernet: remove __dev* attributes 2012-12-03 11:16:56 -08:00
Makefile net: mipsnet: Remove the MIPSsim Ethernet driver. 2012-09-24 16:47:23 -04:00
netx-eth.c ARM: netx: move platform_data definitions 2012-09-14 11:17:36 +02:00
s6gmac.c net/ethernet: remove __dev* attributes 2012-12-03 11:16:56 -08:00