Merge pull request #70 from CGarces/kernel_4.15

Fix compilation with Kernel 4.15
This commit is contained in:
Carlos Garcés 2018-01-15 18:23:26 +01:00 committed by GitHub
commit 4094004320
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 7 deletions

View File

@ -26,7 +26,8 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
packages: packages:
- gcc-5 - gcc-5
env: COMPILER=gcc-5 KVER=4.14 - libelf-dev
env: COMPILER=gcc-5 KVER=4.15-rc6
- compiler: gcc - compiler: gcc
addons: addons:
apt: apt:
@ -34,7 +35,8 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
packages: packages:
- gcc-6 - gcc-6
env: COMPILER=gcc-6 KVER=4.14 - libelf-dev
env: COMPILER=gcc-6 KVER=4.15-rc6
- compiler: gcc - compiler: gcc
addons: addons:
apt: apt:
@ -42,7 +44,8 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
packages: packages:
- gcc-7 - gcc-7
env: COMPILER=gcc-7 KVER=4.14 - libelf-dev
env: COMPILER=gcc-7 KVER=4.15-rc6
- compiler: gcc - compiler: gcc
addons: addons:
apt: apt:

View File

@ -152,7 +152,11 @@ typedef enum _RT_SPINLOCK_TYPE{
typedef struct rtl8192cd_priv *prtl8192cd_priv; typedef struct rtl8192cd_priv *prtl8192cd_priv;
typedef struct stat_info STA_INFO_T,*PSTA_INFO_T; 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; typedef struct timer_list RT_TIMER, *PRT_TIMER;
#endif
typedef void * RT_TIMER_CALL_BACK; typedef void * RT_TIMER_CALL_BACK;
#ifdef CONFIG_PCI_HCI #ifdef CONFIG_PCI_HCI
@ -222,7 +226,11 @@ typedef enum _RT_SPINLOCK_TYPE{
#define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG
#endif #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; typedef struct timer_list RT_TIMER, *PRT_TIMER;
#endif
typedef void * RT_TIMER_CALL_BACK; typedef void * RT_TIMER_CALL_BACK;
#define STA_INFO_T struct sta_info #define STA_INFO_T struct sta_info
#define PSTA_INFO_T struct sta_info * #define PSTA_INFO_T struct sta_info *

View File

@ -318,15 +318,17 @@ extern void rtw_udelay_os(int us);
extern void rtw_yield_os(void); extern void rtw_yield_os(void);
extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc); extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc);
__inline static unsigned char _cancel_timer_ex(_timer *ptimer) __inline static unsigned char _cancel_timer_ex(_timer *ptimer)
{ {
#ifdef PLATFORM_LINUX #ifdef PLATFORM_LINUX
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
return del_timer_sync(&ptimer->t);
#else
return del_timer_sync(ptimer); return del_timer_sync(ptimer);
#endif #endif
#endif
#ifdef PLATFORM_FREEBSD #ifdef PLATFORM_FREEBSD
_cancel_timer(ptimer,0); _cancel_timer(ptimer,0);
return 0; return 0;

View File

@ -133,7 +133,15 @@
#else #else
typedef struct semaphore _mutex; typedef struct semaphore _mutex;
#endif #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; typedef struct timer_list _timer;
#endif
struct __queue { struct __queue {
struct list_head queue; struct list_head queue;
@ -266,26 +274,45 @@ __inline static void rtw_list_delete(_list *plist)
#define RTW_TIMER_HDL_ARGS void *FunctionContext #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) __inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,void* cntx)
{ {
//setup_timer(ptimer, pfunc,(u32)cntx); //setup_timer(ptimer, pfunc,(u32)cntx);
ptimer->function = pfunc; ptimer->function = pfunc;
ptimer->data = (unsigned long)cntx; 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); init_timer(ptimer);
#endif
} }
__inline static void _set_timer(_timer *ptimer,u32 delay_time) __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))); mod_timer(ptimer , (jiffies+(delay_time*HZ/1000)));
#endif
} }
__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled) __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); del_timer_sync(ptimer);
#endif
*bcancelled = 1; *bcancelled = 1;
} }
static inline void _init_workitem(_workitem *pwork, void *pfunc, void *cntx) static inline void _init_workitem(_workitem *pwork, void *pfunc, void *cntx)
{ {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))