IP100A correct init and close step
Subsystems (2)
PATCH 5/6 IP100A correct init and close step
From: Jesse Huang <[email protected]>
correct init and close step
Change Logs:
correct init and close step
---
drivers/net/sundance.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
b5e343a17f5d70d1cc9a4ba20d366bab355f64a6
drivers/net/sundance.c +9 -1
@@ -830,6 +830,11 @@ #endifiowrite8 (0x01 , ioaddr + DebugCtrl1);netif_start_queue (dev); +// 04/19/2005 Jesse fix for complete initial step +spin_lock (&np->lock); +reset_tx (dev); +spin_unlock (&np->lock); +iowrite16 (StatsEnable | RxEnable | TxEnable, ioaddr + MACCtrl1);if (netif_msg_ifup (np))
@@ -1654,7 +1659,10 @@ static int netdev_close(struct net_devic/* Disable interrupts by clearing the interrupt mask. */ iowrite16 (0x0000 , ioaddr + IntrEnable); - + +// 04/19/2005 Jesse fix for complete initial step +writew (0x500 , ioaddr + DMACtrl); +/* Stop the chip's Tx and Rx processes. */ iowrite16 (TxDisable | RxDisable | StatsDisable, ioaddr + MACCtrl1);
Signature · 1 line
1.3.GIT
Jeff Garzik
NAKQuoted 18 lines · Jesse Huang
From: Jesse Huang <[email protected]>
correct init and close step
Change Logs:
correct init and close step---
drivers/net/sundance.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
b5e343a17f5d70d1cc9a4ba20d366bab355f64a6drivers/net/sundance.c +0
-0
drivers/net/sundance.c #endif · line 837
Quoted 8 lines
drivers/net/sundance.c +5
-0@@ -830,6 +830,11 @@ #endifiowrite8 (0x01 , ioaddr + DebugCtrl1);netif_start_queue (dev); +// 04/19/2005 Jesse fix for complete initial step +spin_lock (&np->lock); +reset_tx (dev); +spin_unlock (&np->lock); +
NAK -- ineffective locking.
If you need locking here, you must use spin_lock_irqsave()
drivers/net/sundance.c static int netdev_close(struct net_devic · line 1664
Quoted 8 lines
drivers/net/sundance.c +3
-1@@ -1654,7 +1659,10 @@ static int netdev_close(struct net_devic/* Disable interrupts by clearing the interrupt mask. */ iowrite16 (0x0000 , ioaddr + IntrEnable); - + +// 04/19/2005 Jesse fix for complete initial step +writew (0x500 , ioaddr + DMACtrl);
NAK:
1) date and author information is already present in the kernel changelog. It should not be present in the source code.
2) The comment (or patch description) fails to describe -why- this change is needed. It only described what is being changes, which is already obvious from reading the source code.
Jesse Huang
NAKHi Jeff:
(1)Should I change to :spin_lock_irqsave(&np->lock,flags);reset_tx(dev);spin_lock_irqrestore(&np->lock,flags);
(2)I will remove date and author information out of source code comment.
----- Original Message -----
From: "Jeff Garzik" <[email protected]>
To: "Jesse Huang" <[email protected]>
Cc: <[email protected]>; <[email protected]>; <[email protected]>
Sent: Thursday, August 17, 2006 10:51 PM
Subject: Re: [PATCH 5/6] IP100A correct init and close step
Quoted 18 lines · Jesse Huang
From: Jesse Huang <[email protected]>
correct init and close step
Change Logs:
correct init and close step---
drivers/net/sundance.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
b5e343a17f5d70d1cc9a4ba20d366bab355f64a6drivers/net/sundance.c +0
-0
drivers/net/sundance.c #endif · line 837
Quoted 8 lines
drivers/net/sundance.c +5
-0@@ -830,6 +830,11 @@ #endifiowrite8 (0x01 , ioaddr + DebugCtrl1);netif_start_queue (dev); +// 04/19/2005 Jesse fix for complete initial step +spin_lock (&np->lock); +reset_tx (dev); +spin_unlock (&np->lock); +
NAK -- ineffective locking.
If you need locking here, you must use spin_lock_irqsave()
drivers/net/sundance.c static int netdev_close(struct net_devic · line 1664
Quoted 8 lines
drivers/net/sundance.c +3
-1@@ -1654,7 +1659,10 @@ static int netdev_close(struct net_devic/* Disable interrupts by clearing the interrupt mask. */ iowrite16 (0x0000 , ioaddr + IntrEnable); - + +// 04/19/2005 Jesse fix for complete initial step +writew (0x500 , ioaddr + DMACtrl);
NAK:
1) date and author information is already present in the kernel changelog. It should not be present in the source code.
2) The comment (or patch description) fails to describe -why- this change is needed. It only described what is being changes, which is already obvious from reading the source code.
Quoted 7 lines · Jesse Huang
Hi Jeff:
(1)Should I change to :spin_lock_irqsave(&np->lock,flags);reset_tx(dev);spin_lock_irqrestore(&np->lock,flags);(2)I will remove date and author information out of source code comment.
Correct.
Also:
(3) Use iowrite16(), not writew(). I just noticed this bug. iowrite16() will work for both MMIO and IO cycles, writew() only works for MMIO.
(4) We need a description of why this change is needed. What does writing 0x500 to DMACtrl actually do? Why do we need to do this?
Jeff
Hi Jeff:
(3)Yes, This is a bug, I will correct it. Thanks.
(4)This will halt TxDMA and RxDMA, after that will let reseting safely. Should I add description in source code or in change log?
Thanks!
Jesse
----- Original Message -----
From: "Jeff Garzik" <[email protected]>
To: "Jesse Huang" <[email protected]>
Cc: <[email protected]>; <[email protected]>; <[email protected]>
Sent: Friday, August 18, 2006 7:12 PM
Subject: Re: [PATCH 5/6] IP100A correct init and close step
Quoted 7 lines · Jesse Huang
Hi Jeff:
(1)Should I change to :spin_lock_irqsave(&np->lock,flags);reset_tx(dev);spin_lock_irqrestore(&np->lock,flags);(2)I will remove date and author information out of source code comment.
Correct.
Also:
(3) Use iowrite16(), not writew(). I just noticed this bug. iowrite16() will work for both MMIO and IO cycles, writew() only works for MMIO.
(4) We need a description of why this change is needed. What does writing 0x500 to DMACtrl actually do? Why do we need to do this?
Jeff