diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2006-03-15 13:55:24 -0500 |
---|---|---|
committer | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2006-03-15 13:55:24 -0500 |
commit | aa49cdd93be6328113f0c146fc72be173d578d27 (patch) | |
tree | 38346543e8567d031749f220bc9ba76d8352361b /drivers/net/e100.c | |
parent | f13b83580acef03a36c785dccc534ccdd7e43084 (diff) |
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>
Diffstat (limited to 'drivers/net/e100.c')
-rw-r--r-- | drivers/net/e100.c | 5 |
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) | |||
2154 | 2154 | ||
2155 | msleep(10); | 2155 | msleep(10); |
2156 | 2156 | ||
2157 | pci_dma_sync_single_for_cpu(nic->pdev, nic->rx_to_clean->dma_addr, | ||
2158 | RFD_BUF_LEN, PCI_DMA_FROMDEVICE); | ||
2159 | |||
2157 | if(memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd), | 2160 | if(memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd), |
2158 | skb->data, ETH_DATA_LEN)) | 2161 | skb->data, ETH_DATA_LEN)) |
2159 | err = -EAGAIN; | 2162 | err = -EAGAIN; |
@@ -2161,8 +2164,8 @@ static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode) | |||
2161 | err_loopback_none: | 2164 | err_loopback_none: |
2162 | mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, 0); | 2165 | mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, 0); |
2163 | nic->loopback = lb_none; | 2166 | nic->loopback = lb_none; |
2164 | e100_hw_init(nic); | ||
2165 | e100_clean_cbs(nic); | 2167 | e100_clean_cbs(nic); |
2168 | e100_hw_reset(nic); | ||
2166 | err_clean_rx: | 2169 | err_clean_rx: |
2167 | e100_rx_clean_list(nic); | 2170 | e100_rx_clean_list(nic); |
2168 | return err; | 2171 | return err; |