summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Brandeburg2006-03-15 19:55:24 +0100
committerJesse Brandeburg2006-03-15 19:55:24 +0100
commitaa49cdd93be6328113f0c146fc72be173d578d27 (patch)
tree38346543e8567d031749f220bc9ba76d8352361b
parent[PATCH] fs/namespace.c:dup_namespace(): fix a use after free (diff)
downloadkernel-qcow2-linux-aa49cdd93be6328113f0c146fc72be173d578d27.tar.gz
kernel-qcow2-linux-aa49cdd93be6328113f0c146fc72be173d578d27.tar.xz
kernel-qcow2-linux-aa49cdd93be6328113f0c146fc72be173d578d27.zip
e100: fix eeh on pseries during ethtool -t
Olaf Hering reported a problem on pseries with e100 where ethtool -t would cause a bus error, and the e100 driver would stop working. Due to the new load ucode command the cb list must be allocated before calling e100_init_hw, so remove the call and just let e100_up take care of it. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
-rw-r--r--drivers/net/e100.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 24253c807e55..f57a85feda3d 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2154,6 +2154,9 @@ static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode)
msleep(10);
+ pci_dma_sync_single_for_cpu(nic->pdev, nic->rx_to_clean->dma_addr,
+ RFD_BUF_LEN, PCI_DMA_FROMDEVICE);
+
if(memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd),
skb->data, ETH_DATA_LEN))
err = -EAGAIN;
@@ -2161,8 +2164,8 @@ static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode)
err_loopback_none:
mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, 0);
nic->loopback = lb_none;
- e100_hw_init(nic);
e100_clean_cbs(nic);
+ e100_hw_reset(nic);
err_clean_rx:
e100_rx_clean_list(nic);
return err;