[PATCH 4/4] IP100A: Solve host error problem in low performance embedded system when continune down and up. 2006-08-24

2006-09-13 Thread Jesse Huang
From: Jesse Huang [EMAIL PROTECTED]

Change Logs:
   - Solve host error problem in low performance embedded 
 system when continune down and up.

Signed-off-by: Jesse Huang [EMAIL PROTECTED]

---

 drivers/net/sundance.c |   28 
 1 files changed, 24 insertions(+), 4 deletions(-)

b7c2fba3fb7179d18c8b1c4af316c8a14d8ec1b8
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 04ad4d8..a253924 100755
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -1076,7 +1076,7 @@ reset_tx (struct net_device *dev)
struct sk_buff *skb;
int i;
int irq = in_interrupt();
-   
+
/* Reset tx logic, TxListPtr will be cleaned */
iowrite16 (TxDisable, ioaddr + MACCtrl1);
iowrite16 (TxReset | DMAReset | FIFOReset | NetworkReset,
@@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devic
struct sk_buff *skb;
int i;
 
+   /* Wait and kill tasklet */
+   tasklet_kill(np-rx_tasklet);
+   tasklet_kill(np-tx_tasklet);
+   np-cur_tx = 0;
+   np-dirty_tx = 0;
+   np-cur_task = 0;
+   np-last_tx = 0;
+
netif_stop_queue(dev);
 
if (netif_msg_ifdown(np)) {
@@ -1667,9 +1675,20 @@ static int netdev_close(struct net_devic
/* Stop the chip's Tx and Rx processes. */
iowrite16(TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);
 
-   /* Wait and kill tasklet */
-   tasklet_kill(np-rx_tasklet);
-   tasklet_kill(np-tx_tasklet);
+   for (i = 2000; i  0; i--) {
+   if ((ioread32(ioaddr + DMACtrl) 0xC000) == 0)
+   break;
+   mdelay(1);
+   }
+
+   iowrite16(GlobalReset | DMAReset | FIFOReset | NetworkReset, ioaddr 
+ASICCtrl + 2);
+
+   for (i = 2000; i  0; i--)
+   {
+   if ((ioread16(ioaddr + ASICCtrl +2) ResetBusy) == 0)
+   break;
+   mdelay(1);
+   }
 
 #ifdef __i386__
if (netif_msg_hw(np)) {
@@ -1707,6 +1726,7 @@ #endif /* __i386__ debugging only */
}
}
for (i = 0; i  TX_RING_SIZE; i++) {
+   np-tx_ring[i].next_desc = 0;
skb = np-tx_skbuff[i];
if (skb) {
pci_unmap_single(np-pci_dev,
-- 
1.3.GIT



-
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


[PATCH 4/4] IP100A: Solve host error problem in low performance embedded system when continune down and up. 2006-08-24

2006-08-24 Thread Jesse Huang

From: Jesse Huang [EMAIL PROTECTED]

Change Logs:
   - Solve host error problem in low performance embedded 
 system when continune down and up.

Signed-off-by: Jesse Huang [EMAIL PROTECTED]

---

 drivers/net/sundance.c |   28 
 1 files changed, 24 insertions(+), 4 deletions(-)

b7c2fba3fb7179d18c8b1c4af316c8a14d8ec1b8
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 04ad4d8..a253924 100755
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -1076,7 +1076,7 @@ reset_tx (struct net_device *dev)
struct sk_buff *skb;
int i;
int irq = in_interrupt();
-   
+
/* Reset tx logic, TxListPtr will be cleaned */
iowrite16 (TxDisable, ioaddr + MACCtrl1);
iowrite16 (TxReset | DMAReset | FIFOReset | NetworkReset,
@@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devic
struct sk_buff *skb;
int i;
 
+   /* Wait and kill tasklet */
+   tasklet_kill(np-rx_tasklet);
+   tasklet_kill(np-tx_tasklet);
+   np-cur_tx = 0;
+   np-dirty_tx = 0;
+   np-cur_task = 0;
+   np-last_tx = 0;
+
netif_stop_queue(dev);
 
if (netif_msg_ifdown(np)) {
@@ -1667,9 +1675,20 @@ static int netdev_close(struct net_devic
/* Stop the chip's Tx and Rx processes. */
iowrite16(TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);
 
-   /* Wait and kill tasklet */
-   tasklet_kill(np-rx_tasklet);
-   tasklet_kill(np-tx_tasklet);
+   for (i = 2000; i  0; i--) {
+   if ((ioread32(ioaddr + DMACtrl) 0xC000) == 0)
+   break;
+   mdelay(1);
+   }
+
+   iowrite16(GlobalReset | DMAReset | FIFOReset | NetworkReset, ioaddr 
+ASICCtrl + 2);
+
+   for (i = 2000; i  0; i--)
+   {
+   if ((ioread16(ioaddr + ASICCtrl +2) ResetBusy) == 0)
+   break;
+   mdelay(1);
+   }
 
 #ifdef __i386__
if (netif_msg_hw(np)) {
@@ -1707,6 +1726,7 @@ #endif /* __i386__ debugging only */
}
}
for (i = 0; i  TX_RING_SIZE; i++) {
+   np-tx_ring[i].next_desc = 0;
skb = np-tx_skbuff[i];
if (skb) {
pci_unmap_single(np-pci_dev,
-- 
1.3.GIT



-
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


Re: [PATCH 4/4] IP100A: Solve host error problem in low performance embedded system when continune down and up.

2006-08-23 Thread Jesse Huang
Hi Randy:

Sorry for the file path. I will regenerate with path
a/drivers/net/sundance.c
and re-submit again.

Thanks for your help!

Best Regards,
Jesse Huang

- Original Message - 
From: Randy.Dunlap [EMAIL PROTECTED]
To: Jesse Huang [EMAIL PROTECTED]
Cc: linux-kernel@vger.kernel.org; netdev@vger.kernel.org;
[EMAIL PROTECTED]; [EMAIL PROTECTED]
Sent: Wednesday, August 23, 2006 12:05 AM
Subject: Re: [PATCH 4/4] IP100A: Solve host error problem in low performance
embedded system when continune down and up.


On Tue, 22 Aug 2006 14:31:32 -0400 Jesse Huang wrote:

 From: Jesse Huang [EMAIL PROTECTED]

 Change Logs:
- Solve host error problem in low performance embedded
  system when continune down and up.

 Signed-off-by: Jesse Huang [EMAIL PROTECTED]

 ---

  sundance.c |   30 +-
  1 files changed, 25 insertions(+), 5 deletions(-)

Full path/file names above and below, please.

 a88c635933a981dd4fca87e5b8ca9426c5c98013
 diff --git a/sundance.c b/sundance.c
 index 424aebd..de55e0f 100755
 --- a/sundance.c
 +++ b/sundance.c
 @@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devic
  struct sk_buff *skb;
  int i;

 + /* Wait and kill tasklet */
 + tasklet_kill(np-rx_tasklet);
 + tasklet_kill(np-tx_tasklet);
 +   np-cur_tx = 0;
 +   np-dirty_tx = 0;

Use same indentation/whitespace as surrounding code.
(tabs, not spaces)

 + np-cur_task = 0;
 + np-last_tx = 0;
 +
  netif_stop_queue(dev);

  if (netif_msg_ifdown(np)) {
 @@ -1667,9 +1675,20 @@ static int netdev_close(struct net_devic
  /* Stop the chip's Tx and Rx processes. */
  iowrite16(TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);

 - /* Wait and kill tasklet */
 - tasklet_kill(np-rx_tasklet);
 - tasklet_kill(np-tx_tasklet);
 +for (i = 2000; i  0; i--) {
 + if ((ioread32(ioaddr + DMACtrl) 0xC000) == 0)
 + break;
 + mdelay(1);
 +}
 +
 +iowrite16(GlobalReset | DMAReset | FIFOReset |NetworkReset, ioaddr
+ASICCtrl + 2);
 +
 +for (i = 2000; i  0; i--)
 +{
 + if ((ioread16(ioaddr + ASICCtrl +2) ResetBusy) == 0)
 + break;
 + mdelay(1);
 +}

Same comment about indentation/whitespace.

---
~Randy


-
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


[PATCH 4/4] IP100A: Solve host error problem in low performance embedded system when continune down and up.

2006-08-22 Thread Jesse Huang
From: Jesse Huang [EMAIL PROTECTED]

Change Logs:
   - Solve host error problem in low performance embedded 
 system when continune down and up.

Signed-off-by: Jesse Huang [EMAIL PROTECTED]

---

 sundance.c |   30 +-
 1 files changed, 25 insertions(+), 5 deletions(-)

a88c635933a981dd4fca87e5b8ca9426c5c98013
diff --git a/sundance.c b/sundance.c
index 424aebd..de55e0f 100755
--- a/sundance.c
+++ b/sundance.c
@@ -831,7 +831,7 @@ #endif
if (np-pci_rev_id = 0x14)
iowrite8(0x01, ioaddr + DebugCtrl1);
netif_start_queue(dev);
-   
+
spin_lock_irqsave(np-lock,flags);
reset_tx(dev);
spin_unlock_irqrestore(np-lock,flags);
@@ -1076,7 +1076,7 @@ reset_tx (struct net_device *dev)
struct sk_buff *skb;
int i;
int irq = in_interrupt();
-   
+
/* Reset tx logic, TxListPtr will be cleaned */
iowrite16 (TxDisable, ioaddr + MACCtrl1);
iowrite16 (TxReset | DMAReset | FIFOReset | NetworkReset,
@@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devic
struct sk_buff *skb;
int i;
 
+   /* Wait and kill tasklet */
+   tasklet_kill(np-rx_tasklet);
+   tasklet_kill(np-tx_tasklet);
+   np-cur_tx = 0;
+   np-dirty_tx = 0;
+   np-cur_task = 0;
+   np-last_tx = 0;
+
netif_stop_queue(dev);
 
if (netif_msg_ifdown(np)) {
@@ -1667,9 +1675,20 @@ static int netdev_close(struct net_devic
/* Stop the chip's Tx and Rx processes. */
iowrite16(TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);
 
-   /* Wait and kill tasklet */
-   tasklet_kill(np-rx_tasklet);
-   tasklet_kill(np-tx_tasklet);
+for (i = 2000; i  0; i--) {
+if ((ioread32(ioaddr + DMACtrl) 0xC000) == 0)
+   break;
+mdelay(1);
+}  
+
+iowrite16(GlobalReset | DMAReset | FIFOReset |NetworkReset, ioaddr 
+ASICCtrl + 2);
+
+for (i = 2000; i  0; i--)
+{
+if ((ioread16(ioaddr + ASICCtrl +2) ResetBusy) == 0)
+   break;
+mdelay(1);
+}
 
 #ifdef __i386__
if (netif_msg_hw(np)) {
@@ -1707,6 +1726,7 @@ #endif /* __i386__ debugging only */
}
}
for (i = 0; i  TX_RING_SIZE; i++) {
+   np-tx_ring[i].next_desc = 0;   
skb = np-tx_skbuff[i];
if (skb) {
pci_unmap_single(np-pci_dev,
-- 
1.3.GIT



-
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


Re: [PATCH 4/4] IP100A: Solve host error problem in low performance embedded system when continune down and up.

2006-08-22 Thread Randy.Dunlap
On Tue, 22 Aug 2006 14:31:32 -0400 Jesse Huang wrote:

 From: Jesse Huang [EMAIL PROTECTED]
 
 Change Logs:
- Solve host error problem in low performance embedded 
  system when continune down and up.
 
 Signed-off-by: Jesse Huang [EMAIL PROTECTED]
 
 ---
 
  sundance.c |   30 +-
  1 files changed, 25 insertions(+), 5 deletions(-)

Full path/file names above and below, please.

 a88c635933a981dd4fca87e5b8ca9426c5c98013
 diff --git a/sundance.c b/sundance.c
 index 424aebd..de55e0f 100755
 --- a/sundance.c
 +++ b/sundance.c
 @@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devic
   struct sk_buff *skb;
   int i;
  
 + /* Wait and kill tasklet */
 + tasklet_kill(np-rx_tasklet);
 + tasklet_kill(np-tx_tasklet);
 +   np-cur_tx = 0;
 +   np-dirty_tx = 0;

Use same indentation/whitespace as surrounding code.
(tabs, not spaces)

 + np-cur_task = 0;
 + np-last_tx = 0;
 +
   netif_stop_queue(dev);
  
   if (netif_msg_ifdown(np)) {
 @@ -1667,9 +1675,20 @@ static int netdev_close(struct net_devic
   /* Stop the chip's Tx and Rx processes. */
   iowrite16(TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);
  
 - /* Wait and kill tasklet */
 - tasklet_kill(np-rx_tasklet);
 - tasklet_kill(np-tx_tasklet);
 +for (i = 2000; i  0; i--) {
 +  if ((ioread32(ioaddr + DMACtrl) 0xC000) == 0)
 + break;
 +  mdelay(1);
 +}
 +
 +iowrite16(GlobalReset | DMAReset | FIFOReset |NetworkReset, ioaddr 
 +ASICCtrl + 2);
 +
 +for (i = 2000; i  0; i--)
 +{
 +  if ((ioread16(ioaddr + ASICCtrl +2) ResetBusy) == 0)
 + break;
 +  mdelay(1);
 +}

Same comment about indentation/whitespace.

---
~Randy
-
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