On Mon, 27 Feb 2006, Olaf Hering wrote:
commit 24180333206519e6b0c4633eab81e773b4527cac
> author Jesse Brandeburg <[EMAIL PROTECTED]> Wed, 18 Jan 2006 07:01:06 -0800
> committer Jeff Garzik <[EMAIL PROTECTED]> Wed, 18 Jan 2006 05:15:15 -0500
>
> [PATCH] e100: Fix TX hang and RMCP Ping issue (due to a microcode loading
issue)
>
> e100: Fix TX hang and RMCP Ping issue (due to a microcode loading issue)
>
> Set the end of list bit to cause the hardware's transmit state machine to
> work correctly and not prevent management (BMC) traffic.
Olaf, please try this patch...
--- linux-2.6.16-rc5.orig/drivers/net/e100.c 2006-02-26
21:09:35.000000000 -0800
+++ linux-2.6.16-rc5/drivers/net/e100.c 2006-02-27
17:03:34.000000000 -0800
@@ -2154,6 +2154,9 @@ static int e100_loopback_test(struct nic
msleep(10);
+ pci_dma_sync>
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
> @@ -1388,7 +1422,7 @@ static int e100_hw_init(struct nic *nic)
> return err;
> if((err = e100_exec_cmd(nic, ruc_load_base, 0)))
> return err;
> - if((err = e100_exec_cb(nic, NULL, e100_load_ucode)))
> + if ((err = e100_exec_cb_wait(nic, NULL, e100_setup_ucode)))
> return err;
> if((err = e100_exec_cb(nic, NULL, e100_configure)))
> return err;
this commit for 2.6.16-rc2 causes ethtool -t eth0 trouble on an IBM
pSeries 630. It triggers EEH errors, and also a bug in the eehd, but
thats unrelated. It shouldnt trigger the EEH errors in the first place.
Any ideas how to fix it? If I change the e100_exec_cb_wait() call back
to e100_exec_cb(), no errors are triggered. But the ethtool -t test
fails.
http://ozlabs.org/pipermail/linuxppc-dev/2006-February/021308.html
Olaf I reproduced this problem on a 630 and this patch fixes it for me,
please verify. Due to the new load ucode command the cb list must be
allocated before calling e100_init_hw. Ignore the crazy paths on the
files. (patch -p1 should take care of)
--- linux-2.6.16-rc5/drivers/net/e100.c 2006-02-26 21:09:35.000000000 -0800
+++ linux-2.6.15.1/drivers/net/e100.c 2006-02-27 17:03:34.000000000 -0800
@@ -2154,6 +2154,9 @@ static int e100_loopback_test(struct nic
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,9 @@ static int e100_loopback_test(struct nic
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_alloc_cbs(nic);
+ e100_hw_init(nic);
err_clean_rx:
e100_rx_clean_list(nic);
return err;
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html