summarylogtreecommitdiffstats
path: root/linux-4.15.patch
diff options
context:
space:
mode:
authorArpan Kapoor2018-09-23 11:35:52 +0530
committerArpan Kapoor2018-09-23 11:35:52 +0530
commit5d6bf311c4ade756e140e5cb0f8ba7c46a20acac (patch)
tree356e84b9fb488c3481f768427de5254863f6e0d3 /linux-4.15.patch
parenta1a63b5a6609d304e1b5b0da1c0dd7930a02ac54 (diff)
downloadaur-5d6bf311c4ade756e140e5cb0f8ba7c46a20acac.tar.gz
Fix for timer_list changes in 4.15
Diffstat (limited to 'linux-4.15.patch')
-rw-r--r--linux-4.15.patch120
1 files changed, 120 insertions, 0 deletions
diff --git a/linux-4.15.patch b/linux-4.15.patch
new file mode 100644
index 000000000000..2098566c1ce8
--- /dev/null
+++ b/linux-4.15.patch
@@ -0,0 +1,120 @@
+diff --git a/hal/OUTSRC/odm_types.h b/hal/OUTSRC/odm_types.h
+index 27cecce..0d3407a 100644
+--- a/hal/OUTSRC/odm_types.h
++++ b/hal/OUTSRC/odm_types.h
+@@ -148,7 +148,11 @@ typedef enum _RT_SPINLOCK_TYPE{
+
+ typedef struct rtl8192cd_priv *prtl8192cd_priv;
+ typedef struct stat_info STA_INFO_T,*PSTA_INFO_T;
++#if defined(LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER;
++#else
+ typedef struct timer_list RT_TIMER, *PRT_TIMER;
++#endif
+ typedef void * RT_TIMER_CALL_BACK;
+
+ #define DEV_BUS_TYPE RT_PCI_INTERFACE
+@@ -175,7 +179,11 @@ typedef enum _RT_SPINLOCK_TYPE{
+
+ typedef struct rtl8192cd_priv *prtl8192cd_priv;
+ typedef struct stat_info STA_INFO_T,*PSTA_INFO_T;
++#if defined(LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER;
++#else
+ typedef struct timer_list RT_TIMER, *PRT_TIMER;
++#endif
+ typedef void * RT_TIMER_CALL_BACK;
+
+ #define DEV_BUS_TYPE RT_PCI_INTERFACE
+@@ -238,7 +246,11 @@ typedef enum _RT_SPINLOCK_TYPE{
+ #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG
+ #endif
+
++#if defined(LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER;
++#else
+ typedef struct timer_list RT_TIMER, *PRT_TIMER;
++#endif
+ typedef void * RT_TIMER_CALL_BACK;
+ #define STA_INFO_T struct sta_info
+ #define PSTA_INFO_T struct sta_info *
+diff --git a/include/osdep_service.h b/include/osdep_service.h
+index b262938..0464e02 100644
+--- a/include/osdep_service.h
++++ b/include/osdep_service.h
+@@ -318,8 +318,12 @@ extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc);
+ __inline static unsigned char _cancel_timer_ex(_timer *ptimer)
+ {
+ #ifdef PLATFORM_LINUX
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ return del_timer_sync(&ptimer->t);
++#else
+ return del_timer_sync(ptimer);
+ #endif
++#endif
+ #ifdef PLATFORM_FREEBSD
+ _cancel_timer(ptimer,0);
+ return 0;
+diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h
+index 3cf1c30..d733520 100644
+--- a/include/osdep_service_linux.h
++++ b/include/osdep_service_linux.h
+@@ -124,7 +124,15 @@
+ #else
+ typedef struct semaphore _mutex;
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ typedef struct legacy_timer_emu {
++ struct timer_list t;
++ void (*function)(unsigned long);
++ unsigned long data;
++ } _timer;
++#else
+ typedef struct timer_list _timer;
++#endif
+
+ struct __queue {
+ struct list_head queue;
+@@ -256,23 +264,41 @@ __inline static void rtw_list_delete(_list *plist)
+ }
+
+ #define RTW_TIMER_HDL_ARGS void *FunctionContext
+-
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++static void legacy_timer_emu_func(struct timer_list *t)
++{
++ struct legacy_timer_emu *lt = from_timer(lt, t, t);
++ lt->function(lt->data);
++}
++#endif
+ __inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,void* cntx)
+ {
+ //setup_timer(ptimer, pfunc,(u32)cntx);
+ ptimer->function = pfunc;
+ ptimer->data = (unsigned long)cntx;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ timer_setup(&ptimer->t, legacy_timer_emu_func, 0);
++#else
+ init_timer(ptimer);
++#endif
+ }
+
+ __inline static void _set_timer(_timer *ptimer,u32 delay_time)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ mod_timer(&ptimer->t, (jiffies+(delay_time*HZ/1000)));
++#else
+ mod_timer(ptimer , (jiffies+(delay_time*HZ/1000)));
++#endif
+ }
+
+ __inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
++ del_timer_sync(&ptimer->t);
++#else
+ del_timer_sync(ptimer);
++#endif
+ *bcancelled= _TRUE;//TRUE ==1; FALSE==0
+ }
+