aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rt2870
diff options
context:
space:
mode:
authorPeter Teoh <htmldeveloper@gmail.com>2009-03-20 14:20:23 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-04-03 17:53:31 -0400
commitd44ca7af9e79abf4e80514583734cffed1117ee1 (patch)
tree8d4bf6b25c63f892074f086f0aacf5034fdfe831 /drivers/staging/rt2870
parenta955dc39c0dd14e7f85c3d288478294fa133ea90 (diff)
Staging: rt2870: Removal of kernel_thread() API
Replacing the use of kernel_thread() with kthread_run(). But as kthread_run() returned a task structure, as compared with kernel_thread() returning a PID, it was found to be more efficient to store the task structure pointer as a field data instead of PID pointer. On top of modifying the field to store task structure pointer, the initialization of the field (assigned to THREAD_PID_INIT_VALUE) was also found unnecessary - as no where it is found to be used. Signed-off-by: Peter Teoh <htmldeveloper@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rt2870')
-rw-r--r--drivers/staging/rt2870/2870_main_dev.c67
-rw-r--r--drivers/staging/rt2870/common/2870_rtmp_init.c35
-rw-r--r--drivers/staging/rt2870/common/cmm_data.c3
-rw-r--r--drivers/staging/rt2870/common/rtmp_init.c2
-rw-r--r--drivers/staging/rt2870/common/rtusb_io.c3
-rw-r--r--drivers/staging/rt2870/rt2870.h6
-rw-r--r--drivers/staging/rt2870/rt_linux.h11
7 files changed, 53 insertions, 74 deletions
diff --git a/drivers/staging/rt2870/2870_main_dev.c b/drivers/staging/rt2870/2870_main_dev.c
index 04c764d95d7..9d59e3167fe 100644
--- a/drivers/staging/rt2870/2870_main_dev.c
+++ b/drivers/staging/rt2870/2870_main_dev.c
@@ -265,7 +265,7 @@ INT MlmeThread(
265 */ 265 */
266 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__)); 266 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__));
267 267
268 pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE; 268 pObj->MLMEThr_task = NULL;
269 269
270 complete_and_exit (&pAd->mlmeComplete, 0); 270 complete_and_exit (&pAd->mlmeComplete, 0);
271 return 0; 271 return 0;
@@ -373,7 +373,7 @@ INT RTUSBCmdThread(
373 */ 373 */
374 DBGPRINT(RT_DEBUG_TRACE,( "<---RTUSBCmdThread\n")); 374 DBGPRINT(RT_DEBUG_TRACE,( "<---RTUSBCmdThread\n"));
375 375
376 pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE; 376 pObj->RTUSBCmdThr_task = NULL;
377 377
378 complete_and_exit (&pAd->CmdQComplete, 0); 378 complete_and_exit (&pAd->CmdQComplete, 0);
379 return 0; 379 return 0;
@@ -467,7 +467,7 @@ INT TimerQThread(
467 */ 467 */
468 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__)); 468 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__));
469 469
470 pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE; 470 pObj->TimerQThr_task = NULL;
471 471
472 complete_and_exit(&pAd->TimerQComplete, 0); 472 complete_and_exit(&pAd->TimerQComplete, 0);
473 return 0; 473 return 0;
@@ -944,69 +944,46 @@ VOID RT28xxThreadTerminate(
944 RTUSBCancelPendingIRPs(pAd); 944 RTUSBCancelPendingIRPs(pAd);
945 945
946 // Terminate Threads 946 // Terminate Threads
947 CHECK_PID_LEGALITY(pObj->TimerQThr_pid) 947 BUG_ON(pObj->TimerQThr_task == NULL);
948 CHECK_PID_LEGALITY(task_pid(pObj->TimerQThr_task))
948 { 949 {
949 POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie; 950 POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
950 951
951 printk("Terminate the TimerQThr_pid=%d!\n", GET_PID_NUMBER(pObj->TimerQThr_pid)); 952 printk(KERN_DEBUG "Terminate the TimerQThr pid=%d!\n",
953 pid_nr(task_pid(pObj->TimerQThr_task)));
952 mb(); 954 mb();
953 pAd->TimerFunc_kill = 1; 955 pAd->TimerFunc_kill = 1;
954 mb(); 956 mb();
955 ret = KILL_THREAD_PID(pObj->TimerQThr_pid, SIGTERM, 1); 957 kthread_stop(pObj->TimerQThr_task);
956 if (ret) 958 pObj->TimerQThr_task = NULL;
957 {
958 printk(KERN_WARNING "%s: unable to stop TimerQThread, pid=%d, ret=%d!\n",
959 pAd->net_dev->name, GET_PID_NUMBER(pObj->TimerQThr_pid), ret);
960 }
961 else
962 {
963 wait_for_completion(&pAd->TimerQComplete);
964 pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE;
965 }
966 } 959 }
967 960
968 CHECK_PID_LEGALITY(pObj->MLMEThr_pid) 961 BUG_ON(pObj->MLMEThr_task == NULL);
962 CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task))
969 { 963 {
970 printk("Terminate the MLMEThr_pid=%d!\n", GET_PID_NUMBER(pObj->MLMEThr_pid)); 964 printk(KERN_DEBUG "Terminate the MLMEThr pid=%d!\n",
965 pid_nr(task_pid(pObj->MLMEThr_task)));
971 mb(); 966 mb();
972 pAd->mlme_kill = 1; 967 pAd->mlme_kill = 1;
973 //RT28XX_MLME_HANDLER(pAd); 968 //RT28XX_MLME_HANDLER(pAd);
974 mb(); 969 mb();
975 ret = KILL_THREAD_PID(pObj->MLMEThr_pid, SIGTERM, 1); 970 kthread_stop(pObj->MLMEThr_task);
976 if (ret) 971 pObj->MLMEThr_task = NULL;
977 {
978 printk (KERN_WARNING "%s: unable to Mlme thread, pid=%d, ret=%d!\n",
979 pAd->net_dev->name, GET_PID_NUMBER(pObj->MLMEThr_pid), ret);
980 }
981 else
982 {
983 //wait_for_completion (&pAd->notify);
984 wait_for_completion (&pAd->mlmeComplete);
985 pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE;
986 }
987 } 972 }
988 973
989 CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) 974 BUG_ON(pObj->RTUSBCmdThr_task == NULL);
975 CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task))
990 { 976 {
991 printk("Terminate the RTUSBCmdThr_pid=%d!\n", GET_PID_NUMBER(pObj->RTUSBCmdThr_pid)); 977 printk(KERN_DEBUG "Terminate the RTUSBCmdThr pid=%d!\n",
978 pid_nr(task_pid(pObj->RTUSBCmdThr_task)));
992 mb(); 979 mb();
993 NdisAcquireSpinLock(&pAd->CmdQLock); 980 NdisAcquireSpinLock(&pAd->CmdQLock);
994 pAd->CmdQ.CmdQState = RT2870_THREAD_STOPED; 981 pAd->CmdQ.CmdQState = RT2870_THREAD_STOPED;
995 NdisReleaseSpinLock(&pAd->CmdQLock); 982 NdisReleaseSpinLock(&pAd->CmdQLock);
996 mb(); 983 mb();
997 //RTUSBCMDUp(pAd); 984 //RTUSBCMDUp(pAd);
998 ret = KILL_THREAD_PID(pObj->RTUSBCmdThr_pid, SIGTERM, 1); 985 kthread_stop(pObj->RTUSBCmdThr_task);
999 if (ret) 986 pObj->RTUSBCmdThr_task = NULL;
1000 {
1001 printk(KERN_WARNING "%s: unable to RTUSBCmd thread, pid=%d, ret=%d!\n",
1002 pAd->net_dev->name, GET_PID_NUMBER(pObj->RTUSBCmdThr_pid), ret);
1003 }
1004 else
1005 {
1006 //wait_for_completion (&pAd->notify);
1007 wait_for_completion (&pAd->CmdQComplete);
1008 pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE;
1009 }
1010 } 987 }
1011 988
1012 989
@@ -1067,7 +1044,7 @@ BOOLEAN RT28XXChipsetCheck(
1067 if (dev_p->descriptor.idVendor == rtusb_usb_id[i].idVendor && 1044 if (dev_p->descriptor.idVendor == rtusb_usb_id[i].idVendor &&
1068 dev_p->descriptor.idProduct == rtusb_usb_id[i].idProduct) 1045 dev_p->descriptor.idProduct == rtusb_usb_id[i].idProduct)
1069 { 1046 {
1070 printk("rt2870: idVendor = 0x%x, idProduct = 0x%x\n", 1047 printk(KERN_DEBUG "rt2870: idVendor = 0x%x, idProduct = 0x%x\n",
1071 dev_p->descriptor.idVendor, dev_p->descriptor.idProduct); 1048 dev_p->descriptor.idVendor, dev_p->descriptor.idProduct);
1072 break; 1049 break;
1073 } 1050 }
diff --git a/drivers/staging/rt2870/common/2870_rtmp_init.c b/drivers/staging/rt2870/common/2870_rtmp_init.c
index 9f5143b3922..cb16d2fcf60 100644
--- a/drivers/staging/rt2870/common/2870_rtmp_init.c
+++ b/drivers/staging/rt2870/common/2870_rtmp_init.c
@@ -727,8 +727,8 @@ NDIS_STATUS AdapterBlockAllocateMemory(
727 727
728 usb_dev = pObj->pUsb_Dev; 728 usb_dev = pObj->pUsb_Dev;
729 729
730 pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE; 730 pObj->MLMEThr_task = NULL;
731 pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE; 731 pObj->RTUSBCmdThr_task = NULL;
732 732
733 *ppAd = (PVOID)vmalloc(sizeof(RTMP_ADAPTER)); 733 *ppAd = (PVOID)vmalloc(sizeof(RTMP_ADAPTER));
734 734
@@ -765,7 +765,7 @@ NDIS_STATUS CreateThreads(
765{ 765{
766 PRTMP_ADAPTER pAd = net_dev->ml_priv; 766 PRTMP_ADAPTER pAd = net_dev->ml_priv;
767 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; 767 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
768 pid_t pid_number = -1; 768 struct task_struct *tsk;
769 769
770 //init_MUTEX(&(pAd->usbdev_semaphore)); 770 //init_MUTEX(&(pAd->usbdev_semaphore));
771 771
@@ -779,36 +779,39 @@ NDIS_STATUS CreateThreads(
779 init_completion (&pAd->TimerQComplete); 779 init_completion (&pAd->TimerQComplete);
780 780
781 // Creat MLME Thread 781 // Creat MLME Thread
782 pObj->MLMEThr_pid= THREAD_PID_INIT_VALUE; 782 pObj->MLMEThr_task = NULL;
783 pid_number = kernel_thread(MlmeThread, pAd, CLONE_VM); 783 tsk = kthread_run(MlmeThread, pAd, pAd->net_dev->name);
784 if (pid_number < 0) 784
785 { 785 if (IS_ERR(tsk)) {
786 printk (KERN_WARNING "%s: unable to start Mlme thread\n",pAd->net_dev->name); 786 printk (KERN_WARNING "%s: unable to start Mlme thread\n",pAd->net_dev->name);
787 return NDIS_STATUS_FAILURE; 787 return NDIS_STATUS_FAILURE;
788 } 788 }
789 pObj->MLMEThr_pid = GET_PID(pid_number); 789
790 pObj->MLMEThr_task = tsk;
790 // Wait for the thread to start 791 // Wait for the thread to start
791 wait_for_completion(&(pAd->mlmeComplete)); 792 wait_for_completion(&(pAd->mlmeComplete));
792 793
793 // Creat Command Thread 794 // Creat Command Thread
794 pObj->RTUSBCmdThr_pid= THREAD_PID_INIT_VALUE; 795 pObj->RTUSBCmdThr_task = NULL;
795 pid_number = kernel_thread(RTUSBCmdThread, pAd, CLONE_VM); 796 tsk = kthread_run(RTUSBCmdThread, pAd, pAd->net_dev->name);
796 if (pid_number < 0) 797
798 if (IS_ERR(tsk) < 0)
797 { 799 {
798 printk (KERN_WARNING "%s: unable to start RTUSBCmd thread\n",pAd->net_dev->name); 800 printk (KERN_WARNING "%s: unable to start RTUSBCmd thread\n",pAd->net_dev->name);
799 return NDIS_STATUS_FAILURE; 801 return NDIS_STATUS_FAILURE;
800 } 802 }
801 pObj->RTUSBCmdThr_pid = GET_PID(pid_number); 803
804 pObj->RTUSBCmdThr_task = tsk;
802 wait_for_completion(&(pAd->CmdQComplete)); 805 wait_for_completion(&(pAd->CmdQComplete));
803 806
804 pObj->TimerQThr_pid= THREAD_PID_INIT_VALUE; 807 pObj->TimerQThr_task = NULL;
805 pid_number = kernel_thread(TimerQThread, pAd, CLONE_VM); 808 tsk = kthread_run(TimerQThread, pAd, pAd->net_dev->name);
806 if (pid_number < 0) 809 if (IS_ERR(tsk) < 0)
807 { 810 {
808 printk (KERN_WARNING "%s: unable to start TimerQThread\n",pAd->net_dev->name); 811 printk (KERN_WARNING "%s: unable to start TimerQThread\n",pAd->net_dev->name);
809 return NDIS_STATUS_FAILURE; 812 return NDIS_STATUS_FAILURE;
810 } 813 }
811 pObj->TimerQThr_pid = GET_PID(pid_number); 814 pObj->TimerQThr_task = tsk;
812 // Wait for the thread to start 815 // Wait for the thread to start
813 wait_for_completion(&(pAd->TimerQComplete)); 816 wait_for_completion(&(pAd->TimerQComplete));
814 817
diff --git a/drivers/staging/rt2870/common/cmm_data.c b/drivers/staging/rt2870/common/cmm_data.c
index fd809abf6df..f8e0ebd7bca 100644
--- a/drivers/staging/rt2870/common/cmm_data.c
+++ b/drivers/staging/rt2870/common/cmm_data.c
@@ -709,9 +709,6 @@ BOOLEAN RTMP_FillTxBlkInfo(
709 } 709 }
710 710
711 return TRUE; 711 return TRUE;
712
713FillTxBlkErr:
714 return FALSE;
715} 712}
716 713
717 714
diff --git a/drivers/staging/rt2870/common/rtmp_init.c b/drivers/staging/rt2870/common/rtmp_init.c
index 870a00da3da..099b6a806f8 100644
--- a/drivers/staging/rt2870/common/rtmp_init.c
+++ b/drivers/staging/rt2870/common/rtmp_init.c
@@ -3655,7 +3655,7 @@ VOID UserCfgInit(
3655#ifdef RALINK_28xx_QA 3655#ifdef RALINK_28xx_QA
3656 //pAd->ate.Repeat = 0; 3656 //pAd->ate.Repeat = 0;
3657 pAd->ate.TxStatus = 0; 3657 pAd->ate.TxStatus = 0;
3658 pAd->ate.AtePid = THREAD_PID_INIT_VALUE; 3658 pAd->ate.AtePid = NULL;
3659#endif // RALINK_28xx_QA // 3659#endif // RALINK_28xx_QA //
3660#endif // RALINK_ATE // 3660#endif // RALINK_ATE //
3661 3661
diff --git a/drivers/staging/rt2870/common/rtusb_io.c b/drivers/staging/rt2870/common/rtusb_io.c
index 6db443e9268..afde136a9a0 100644
--- a/drivers/staging/rt2870/common/rtusb_io.c
+++ b/drivers/staging/rt2870/common/rtusb_io.c
@@ -958,7 +958,8 @@ NDIS_STATUS RTUSBEnqueueCmdFromNdis(
958 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; 958 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
959 959
960 960
961 CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) 961 BUG_ON(pObj->RTUSBCmdThr_task == NULL);
962 CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task))
962 return (NDIS_STATUS_RESOURCES); 963 return (NDIS_STATUS_RESOURCES);
963 964
964 status = RTMPAllocateMemory((PVOID *)&cmdqelmt, sizeof(CmdQElmt)); 965 status = RTMPAllocateMemory((PVOID *)&cmdqelmt, sizeof(CmdQElmt));
diff --git a/drivers/staging/rt2870/rt2870.h b/drivers/staging/rt2870/rt2870.h
index b8ccc50bbda..5dd15aac9ce 100644
--- a/drivers/staging/rt2870/rt2870.h
+++ b/drivers/staging/rt2870/rt2870.h
@@ -577,14 +577,16 @@ VOID RTUSBBulkRxComplete(purbb_t pUrb, struct pt_regs *pt_regs);
577#define RTUSBMlmeUp(pAd) \ 577#define RTUSBMlmeUp(pAd) \
578{ \ 578{ \
579 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \ 579 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \
580 CHECK_PID_LEGALITY(pObj->MLMEThr_pid) \ 580 BUG_ON(pObj->MLMEThr_task == NULL); \
581 CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task)) \
581 up(&(pAd->mlme_semaphore)); \ 582 up(&(pAd->mlme_semaphore)); \
582} 583}
583 584
584#define RTUSBCMDUp(pAd) \ 585#define RTUSBCMDUp(pAd) \
585{ \ 586{ \
586 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \ 587 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \
587 CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) \ 588 BUG_ON(pObj->RTUSBCmdThr_task == NULL); \
589 CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task)) \
588 up(&(pAd->RTUSBCmd_semaphore)); \ 590 up(&(pAd->RTUSBCmd_semaphore)); \
589} 591}
590 592
diff --git a/drivers/staging/rt2870/rt_linux.h b/drivers/staging/rt2870/rt_linux.h
index 49ad37f0063..5a6ee6ad0e5 100644
--- a/drivers/staging/rt2870/rt_linux.h
+++ b/drivers/staging/rt2870/rt_linux.h
@@ -44,6 +44,7 @@
44#include <linux/module.h> 44#include <linux/module.h>
45#include <linux/version.h> 45#include <linux/version.h>
46#include <linux/kernel.h> 46#include <linux/kernel.h>
47#include <linux/kthread.h>
47 48
48#include <linux/spinlock.h> 49#include <linux/spinlock.h>
49#include <linux/init.h> 50#include <linux/init.h>
@@ -165,14 +166,12 @@ typedef int (*HARD_START_XMIT_FUNC)(struct sk_buff *skb, struct net_device *net_
165 166
166#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) 167#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
167typedef struct pid * THREAD_PID; 168typedef struct pid * THREAD_PID;
168#define THREAD_PID_INIT_VALUE NULL
169#define GET_PID(_v) find_get_pid(_v) 169#define GET_PID(_v) find_get_pid(_v)
170#define GET_PID_NUMBER(_v) pid_nr(_v) 170#define GET_PID_NUMBER(_v) pid_nr(_v)
171#define CHECK_PID_LEGALITY(_pid) if (pid_nr(_pid) >= 0) 171#define CHECK_PID_LEGALITY(_pid) if (pid_nr(_pid) >= 0)
172#define KILL_THREAD_PID(_A, _B, _C) kill_pid(_A, _B, _C) 172#define KILL_THREAD_PID(_A, _B, _C) kill_pid(_A, _B, _C)
173#else 173#else
174typedef pid_t THREAD_PID; 174typedef pid_t THREAD_PID;
175#define THREAD_PID_INIT_VALUE -1
176#define GET_PID(_v) _v 175#define GET_PID(_v) _v
177#define GET_PID_NUMBER(_v) _v 176#define GET_PID_NUMBER(_v) _v
178#define CHECK_PID_LEGALITY(_pid) if (_pid >= 0) 177#define CHECK_PID_LEGALITY(_pid) if (_pid >= 0)
@@ -188,11 +187,11 @@ struct os_lock {
188struct os_cookie { 187struct os_cookie {
189 188
190#ifdef RT2870 189#ifdef RT2870
191 struct usb_device *pUsb_Dev; 190 struct usb_device *pUsb_Dev;
192 191
193 THREAD_PID MLMEThr_pid; 192 struct task_struct *MLMEThr_task;
194 THREAD_PID RTUSBCmdThr_pid; 193 struct task_struct *RTUSBCmdThr_task;
195 THREAD_PID TimerQThr_pid; 194 struct task_struct *TimerQThr_task;
196#endif // RT2870 // 195#endif // RT2870 //
197 196
198 struct tasklet_struct rx_done_task; 197 struct tasklet_struct rx_done_task;