Staging: rt3070: kill TimerQThr thread first in RT28xxThreadTerminate()
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sun, 16 Aug 2009 19:30:19 +0000 (21:30 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Sep 2009 19:02:18 +0000 (12:02 -0700)
* 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 <bzolnier@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rt2870/2870_main_dev.c

index 9b8ec40..29b4ef3 100644 (file)
@@ -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