mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
131 lines
4.3 KiB
Diff
131 lines
4.3 KiB
Diff
diff -ruN a/core/rtw_mp.c b/core/rtw_mp.c
|
|
--- a/core/rtw_mp.c 2012-07-30 12:51:05.000000000 +0000
|
|
+++ b/core/rtw_mp.c 2013-03-17 19:00:28.393782000 +0000
|
|
@@ -1140,8 +1140,7 @@
|
|
_rtw_memset(ptr, payload, pkt_end - ptr);
|
|
|
|
//3 6. start thread
|
|
- pmp_priv->tx.PktTxThread = kernel_thread(mp_xmit_packet_thread, pmp_priv, CLONE_FS|CLONE_FILES);
|
|
- if(pmp_priv->tx.PktTxThread < 0)
|
|
+ if(!start_kthread(&pmp_priv->tx.PktTxThread, mp_xmit_packet_thread, pmp_priv, "8192cu-mp-xmit"))
|
|
DBG_871X("Create PktTx Thread Fail !!!!!\n");
|
|
|
|
}
|
|
diff -ruN a/include/osdep_service.h b/include/osdep_service.h
|
|
--- a/include/osdep_service.h 2012-07-30 12:51:05.000000000 +0000
|
|
+++ b/include/osdep_service.h 2013-03-17 17:37:39.105483734 +0000
|
|
@@ -100,6 +100,9 @@
|
|
#include <linux/pci.h>
|
|
#endif
|
|
|
|
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
|
|
+ #include <linux/kthread.h>
|
|
+#endif
|
|
|
|
#ifdef CONFIG_USB_HCI
|
|
typedef struct urb * PURB;
|
|
@@ -133,8 +136,12 @@
|
|
//typedef u32 _irqL;
|
|
typedef unsigned long _irqL;
|
|
typedef struct net_device * _nic_hdl;
|
|
-
|
|
+
|
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
|
|
typedef pid_t _thread_hdl_;
|
|
+#else
|
|
+ typedef struct task_struct * _thread_hdl_;
|
|
+#endif
|
|
typedef int thread_return;
|
|
typedef void* thread_context;
|
|
|
|
@@ -572,7 +579,7 @@
|
|
#ifdef PLATFORM_LINUX
|
|
//struct net_device *pnetdev = (struct net_device *)context;
|
|
//daemonize("%s", pnetdev->name);
|
|
- daemonize("%s", "RTKTHREAD");
|
|
+ //daemonize("%s", "RTKTHREAD");
|
|
allow_signal(SIGTERM);
|
|
#endif
|
|
}
|
|
@@ -827,4 +834,8 @@
|
|
|
|
#endif
|
|
|
|
+#ifdef PLATFORM_LINUX
|
|
+extern int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
|
|
+ void *data, const char *name);
|
|
+#endif
|
|
|
|
diff -ruN a/include/rtw_recv.h b/include/rtw_recv.h
|
|
--- a/include/rtw_recv.h 2012-07-30 12:51:05.000000000 +0000
|
|
+++ b/include/rtw_recv.h 2013-03-17 17:35:36.136873966 +0000
|
|
@@ -623,8 +623,9 @@
|
|
//from any given member of recv_frame.
|
|
// rxmem indicates the any member/address in recv_frame
|
|
|
|
- return (union recv_frame*)(((uint)rxmem>>RXFRAME_ALIGN) <<RXFRAME_ALIGN) ;
|
|
-
|
|
+ //return (union recv_frame*)(((uint)rxmem>>RXFRAME_ALIGN) <<RXFRAME_ALIGN) ;
|
|
+ //return (union recv_frame*)(((SIZE_PTR)rxmem >> RXFRAME_ALIGN) << RXFRAME_ALIGN);
|
|
+ return (union recv_frame*)(((ulong)rxmem>>RXFRAME_ALIGN) <<RXFRAME_ALIGN) ;
|
|
}
|
|
|
|
__inline static union recv_frame *pkt_to_recvframe(_pkt *pkt)
|
|
diff -ruN a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c
|
|
--- a/os_dep/linux/os_intfs.c 2012-11-05 07:42:45.000000000 +0000
|
|
+++ b/os_dep/linux/os_intfs.c 2013-03-17 19:00:28.393782000 +0000
|
|
@@ -797,27 +797,22 @@
|
|
RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_start_drv_threads\n"));
|
|
|
|
#ifdef CONFIG_SDIO_HCI
|
|
- padapter->xmitThread = kernel_thread(rtw_xmit_thread, padapter, CLONE_FS|CLONE_FILES);
|
|
- if(padapter->xmitThread < 0)
|
|
+ if(!start_kthread(&padapter->xmitThread, rtw_xmit_thread, padapter, "8192cu-xmit"))
|
|
_status = _FAIL;
|
|
#endif
|
|
|
|
#ifdef CONFIG_RECV_THREAD_MODE
|
|
- padapter->recvThread = kernel_thread(recv_thread, padapter, CLONE_FS|CLONE_FILES);
|
|
- if(padapter->recvThread < 0)
|
|
+ if(!start_kthread(&padapter->recvThread, recv_thread, padapter, "8192cu-recv"))
|
|
_status = _FAIL;
|
|
#endif
|
|
|
|
- padapter->cmdThread = kernel_thread(rtw_cmd_thread, padapter, CLONE_FS|CLONE_FILES);
|
|
- if(padapter->cmdThread < 0)
|
|
+ if(!start_kthread(&padapter->cmdThread, rtw_cmd_thread, padapter, "8192cu-cmd"))
|
|
_status = _FAIL;
|
|
else
|
|
_rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run
|
|
-
|
|
|
|
#ifdef CONFIG_EVENT_THREAD_MODE
|
|
- padapter->evtThread = kernel_thread(event_thread, padapter, CLONE_FS|CLONE_FILES);
|
|
- if(padapter->evtThread < 0)
|
|
+ if(!start_kthread(&padapter->evtThread, event_thread, padapter, "8192cu-evt"))
|
|
_status = _FAIL;
|
|
#endif
|
|
|
|
diff -ruN a/os_dep/osdep_service.c b/os_dep/osdep_service.c
|
|
--- a/os_dep/osdep_service.c 2012-07-30 12:51:05.000000000 +0000
|
|
+++ b/os_dep/osdep_service.c 2013-03-17 19:00:28.393782000 +0000
|
|
@@ -1553,3 +1553,19 @@
|
|
#endif
|
|
}
|
|
|
|
+#ifdef PLATFORM_LINUX
|
|
+int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
|
|
+ void *data, const char *name)
|
|
+{
|
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
|
|
+ *t_hdl = kernel_thread(threadfn, data, CLONE_FS|CLONE_FILES);
|
|
+ if(*t_hdl < 0)
|
|
+#else
|
|
+ *t_hdl = kthread_run(threadfn, data, name);
|
|
+ if(IS_ERR(*t_hdl))
|
|
+#endif
|
|
+ return 0;
|
|
+ return -1;
|
|
+}
|
|
+#endif
|
|
+
|