netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 16/26] net/sb1000: replace nicedelay() with ssleep()
@ 2005-03-06 10:33 domen
  2005-03-09 20:23 ` Jeff Garzik
  0 siblings, 1 reply; 3+ messages in thread
From: domen @ 2005-03-06 10:33 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, domen, nacc



Use ssleep() instead of nicedelay()
to guarantee the task delays as expected. Remove the prototype and
definition of nicedelay(). This is a very weird function, because it is
called to sleep in terms of usecs, but always sleeps for 1 second,
completely ignoring the parameter. I have gone ahead and followed suit,
just sleeping for a second in all cases, but maybe someone with the
hardware could tell me if perhaps the paramter *should* matter. Additionally,
nicedelay() is called in TASK_INTERRUPTIBLE state, but doesn't deal with signals
in case these longer delays do not complete, so I believe ssleep() is more
appropriate.

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Domen Puncer <domen@coderock.org>
---


 kj-domen/drivers/net/sb1000.c |   14 +++-----------
 1 files changed, 3 insertions(+), 11 deletions(-)

diff -puN drivers/net/sb1000.c~ssleep-drivers_net_sb1000 drivers/net/sb1000.c
--- kj/drivers/net/sb1000.c~ssleep-drivers_net_sb1000	2005-03-05 16:11:16.000000000 +0100
+++ kj-domen/drivers/net/sb1000.c	2005-03-05 16:11:16.000000000 +0100
@@ -90,7 +90,6 @@ static int sb1000_close(struct net_devic
 
 
 /* SB1000 hardware routines to be used during open/configuration phases */
-static inline void nicedelay(unsigned long usecs);
 static inline int card_wait_for_busy_clear(const int ioaddr[],
 	const char* name);
 static inline int card_wait_for_ready(const int ioaddr[], const char* name,
@@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver =
 
 const int TimeOutJiffies = (875 * HZ) / 100;
 
-static inline void nicedelay(unsigned long usecs)
-{
-	current->state = TASK_INTERRUPTIBLE;
-	schedule_timeout(HZ);
-	return;
-}
-
 /* Card Wait For Busy Clear (cannot be used during an interrupt) */
 static inline int
 card_wait_for_busy_clear(const int ioaddr[], const char* name)
@@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c
 	udelay(1000);
 	outb(0x0, port);
 	inb(port);
-	nicedelay(60000);
+	ssleep(1);
 	outb(0x4, port);
 	inb(port);
 	udelay(1000);
@@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons
 	const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
 	const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
 
-	nicedelay(50000);
+	ssleep(1);
 	if ((status = card_send_command(ioaddr, name, Command0, st)))
 		return status;
 	if ((status = card_send_command(ioaddr, name, Command1, st)))
@@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
 	/* initialize sb1000 */
 	if ((status = sb1000_reset(ioaddr, name)))
 		return status;
-	nicedelay(200000);
+	ssleep(1);
 	if ((status = sb1000_check_CRC(ioaddr, name)))
 		return status;
 
_

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch 16/26] net/sb1000: replace nicedelay() with ssleep()
  2005-03-06 10:33 [patch 16/26] net/sb1000: replace nicedelay() with ssleep() domen
@ 2005-03-09 20:23 ` Jeff Garzik
  2005-03-09 21:19   ` Nishanth Aravamudan
  0 siblings, 1 reply; 3+ messages in thread
From: Jeff Garzik @ 2005-03-09 20:23 UTC (permalink / raw)
  To: domen; +Cc: netdev, nacc

domen@coderock.org wrote:
> Use ssleep() instead of nicedelay()
> to guarantee the task delays as expected. Remove the prototype and
> definition of nicedelay(). This is a very weird function, because it is
> called to sleep in terms of usecs, but always sleeps for 1 second,
> completely ignoring the parameter. I have gone ahead and followed suit,
> just sleeping for a second in all cases, but maybe someone with the
> hardware could tell me if perhaps the paramter *should* matter. Additionally,
> nicedelay() is called in TASK_INTERRUPTIBLE state, but doesn't deal with signals
> in case these longer delays do not complete, so I believe ssleep() is more
> appropriate.
> 
> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> Signed-off-by: Domen Puncer <domen@coderock.org>
> ---
> 
> 
>  kj-domen/drivers/net/sb1000.c |   14 +++-----------
>  1 files changed, 3 insertions(+), 11 deletions(-)
> 
> diff -puN drivers/net/sb1000.c~ssleep-drivers_net_sb1000 drivers/net/sb1000.c
> --- kj/drivers/net/sb1000.c~ssleep-drivers_net_sb1000	2005-03-05 16:11:16.000000000 +0100
> +++ kj-domen/drivers/net/sb1000.c	2005-03-05 16:11:16.000000000 +0100
> @@ -90,7 +90,6 @@ static int sb1000_close(struct net_devic
>  
>  
>  /* SB1000 hardware routines to be used during open/configuration phases */
> -static inline void nicedelay(unsigned long usecs);
>  static inline int card_wait_for_busy_clear(const int ioaddr[],
>  	const char* name);
>  static inline int card_wait_for_ready(const int ioaddr[], const char* name,
> @@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver =
>  
>  const int TimeOutJiffies = (875 * HZ) / 100;
>  
> -static inline void nicedelay(unsigned long usecs)
> -{
> -	current->state = TASK_INTERRUPTIBLE;
> -	schedule_timeout(HZ);
> -	return;
> -}
> -
>  /* Card Wait For Busy Clear (cannot be used during an interrupt) */
>  static inline int
>  card_wait_for_busy_clear(const int ioaddr[], const char* name)
> @@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c
>  	udelay(1000);
>  	outb(0x0, port);
>  	inb(port);
> -	nicedelay(60000);
> +	ssleep(1);
>  	outb(0x4, port);
>  	inb(port);
>  	udelay(1000);
> @@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons
>  	const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
>  	const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
>  
> -	nicedelay(50000);
> +	ssleep(1);
>  	if ((status = card_send_command(ioaddr, name, Command0, st)))
>  		return status;
>  	if ((status = card_send_command(ioaddr, name, Command1, st)))
> @@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
>  	/* initialize sb1000 */
>  	if ((status = sb1000_reset(ioaddr, name)))
>  		return status;
> -	nicedelay(200000);
> +	ssleep(1);

obviously incorrect, as you converted 60000, 50000, and 200000 usecs all 
into "1 second".

	Jeff

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch 16/26] net/sb1000: replace nicedelay() with ssleep()
  2005-03-09 20:23 ` Jeff Garzik
@ 2005-03-09 21:19   ` Nishanth Aravamudan
  0 siblings, 0 replies; 3+ messages in thread
From: Nishanth Aravamudan @ 2005-03-09 21:19 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: domen, netdev

On Wed, Mar 09, 2005 at 03:23:50PM -0500, Jeff Garzik wrote:
> domen@coderock.org wrote:
> >Use ssleep() instead of nicedelay()
> >to guarantee the task delays as expected. Remove the prototype and
> >definition of nicedelay(). This is a very weird function, because it is
> >called to sleep in terms of usecs, but always sleeps for 1 second,
> >completely ignoring the parameter. I have gone ahead and followed suit,
> >just sleeping for a second in all cases, but maybe someone with the
> >hardware could tell me if perhaps the paramter *should* matter. 
> >Additionally,
> >nicedelay() is called in TASK_INTERRUPTIBLE state, but doesn't deal with 
> >signals
> >in case these longer delays do not complete, so I believe ssleep() is more
> >appropriate.
> >
> >Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> >Signed-off-by: Domen Puncer <domen@coderock.org>
> >---
> >
> >
> > kj-domen/drivers/net/sb1000.c |   14 +++-----------
> > 1 files changed, 3 insertions(+), 11 deletions(-)
> >
> >diff -puN drivers/net/sb1000.c~ssleep-drivers_net_sb1000 
> >drivers/net/sb1000.c
> >--- kj/drivers/net/sb1000.c~ssleep-drivers_net_sb1000	2005-03-05 
> >16:11:16.000000000 +0100
> >+++ kj-domen/drivers/net/sb1000.c	2005-03-05 16:11:16.000000000 +0100
> >@@ -90,7 +90,6 @@ static int sb1000_close(struct net_devic
> > 
> > 
> > /* SB1000 hardware routines to be used during open/configuration phases */
> >-static inline void nicedelay(unsigned long usecs);
> > static inline int card_wait_for_busy_clear(const int ioaddr[],
> > 	const char* name);
> > static inline int card_wait_for_ready(const int ioaddr[], const char* 
> > name,
> >@@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver =
> > 
> > const int TimeOutJiffies = (875 * HZ) / 100;
> > 
> >-static inline void nicedelay(unsigned long usecs)
> >-{
> >-	current->state = TASK_INTERRUPTIBLE;
> >-	schedule_timeout(HZ);
> >-	return;
> >-}
> >-
> > /* Card Wait For Busy Clear (cannot be used during an interrupt) */
> > static inline int
> > card_wait_for_busy_clear(const int ioaddr[], const char* name)
> >@@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c
> > 	udelay(1000);
> > 	outb(0x0, port);
> > 	inb(port);
> >-	nicedelay(60000);
> >+	ssleep(1);
> > 	outb(0x4, port);
> > 	inb(port);
> > 	udelay(1000);
> >@@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons
> > 	const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 
> > 	0x00};
> > 	const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 
> > 	0x00};
> > 
> >-	nicedelay(50000);
> >+	ssleep(1);
> > 	if ((status = card_send_command(ioaddr, name, Command0, st)))
> > 		return status;
> > 	if ((status = card_send_command(ioaddr, name, Command1, st)))
> >@@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
> > 	/* initialize sb1000 */
> > 	if ((status = sb1000_reset(ioaddr, name)))
> > 		return status;
> >-	nicedelay(200000);
> >+	ssleep(1);
> 
> obviously incorrect, as you converted 60000, 50000, and 200000 usecs all 
> into "1 second".

Except that nicdelay() blatantly ignored the parameter. I asked several
times about this function and got no response. nicedelay() requests a
second delay currently, so I used ssleep().

Thanks,
Nish

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-03-09 21:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-06 10:33 [patch 16/26] net/sb1000: replace nicedelay() with ssleep() domen
2005-03-09 20:23 ` Jeff Garzik
2005-03-09 21:19   ` Nishanth Aravamudan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).