From bzolnier@gmail.com Mon Aug 17 14:12:56 2009 From: Bartlomiej Zolnierkiewicz Date: Sun, 16 Aug 2009 21:30:19 +0200 Subject: Staging: rt3070: kill TimerQThr thread first in RT28xxThreadTerminate() To: "Greg Kroah-Hartman" Cc: devel@driverdev.osuosl.org, Bartlomiej Zolnierkiewicz , linux-kernel@vger.kernel.org Message-ID: <20090816193019.3789.5319.sendpatchset@localhost.localdomain> From: Bartlomiej Zolnierkiewicz Subject: [PATCH] Staging: rt3070: kill TimerQThr thread first in RT28xxThreadTerminate() * kill TimerQThr thread first in RT28xxThreadTerminate() * remove the debugging printk() while at it This makes rt3070 driver match rt2870 driver's behavior. Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Greg Kroah-Hartman --- drivers/staging/rt2870/2870_main_dev.c | 40 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) --- a/drivers/staging/rt2870/2870_main_dev.c +++ b/drivers/staging/rt2870/2870_main_dev.c @@ -1063,6 +1063,26 @@ VOID RT28xxThreadTerminate( } #endif #ifdef RT30xx + if (pid_nr(pObj->TimerQThr_pid) > 0) + { + POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie; + printk("Terminate the TimerQThr_pid=%d!\n", pid_nr(pObj->TimerQThr_pid)); + mb(); + pAd->TimerFunc_kill = 1; + mb(); + ret = kill_pid(pObj->TimerQThr_pid, SIGTERM, 1); + if (ret) + { + printk(KERN_WARNING "%s: unable to stop TimerQThread, pid=%d, ret=%d!\n", + pAd->net_dev->name, pid_nr(pObj->TimerQThr_pid), ret); + } + else + { + wait_for_completion(&pAd->TimerQComplete); + pObj->TimerQThr_pid = NULL; + } + } + if (pid_nr(pObj->MLMEThr_pid) > 0) { printk("Terminate the MLMEThr_pid=%d!\n", pid_nr(pObj->MLMEThr_pid)); @@ -1106,26 +1126,6 @@ VOID RT28xxThreadTerminate( pObj->RTUSBCmdThr_pid = NULL; } } - if (pid_nr(pObj->TimerQThr_pid) > 0) - { - POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie; - printk("Terminate the TimerQThr_pid=%d!\n", pid_nr(pObj->TimerQThr_pid)); - mb(); - pAd->TimerFunc_kill = 1; - mb(); - ret = kill_pid(pObj->TimerQThr_pid, SIGTERM, 1); - if (ret) - { - printk(KERN_WARNING "%s: unable to stop TimerQThread, pid=%d, ret=%d!\n", - pAd->net_dev->name, pid_nr(pObj->TimerQThr_pid), ret); - } - else - { - printk("wait_for_completion TimerQThr\n"); - wait_for_completion(&pAd->TimerQComplete); - pObj->TimerQThr_pid = NULL; - } - } #endif // Kill tasklets