diff options
author | Arpan Kapoor | 2018-09-23 11:35:52 +0530 |
---|---|---|
committer | Arpan Kapoor | 2018-09-23 11:35:52 +0530 |
commit | 5d6bf311c4ade756e140e5cb0f8ba7c46a20acac (patch) | |
tree | 356e84b9fb488c3481f768427de5254863f6e0d3 /linux-4.15.patch | |
parent | a1a63b5a6609d304e1b5b0da1c0dd7930a02ac54 (diff) | |
download | aur-5d6bf311c4ade756e140e5cb0f8ba7c46a20acac.tar.gz |
Fix for timer_list changes in 4.15
Diffstat (limited to 'linux-4.15.patch')
-rw-r--r-- | linux-4.15.patch | 120 |
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
+ }
+
|