linux/drivers/net
David Woodhouse a9dbe40fc1 8139cp: set ring address after enabling C+ mode
This fixes (for me) a regression introduced by commit b01af457 ("8139cp:
set ring address before enabling receiver"). That commit configured the
descriptor ring addresses earlier in the initialisation sequence, in
order to avoid the possibility of triggering stray DMA before the
correct address had been set up.

Unfortunately, it seems that the hardware will scribble garbage into the
TxRingAddr registers when we enable "plus mode" Tx in the CpCmd
register. Observed on a Traverse Geos router board.

To deal with this, while not reintroducing the problem which led to the
original commit, we augment cp_start_hw() to write to the CpCmd register
*first*, then set the descriptor ring addresses, and then finally to
enable Rx and Tx in the original 8139 Cmd register. The datasheet
actually indicates that we should enable Tx/Rx in the Cmd register
*before* configuring the descriptor addresses, but that would appear to
re-introduce the problem that the offending commit b01af457 was trying
to solve. And this variant appears to work fine on real hardware.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Cc: stable@kernel.org [3.5+]
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-25 15:53:31 -05:00
..
appletalk net: Use PTR_RET rather than if(IS_ERR(.. [1] 2012-08-06 13:30:02 -07:00
arcnet
bonding bonding: Bonding driver does not consider the gso_max_size/gso_max_segs setting of slave devices. 2012-11-21 11:50:31 -05:00
caif caif: fix NULL pointer check 2012-07-24 13:54:16 -07:00
can can: grcan: Add device driver for GRCAN and GRHCAN cores 2012-11-15 20:47:26 +01:00
cris cris: fix eth_v10.c build error 2012-08-03 20:32:31 -07:00
dsa
ethernet 8139cp: set ring address after enabling C+ mode 2012-11-25 15:53:31 -05:00
fddi fddi: 64 bit bug in smt_add_para() 2012-09-01 22:44:13 -04:00
hamradio sections: fix section conflicts in drivers/net/hamradio 2012-10-06 03:04:43 +09:00
hippi
hyperv hyperv: Remove unnecessary comments in rndis_filter_receive_data() 2012-10-21 20:35:40 -04:00
ieee802154 workqueue: avoid using deprecated functions 2012-10-02 16:01:31 -07:00
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-11-25 12:49:17 -05:00
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-11-25 12:49:17 -05:00
plip
ppp ppp: make ppp_get_stats64 static 2012-11-01 12:38:31 -04:00
slip
team team: bcast: convert return value of team_dev_queue_xmit() to bool correctly 2012-11-21 11:55:07 -05:00
usb asix: use ramdom hw addr if the one read is not valid 2012-11-23 14:29:51 -05:00
vmxnet3 vmxnet3: fix indentation 2012-11-14 21:48:16 -05:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-11-25 12:49:17 -05:00
wimax wimax/i2400m: use is_zero_ether_addr() instead of memcmp() 2012-08-24 13:30:26 -04:00
wireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-11-25 12:49:17 -05:00
xen-netback xen: netback: handle compound page fragments on transmit. 2012-10-10 22:50:45 -04:00
dummy.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
eql.c
ifb.c
Kconfig vxlan: Depend on CONFIG_INET 2012-10-02 14:37:31 -04:00
LICENSE.SRC
loopback.c net: loopback: set default mtu to 64K 2012-09-24 16:23:53 -04:00
macvlan.c netlink: add attributes to fdb interface 2012-10-01 18:39:44 -04:00
macvtap.c macvtap: rcu_dereference outside read-lock section 2012-08-12 13:40:48 -07:00
Makefile vxlan: virtual extensible lan 2012-10-01 18:39:45 -04:00
mdio.c
mii.c
netconsole.c netconsole: add oops_only module option 2012-11-08 22:06:36 -05:00
rionet.c rapidio/rionet: rework to support multiple RIO master ports 2012-10-06 03:05:23 +09:00
sb1000.c
Space.c
sungem_phy.c
tun.c tun: change tun_get_iff() prototype. 2012-11-23 14:24:46 -05:00
veth.c veth: allow changing the mac address while interface is up 2012-11-01 12:26:10 -04:00
virtio_net.c virtio_net: use net_*_ratelimited() helpers 2012-11-09 17:05:28 -05:00
vxlan.c add DOVE extensions for VXLAN 2012-11-20 13:41:28 -05:00
xen-netfront.c xen/netfront: handle compound page fragments on transmit 2012-11-21 11:50:31 -05:00