2/34: atm/iphase: replace sleep_on() with
Subsystems (2)
PATCH 1/1 2/34: atm/iphase: replace sleep_on() with
Hi,
Please consider applying.
Description: Use wait_event_timeout() instead of the deprecated sleep_on(). In the new code, the lock is released before sleeping and then grabbed after waking up; whereas before it was released/grabbed every iteration of the loop. Only one variable is necessary now, so ctimeout is removed. Patch is compile-tested.
Signed-off-by Nishanth Aravamudan <[email protected]>
drivers/atm/iphase.c +7 -12
@@ -53,6 +53,7 @@#include <linux/delay.h> #include <linux/uio.h> #include <linux/init.h> +#include <linux/wait.h> #include <asm/system.h> #include <asm/io.h> #include <asm/atomic.h>
@@ -2593,7 +2594,6 @@ static void ia_close(struct atm_vcc *vccstruct sk_buff *skb =NULL ;struct sk_buff_head tmp_tx_backlog, tmp_vcc_backlog;unsigned long closetime, flags; -int ctimeout; iadev =INPH_IA_DEV (vcc->dev); ia_vcc =INPH_IA_VCC (vcc);
@@ -2619,17 +2619,12 @@ static void ia_close(struct atm_vcc *vccwhile ((skb =skb_dequeue (&tmp_tx_backlog)))skb_queue_tail (&iadev->tx_backlog, skb); IF_EVENT(printk("IA TX Done decs_cnt = %d\n", ia_vcc->vc_desc_cnt);) - closetime = jiffies; - ctimeout =300000 / ia_vcc->pcr; -if (ctimeout ==0 ) - ctimeout =1 ; -while (ia_vcc->vc_desc_cnt >0 ){ -if ((jiffies - closetime) >= ctimeout) -break ; -spin_unlock_irqrestore (&iadev->tx_lock, flags); -sleep_on (&iadev->close_wait); -spin_lock_irqsave (&iadev->tx_lock, flags); - } + closetime = 300000 / ia_vcc->pcr; +if (closetime ==0 ) + closetime =1 ; +spin_unlock_irqrestore (&iadev->tx_lock, flags); +wait_event_timeout (iadev->close_wait, (ia_vcc->vc_desc_cnt <=0 ), closetime); +spin_lock_irqsave (&iadev->tx_lock, flags); iadev->close_pending--; iadev->testTable[vcc->vci]->lastTime =0 ; iadev->testTable[vcc->vci]->fract =0 ;
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors