IP100A: Solve host error problem in low performance embedded system when continune down and up.
Subsystems (2)
PATCH 4/4 IP100A: Solve host error problem in low performance embedded system when continune down and up.
From: Jesse Huang <[email protected]>
Change Logs:
- Solve host error problem in low performance embedded system when continune down and up.
---
sundance.c | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-)
a88c635933a981dd4fca87e5b8ca9426c5c98013
sundance.c +25 -5
@@ -831,7 +831,7 @@ #endifif (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_devicstruct 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,
Signature · 1 line
1.3.GIT
Quoted 6 lines · 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.
Quoted 6 lines
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.
Quoted 6 lines
a88c635933a981dd4fca87e5b8ca9426c5c98013sundance.c +0
-0
sundance.c static int netdev_close(struct net_devic · line 1654
Quoted 8 lines
sundance.c +5
-0@@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devicstruct 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)
Quoted 17 lines
sundance.c +7
-3+ 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 );
sundance.c static int netdev_close(struct net_devic · line 1691
Quoted 10 lines
sundance.c +10
-0+ } + +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
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: <[email protected]>; <[email protected]>; <[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.
Quoted 6 lines · 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.
Quoted 6 lines
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.
Quoted 6 lines
a88c635933a981dd4fca87e5b8ca9426c5c98013sundance.c +0
-0
sundance.c static int netdev_close(struct net_devic · line 1654
Quoted 8 lines
sundance.c +5
-0@@ -1647,6 +1647,14 @@ static int netdev_close(struct net_devicstruct 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)
Quoted 10 lines
sundance.c +3
-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);
sundance.c static int netdev_close(struct net_devic · line 1684
Quoted 10 lines
sundance.c +7
-3-/* 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);
sundance.c static int netdev_close(struct net_devic · line 1691
Quoted 7 lines
sundance.c +7
-0+ +for (i =2000 ; i >0 ; i--) + { +if ((ioread16 (ioaddr + ASICCtrl +2 ) &ResetBusy) ==0 ) +break ; +mdelay (1 ); + }
Same comment about indentation/whitespace.
---
~Randy