]> git.karo-electronics.de Git - karo-tx-linux.git/commit
e1000: fix Tx hangs by disabling 64-bit DMA
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Tue, 7 Sep 2010 21:01:12 +0000 (21:01 +0000)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Wed, 14 Mar 2012 14:57:48 +0000 (10:57 -0400)
commitbb341a46872f05d92385ab4558b4fa5ecfa7af4b
tree47fb203317d47f81ae334502c883da6d565078ca
parent83cb8b7cccfb62e91825feeb0a6eb13d970b3f4d
e1000: fix Tx hangs by disabling 64-bit DMA

commit e508be174ad36b0cf9b324cd04978c2b13c21502 upstream.

Several users report issues with 32-bit adapters when plugged
into PCI slots in machines with >= 4GB ram.  In particular AMD
systems with HyperTransport to PCI bridges seem to trigger the
issue, but it isn't limited to only them.

This issue is not easily reproducible here, yet still continues
to occur in the field.  For e1000 on PCI devices, just disable DMA
addresses over the 4GB boundary when in PCI (not PCI-X) mode, to
prevent the issue from continuing to pop up.  The performance
impact for this is negligible.

The code was refactored to move the init of the hw struct to its
own function. This allows the init to be called very early in
probe, which then allows using hw-> members for this fix.

A slight refactor to the DMA mask code was done for minor
correctness based on the instructions in DMA-API-HOWTO.

[PG: 34 has pci prefix, e.g pci_set_dma_mask vs. dma_set_mask]

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
drivers/net/e1000/e1000_main.c