alistair23-linux/drivers/net
David S. Miller e23a59e1ca niu: Fix readq implementation when architecture does not provide one.
This fixes a TX hang reported by Jesper Dangaard Brouer.

When an architecutre cannot provide a fully functional
64-bit atomic readq/writeq, the driver must implement
it's own.  This is because only the driver can say whether
doing something like using two 32-bit reads to implement
the full 64-bit read will actually work properly.

In particular one of the issues is whether the top 32-bits
or the bottom 32-bits of the 64-bit register should be read
first.  There could be side effects, and in fact that is
exactly the problem here.

The TX_CS register has counters in the upper 32-bits and
state bits in the lower 32-bits.  A read clears the state
bits.

We would read the counter half before the state bit half.
That first read would clear the state bits, and then the
driver thinks that no interrupts are pending because the
interrupt indication state bits are seen clear every time.

Fix this by reading the bottom half before the upper half.

Tested-by: Jesper Dangaard Brouer <jdb@comx.dk>

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-11-12 14:32:54 -08:00
..
appletalk net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
arcnet drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
arm at91_ether: request/free GPIO for PHY interrupt 2008-10-31 00:47:56 -04:00
atl1e drivers: remove duplicated #include 2008-11-04 08:18:19 -08:00
atlx atl1: fix vlan tag regression 2008-10-31 00:46:34 -04:00
bonding bonding: fix panic when taking bond interface down before removing module 2008-10-31 00:46:12 -04:00
can
chelsio
cris [CRIS] Move header files from include to arch/cris/include. 2008-10-29 17:29:44 +01:00
cxgb3 RDMA/cxgb3: deadlock in iw_cxgb3 can cause hang when configuring interface. 2008-11-11 03:52:10 -05:00
e1000 e1000: allow VLAN devices to use TSO and CSUM offload 2008-10-11 12:25:59 -07:00
e1000e e1000e: don't generate bad checksums for tcp packets with 0 csum 2008-10-09 14:28:58 -07:00
ehea ehea: Detect 16GB hugepages for firmware restriction 2008-10-27 14:49:55 -04:00
enic net: fix driver build errors due to missing net/ip6_checksum.h include 2008-10-13 18:41:01 -07:00
fs_enet fs_enet: fix polling 2008-11-03 15:23:02 -05:00
hamradio drivers/net: use nr_irqs 2008-10-16 16:52:05 +02:00
ibm_newemac ibm_newemac: Fix typo in flow control config option 2008-10-27 14:49:58 -04:00
igb igb: add IGB_DCA instead of selecting INTEL_IOATDMA 2008-10-22 06:54:07 -04:00
irda IRDA: remove double inclusion of module.h 2008-11-01 21:30:50 -07:00
ixgb ixgb: fix bug when freeing resources 2008-10-08 16:53:40 -07:00
ixgbe [netdrvr] myri10ge, ixgbe: remove broken select INTEL_IOATDMA 2008-10-16 05:09:31 -04:00
ixp2000
mlx4 mlx4_en: Start port error flow bug fix 2008-11-07 03:33:43 -05:00
myri10ge myri10ge: fix stop/go ordering even more 2008-11-11 03:49:53 -05:00
netxen netxen: enable msi-x for quad-gig boards 2008-09-24 18:59:01 -04:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-17 08:58:52 -07:00
phy NET: convert the phy_device file to use bus_find_device_by_name 2008-10-16 09:24:52 -07:00
qlge qlge: Fix MSI/legacy single interrupt bug. 2008-10-22 07:00:49 -04:00
sfc sfc: Correct address of gPXE boot configuration in EEPROM 2008-11-07 03:33:45 -05:00
skfp drivers/net/skfp/pmf.c: Use offsetof() macro 2008-09-24 18:48:56 -04:00
tokenring net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
tulip dmfe: check pci_alloc_consistent errors 2008-10-27 14:49:02 -04:00
usb [netdrvr] usb/hso: Cleanup rfkill error handling 2008-11-07 03:33:45 -05:00
wan net: delete excess kernel-doc notation 2008-10-30 23:54:35 -07:00
wireless iwl3945: fix deadlock on suspend 2008-11-06 16:37:13 -05:00
3c59x.c drivers/net: use nr_irqs 2008-10-16 16:52:05 +02:00
3c501.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
3c501.h
3c503.c
3c503.h
3c505.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
3c505.h
3c507.c
3c509.c el3_common_init() should be __devinit, not __init 2008-11-07 03:33:44 -05:00
3c515.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
3c523.c
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c 8139x: reduce message severity on driver overlap 2008-10-22 07:00:28 -04:00
8139too.c 8139x: reduce message severity on driver overlap 2008-10-22 07:00:28 -04:00
8390.c
8390.h
8390p.c
82596.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
acenic_firmware.h
amd8111e.c amd8111e: fix dma_free_coherent context 2008-10-31 00:47:43 -04:00
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c net/au1000_eth.c MDIO namespace fixes 2008-10-12 21:02:19 -07:00
au1000_eth.h phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
ax88796.c AX88796: ax_probe() fix irq assignment 2008-10-22 06:22:08 -04:00
b44.c
b44.h
bfin_mac.c net/bfin_mac.c MDIO namespace fixes 2008-10-12 21:15:17 -07:00
bfin_mac.h phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
bmac.c
bmac.h
bnx2.c bnx2: Update version to 1.8.1. 2008-10-09 12:27:06 -07:00
bnx2.h bnx2: Handle DMA mapping errors. 2008-10-09 12:26:41 -07:00
bnx2_fw.h bnx2: Update 5706/5708 firmware. 2008-10-09 12:22:38 -07:00
bnx2_fw2.h
bnx2x.h bnx2x: Accessing un-mapped page 2008-09-03 14:38:00 -07:00
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init.h bnx2x: PCI configuration bug on big-endian 2008-11-03 16:46:19 -08:00
bnx2x_init_values.h
bnx2x_link.c
bnx2x_link.h
bnx2x_main.c bnx2x: Version Update 2008-11-03 16:46:58 -08:00
bnx2x_reg.h
bsd_comp.c
cassini.c cassini: use request_firmware 2008-09-22 19:27:10 -07:00
cassini.h cassini: use request_firmware 2008-09-22 19:27:10 -07:00
cpmac.c phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
cs89x0.c Remove Andrew Morton's old email accounts 2008-10-16 11:21:32 -07:00
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c
dl2k.h
dm9000.c netdev: DM9000: remove BLACKFIN hacking in DM9000 netdev driver 2008-10-22 06:22:15 -04:00
dm9000.h
dummy.c
e100.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-01 06:12:56 -07:00
e2100.c
eepro.c
eepro100.c
eexpress.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
eexpress.h
enc28j60.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c netdev: uniquify the tx_timeout name 2008-10-08 17:09:54 -07:00
fec.c
fec.h
fec_mpc52xx.c [netdrvr] fec_mpc52xx: Implement polling, to make netconsole work. 2008-10-22 07:26:49 -04:00
fec_mpc52xx.h
fec_mpc52xx_phy.c powerpc/mpc5200: Refactor FEC mdio read/write routines 2008-10-15 11:10:00 -06:00
forcedeth.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-01 06:12:56 -07:00
gianfar.c gianfar: Don't reset TBI<->SerDes link if it's already up 2008-10-31 00:59:53 -04:00
gianfar.h
gianfar_ethtool.c
gianfar_mii.c gianfar: Fix race in TBI/SerDes configuration 2008-10-31 00:59:46 -04:00
gianfar_mii.h gianfar: Fix race in TBI/SerDes configuration 2008-10-31 00:59:46 -04:00
gianfar_sysfs.c
hamachi.c
hp-plus.c hpplus: fix build regression 2008-09-16 19:35:05 -07:00
hp.c
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
jme.c net: fix driver build errors due to missing net/ip6_checksum.h include 2008-10-13 18:41:01 -07:00
jme.h jme: Advances version number 2008-10-08 19:51:33 -07:00
Kconfig net: kconfig cleanup 2008-11-03 15:23:12 -05:00
korina.c
lance.c
lasi_82596.c
lib8390.c lib8390: Fix locking in ei_poll (poll controller) 2008-10-08 16:56:48 -07:00
lib82596.c
LICENSE.SRC
lne390.c
loopback.c net: Really remove all of LOOPBACK_TSO code. 2008-10-31 00:00:33 -07:00
lp486e.c
mac89x0.c
mac8390.c
macb.c phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
macb.h phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
mace.c
mace.h
macmace.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
macsonic.c
macvlan.c
Makefile xtensa: Add support for the Sonic Ethernet device for the XT2000 board. 2008-10-21 07:58:06 -07:00
meth.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
meth.h
mii.c
mipsnet.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
mv643xx_eth.c mv643xx_eth: fix SMI bus access timeouts 2008-11-03 15:23:15 -05:00
mvme147.c
myri_code.h
myri_sbus.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
myri_sbus.h
natsemi.c netdev: uniquify the tx_timeout name 2008-10-08 17:09:54 -07:00
ne-h8300.c
ne.c ne.c: fix rmmod, platform driver improvements 2008-09-24 20:49:00 -04:00
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c niu: Fix readq implementation when architecture does not provide one. 2008-11-12 14:32:54 -08:00
niu.h
ns83820.c
pasemi_mac.c
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
pcnet32.c
plip.c
ppp_async.c
ppp_deflate.c
ppp_generic.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2008-10-16 12:40:26 -07:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c pppoe: Fix socket leak. 2008-10-30 23:35:02 -07:00
pppol2tp.c net: Remove __skb_insert() calls outside of skbuff internals. 2008-09-21 21:28:51 -07:00
pppox.c remove CONFIG_KMOD from drivers 2008-10-17 02:38:35 +11:00
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
qla3xxx.c
qla3xxx.h
r6040.c r6040: fix wrong assignment in r6040_free_txbufs 2008-09-24 20:48:08 -04:00
r8169.c r8169: revert "read MAC address from EEPROM on init" 2008-10-26 09:35:05 -07:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
s2io.h s2io: Fix enabling VLAN tag stripping at driver initialization 2008-09-24 18:49:04 -04:00
sb1000.c
sb1250-mac.c phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
sc92031.c
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-20 11:17:52 +09:00
sh_eth.h
sis190.c sis190: add identifier for Atheros AR8021 PHY 2008-10-22 07:00:34 -04:00
sis900.c
sis900.h
skge.c skge: Fix skge_set_ring_param() losing error return 2008-10-08 16:02:40 -07:00
skge.h
sky2.c sky2: Fix WOL regression 2008-10-12 20:59:48 -07:00
sky2.h
slhc.c
slip.c
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c SMC91x: Fix compilation on some platforms. 2008-11-03 00:19:31 -08:00
smc91x.h Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-10-11 10:09:45 -07:00
smc911x.c [netdrvr] smc911x: fix for driver resume (and compilation warning) 2008-11-11 03:53:15 -05:00
smc911x.h SMC911x: unbreak PXA builds 2008-10-22 06:22:13 -04:00
smc9194.c
smc9194.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c
starfire_firmware.h
starfire_firmware.pl
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
sunbmac.h
sundance.c sundance: set carrier status on link change events 2008-09-24 18:59:01 -04:00
sungem.c
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c net/tc35815.c: fix compilation 2008-10-12 21:01:53 -07:00
tehuti.c
tehuti.h drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
tehuti_fw.h
tg3.c phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
tg3.h phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
tlan.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
tlan.h
tsi108_eth.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
tsi108_eth.h
tun.c saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
typhoon-firmware.h
typhoon.c
typhoon.h
ucc_geth.c drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
ucc_geth.h
ucc_geth_ethtool.c drivers: remove duplicated #include 2008-11-04 08:18:19 -08:00
ucc_geth_mii.c phylib: move to dynamic allocation of struct mii_bus 2008-10-08 16:29:57 -07:00
ucc_geth_mii.h
veth.c
via-rhine.c via-rhine: changed to use netdev_alloc_skb() from dev_alloc_skb 2008-09-03 10:24:04 -04:00
via-velocity.c via-velocity: use driver string instead of dev->name before register_netdev() 2008-10-27 15:12:02 -04:00
via-velocity.h drivers/net: replace __FUNCTION__ with __func__ 2008-09-24 18:59:00 -04:00
virtio_net.c
wd.c
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-17 08:58:52 -07:00
xtsonic.c xtensa: Add support for the Sonic Ethernet device for the XT2000 board. 2008-10-21 07:58:06 -07:00
yellowfin.c
znet.c
zorro8390.c