diff --git a/core/rtw_br_ext.c b/core/rtw_br_ext.c index 1236f50..4ff2b6b 100644 --- a/core/rtw_br_ext.c +++ b/core/rtw_br_ext.c @@ -19,9 +19,12 @@ ******************************************************************************/ #define _RTW_BR_EXT_C_ +#include #include #include +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) #include +#endif #include #include #include @@ -663,7 +666,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) } else { return -1; } - +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) /* IPX */ if (ipx != NULL) { switch (method) { @@ -795,6 +798,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) return -1; } } +#endif return -1; } else if ((protocol == ETH_P_PPP_DISC) || diff --git a/core/rtw_led.c b/core/rtw_led.c index e17fa5b..a150c02 100644 --- a/core/rtw_led.c +++ b/core/rtw_led.c @@ -26,9 +26,17 @@ /* Callback function of LED BlinkTimer, */ /* it just schedules to corresponding BlinkWorkItem/led_blink_hdl */ /* */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void BlinkTimerCallback(struct timer_list *t) +#else void BlinkTimerCallback(void *data) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct LED_871x *pLed = from_timer(pLed, t, BlinkTimer); +#else struct LED_871x *pLed = (struct LED_871x *)data; +#endif struct adapter *padapter = pLed->padapter; if ((padapter->bSurpriseRemoved) || (padapter->bDriverStopped)) @@ -78,7 +86,11 @@ void InitLed871x(struct adapter *padapter, struct LED_871x *pLed, enum LED_PIN_8 ResetLedStatus(pLed); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pLed->BlinkTimer, BlinkTimerCallback, 0); +#else _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed); +#endif _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); } diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index 7868114..93585b3 100644 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -1744,9 +1744,17 @@ exit: return res; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void reset_ch_sitesurvey_timer_process(struct timer_list *t) +#else static void reset_ch_sitesurvey_timer_process (void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, pwrctrlpriv.pwr_state_check_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -1758,9 +1766,17 @@ static void reset_ch_sitesurvey_timer_process (void *FunctionContext) pwdinfo->rx_invitereq_info.scan_op_ch_only = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void reset_ch_sitesurvey_timer_process2 (struct timer_list *t) +#else static void reset_ch_sitesurvey_timer_process2 (void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, pwrctrlpriv.pwr_state_check_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -1772,9 +1788,17 @@ static void reset_ch_sitesurvey_timer_process2 (void *FunctionContext) pwdinfo->p2p_info.scan_op_ch_only = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void restore_p2p_state_timer_process(struct timer_list *t) +#else static void restore_p2p_state_timer_process (void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, wdinfo.restore_p2p_state_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -1783,9 +1807,17 @@ static void restore_p2p_state_timer_process (void *FunctionContext) p2p_protocol_wk_cmd(adapter, P2P_RESTORE_STATE_WK); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void pre_tx_scan_timer_process(struct timer_list *t) +#else static void pre_tx_scan_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, wdinfo.pre_tx_scan_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; @@ -1813,9 +1845,17 @@ static void pre_tx_scan_timer_process(void *FunctionContext) spin_unlock_bh(&pmlmepriv->lock); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void find_phase_timer_process(struct timer_list *t) +#else static void find_phase_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, wdinfo.find_phase_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -1841,11 +1881,19 @@ void rtw_init_wifidirect_timers(struct adapter *padapter) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pwdinfo->find_phase_timer, find_phase_timer_process, 0); + timer_setup(&pwdinfo->restore_p2p_state_timer, restore_p2p_state_timer_process, 0); + timer_setup(&pwdinfo->pre_tx_scan_timer, pre_tx_scan_timer_process, 0); + timer_setup(&pwdinfo->reset_ch_sitesurvey, reset_ch_sitesurvey_timer_process, 0); + timer_setup(&pwdinfo->reset_ch_sitesurvey2, reset_ch_sitesurvey_timer_process2, 0); +#else _init_timer(&pwdinfo->find_phase_timer, padapter->pnetdev, find_phase_timer_process, padapter); _init_timer(&pwdinfo->restore_p2p_state_timer, padapter->pnetdev, restore_p2p_state_timer_process, padapter); _init_timer(&pwdinfo->pre_tx_scan_timer, padapter->pnetdev, pre_tx_scan_timer_process, padapter); _init_timer(&pwdinfo->reset_ch_sitesurvey, padapter->pnetdev, reset_ch_sitesurvey_timer_process, padapter); _init_timer(&pwdinfo->reset_ch_sitesurvey2, padapter->pnetdev, reset_ch_sitesurvey_timer_process2, padapter); +#endif } void rtw_init_wifidirect_addrs(struct adapter *padapter, u8 *dev_addr, u8 *iface_addr) @@ -1987,8 +2035,10 @@ int rtw_p2p_enable(struct adapter *padapter, enum P2P_ROLE role) _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey2); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) reset_ch_sitesurvey_timer_process(padapter); reset_ch_sitesurvey_timer_process2(padapter); +#endif rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); rtw_p2p_set_role(pwdinfo, P2P_ROLE_DISABLE); memset(&pwdinfo->rx_prov_disc_info, 0x00, sizeof(struct rx_provdisc_req_info)); diff --git a/core/rtw_pwrctrl.c b/core/rtw_pwrctrl.c index 68bb923..dc5320f 100644 --- a/core/rtw_pwrctrl.c +++ b/core/rtw_pwrctrl.c @@ -208,9 +208,19 @@ exit: return; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void pwr_state_check_handler(struct timer_list *t) +#else static void pwr_state_check_handler(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *padapter = + from_timer(padapter, t, + pwrctrlpriv.pwr_state_check_timer); +#else struct adapter *padapter = (struct adapter *)FunctionContext; +#endif rtw_ps_cmd(padapter); } @@ -498,7 +508,11 @@ void rtw_init_pwrctrl_priv(struct adapter *padapter) pwrctrlpriv->btcoex_rfon = false; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pwrctrlpriv->pwr_state_check_timer, pwr_state_check_handler, 0); +#else _init_timer(&(pwrctrlpriv->pwr_state_check_timer), padapter->pnetdev, pwr_state_check_handler, (u8 *)padapter); +#endif } diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 30f3fa8..0ce479c 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -41,7 +41,11 @@ static u8 rtw_rfc1042_header[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void rtw_signal_stat_timer_hdl(struct timer_list *); +#else void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS); +#endif void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) { @@ -103,7 +107,11 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter) res = rtw_hal_init_recv_priv(padapter); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&precvpriv->signal_stat_timer, rtw_signal_stat_timer_hdl, 0); +#else _init_timer(&precvpriv->signal_stat_timer, padapter->pnetdev, RTW_TIMER_HDL_NAME(signal_stat), padapter); +#endif precvpriv->signal_stat_sampling_interval = 1000; /* ms */ @@ -2183,9 +2191,17 @@ _recv_entry_drop: return ret; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void rtw_signal_stat_timer_hdl(struct timer_list *t) +#else void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct adapter *adapter = from_timer(adapter, t, recvpriv.signal_stat_timer); +#else struct adapter *adapter = (struct adapter *)FunctionContext; +#endif struct recv_priv *recvpriv = &adapter->recvpriv; u32 tmp_s, tmp_q; diff --git a/hal/odm.c b/hal/odm.c index 5d554c0..a250e48 100644 --- a/hal/odm.c +++ b/hal/odm.c @@ -1580,8 +1580,10 @@ void odm_RSSIMonitorCheckAP(struct odm_dm_struct *pDM_Odm) void ODM_InitAllTimers(struct odm_dm_struct *pDM_Odm) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) ODM_InitializeTimer(pDM_Odm, &pDM_Odm->DM_SWAT_Table.SwAntennaSwitchTimer, (void *)odm_SwAntDivChkAntSwitchCallback, NULL, "SwAntennaSwitchTimer"); +#endif } void ODM_CancelAllTimers(struct odm_dm_struct *pDM_Odm) diff --git a/hal/odm_interface.c b/hal/odm_interface.c index 95b9cf2..6cce87e 100644 --- a/hal/odm_interface.c +++ b/hal/odm_interface.c @@ -177,6 +177,7 @@ void ODM_SetTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer, u32 _set_timer(pTimer, msDelay); /* ms */ } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void ODM_InitializeTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer, void *CallBackFunc, void *pContext, const char *szID) @@ -184,6 +185,7 @@ void ODM_InitializeTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTime struct adapter *Adapter = pDM_Odm->Adapter; _init_timer(pTimer, Adapter->pnetdev, CallBackFunc, pDM_Odm); } +#endif void ODM_CancelTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer) { diff --git a/hostapd-0.8/hostapd/hostapd b/hostapd-0.8/hostapd/hostapd new file mode 100755 index 0000000..2ec1eed Binary files /dev/null and b/hostapd-0.8/hostapd/hostapd differ diff --git a/hostapd-0.8/hostapd/hostapd_cli b/hostapd-0.8/hostapd/hostapd_cli new file mode 100755 index 0000000..daa5946 Binary files /dev/null and b/hostapd-0.8/hostapd/hostapd_cli differ diff --git a/include/osdep_service.h b/include/osdep_service.h index 8f72e44..df7019c 100644 --- a/include/osdep_service.h +++ b/include/osdep_service.h @@ -20,6 +20,7 @@ #ifndef __OSDEP_SERVICE_H_ #define __OSDEP_SERVICE_H_ +#include #include #define _FAIL 0 @@ -88,12 +89,14 @@ static inline void rtw_list_delete(struct list_head *plist) list_del_init(plist); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static inline void _init_timer(struct timer_list *ptimer,struct net_device *nic_hdl,void *pfunc,void* cntx) { ptimer->function = pfunc; ptimer->data = (unsigned long)cntx; init_timer(ptimer); } +#endif static inline void _set_timer(struct timer_list *ptimer,u32 delay_time) { diff --git a/include/rtw_led.h b/include/rtw_led.h index d0da4fd..1e6a809 100644 --- a/include/rtw_led.h +++ b/include/rtw_led.h @@ -179,7 +179,11 @@ struct led_priv{ (adapt)->ledpriv.LedControlHandler((adapt), (action)); \ } while (0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void BlinkTimerCallback(struct timer_list *t); +#else void BlinkTimerCallback(void *data); +#endif void BlinkWorkItemCallback(struct work_struct *work); void ResetLedStatus(struct LED_871x * pLed); diff --git a/include/rtw_mlme.h b/include/rtw_mlme.h index 8d9c231..a53a567 100644 --- a/include/rtw_mlme.h +++ b/include/rtw_mlme.h @@ -469,8 +469,13 @@ void indicate_wx_scan_complete_event(struct adapter *padapter); void rtw_indicate_wx_assoc_event(struct adapter *padapter); void rtw_indicate_wx_disassoc_event(struct adapter *padapter); int event_thread(void *context); -void rtw_join_timeout_handler(void *FunctionContext); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +void rtw_join_timeout_handler (void *FunctionContext); void _rtw_scan_timeout_handler(void *FunctionContext); +#else +void rtw_join_timeout_handler (struct timer_list *t); +void _rtw_scan_timeout_handler (struct timer_list *t); +#endif void rtw_free_network_queue(struct adapter *adapter, u8 isfreeall); int rtw_init_mlme_priv(struct adapter *adapter); void rtw_free_mlme_priv (struct mlme_priv *pmlmepriv); diff --git a/include/wifi.h b/include/wifi.h index 324b45b..33a7e6c 100644 --- a/include/wifi.h +++ b/include/wifi.h @@ -730,7 +730,9 @@ enum ht_cap_ampdu_factor { * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2) */ #define IEEE80211_MIN_AMPDU_BUF 0x8 +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)) #define IEEE80211_MAX_AMPDU_BUF 0x40 +#endif /* Spatial Multiplexing Power Save Modes */ #define WLAN_HT_CAP_SM_PS_STATIC 0 diff --git a/os_dep/mlme_linux.c b/os_dep/mlme_linux.c index bdea9db..2ebaa45 100644 --- a/os_dep/mlme_linux.c +++ b/os_dep/mlme_linux.c @@ -24,23 +24,47 @@ #include #include +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void rtw_join_timeout_handler (void *FunctionContext) +#else +void rtw_join_timeout_handler (struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct adapter *adapter = (struct adapter *)FunctionContext; +#else + struct adapter *adapter = from_timer(adapter, t, mlmepriv.assoc_timer); +#endif _rtw_join_timeout_handler(adapter); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void _rtw_scan_timeout_handler (void *FunctionContext) +#else +void _rtw_scan_timeout_handler (struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct adapter *adapter = (struct adapter *)FunctionContext; +#else + struct adapter *adapter = from_timer(adapter, t, mlmepriv.scan_to_timer); +#endif rtw_scan_timeout_handler(adapter); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static void _dynamic_check_timer_handlder(void *FunctionContext) +#else +static void _dynamic_check_timer_handlder(struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct adapter *adapter = (struct adapter *)FunctionContext; +#else + struct adapter *adapter = from_timer(adapter, t, mlmepriv.dynamic_chk_timer); +#endif if (adapter->registrypriv.mp_mode == 1) return; @@ -52,9 +76,15 @@ void rtw_init_mlme_timer(struct adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) _init_timer(&(pmlmepriv->assoc_timer), padapter->pnetdev, rtw_join_timeout_handler, padapter); _init_timer(&(pmlmepriv->scan_to_timer), padapter->pnetdev, _rtw_scan_timeout_handler, padapter); _init_timer(&(pmlmepriv->dynamic_chk_timer), padapter->pnetdev, _dynamic_check_timer_handlder, padapter); +#else + timer_setup(&pmlmepriv->assoc_timer, rtw_join_timeout_handler, 0); + timer_setup(&pmlmepriv->scan_to_timer, _rtw_scan_timeout_handler, 0); + timer_setup(&pmlmepriv->dynamic_chk_timer, _dynamic_check_timer_handlder, 0); +#endif } void rtw_os_indicate_connect(struct adapter *adapter) @@ -156,36 +186,71 @@ void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, u8 *sec_ie) } } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static void _survey_timer_hdl(void *FunctionContext) +#else +static void _survey_timer_hdl(struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct adapter *padapter = (struct adapter *)FunctionContext; +#else + struct adapter *padapter = from_timer(padapter, t, mlmeextpriv.survey_timer); +#endif survey_timer_hdl(padapter); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static void _link_timer_hdl(void *FunctionContext) +#else +static void _link_timer_hdl(struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct adapter *padapter = (struct adapter *)FunctionContext; +#else + struct adapter *padapter = from_timer(padapter, t, mlmeextpriv.link_timer); +#endif + link_timer_hdl(padapter); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static void _addba_timer_hdl(void *FunctionContext) +#else +static void _addba_timer_hdl(struct timer_list *t) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) struct sta_info *psta = (struct sta_info *)FunctionContext; +#else + struct sta_info *psta = from_timer(psta, t, addba_retry_timer); +#endif + addba_timer_hdl(psta); } void init_addba_retry_timer(struct adapter *padapter, struct sta_info *psta) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) _init_timer(&psta->addba_retry_timer, padapter->pnetdev, _addba_timer_hdl, psta); +#else + timer_setup(&psta->addba_retry_timer, _addba_timer_hdl, 0); +#endif } void init_mlme_ext_timer(struct adapter *padapter) { struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) _init_timer(&pmlmeext->survey_timer, padapter->pnetdev, _survey_timer_hdl, padapter); _init_timer(&pmlmeext->link_timer, padapter->pnetdev, _link_timer_hdl, padapter); +#else + timer_setup(&pmlmeext->survey_timer, _survey_timer_hdl, 0); + timer_setup(&pmlmeext->link_timer, _link_timer_hdl, 0); +#endif } #ifdef CONFIG_88EU_AP_MODE diff --git a/os_dep/os_intfs.c b/os_dep/os_intfs.c index fadf117..0685304 100644 --- a/os_dep/os_intfs.c +++ b/os_dep/os_intfs.c @@ -652,7 +652,12 @@ static unsigned int rtw_classify8021d(struct sk_buff *skb) } static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)) + ,struct net_device *sb_dev +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) + ,struct net_device *sb_dev + ,select_queue_fallback_t fallback +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) ,void *unused ,select_queue_fallback_t fallback #elif (LINUX_VERSION_CODE == KERNEL_VERSION(3, 13, 0)) diff --git a/os_dep/recv_linux.c b/os_dep/recv_linux.c index c020147..2200542 100644 --- a/os_dep/recv_linux.c +++ b/os_dep/recv_linux.c @@ -242,11 +242,20 @@ void rtw_os_read_port(struct adapter *padapter, struct recv_buf *precvbuf) (unsigned char *)precvbuf); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) static void _rtw_reordering_ctrl_timeout_handler(void *func_context) +#else +static void _rtw_reordering_ctrl_timeout_handler(struct timer_list *t) +#endif { struct recv_reorder_ctrl *preorder_ctrl; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) preorder_ctrl = (struct recv_reorder_ctrl *)func_context; +#else + preorder_ctrl = from_timer(preorder_ctrl, t, reordering_ctrl_timer); +#endif + rtw_reordering_ctrl_timeout_handler(preorder_ctrl); } @@ -254,5 +263,9 @@ void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) { struct adapter *padapter = preorder_ctrl->padapter; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl); +#else + timer_setup(&preorder_ctrl->reordering_ctrl_timer, _rtw_reordering_ctrl_timeout_handler, 0); +#endif } diff --git a/os_dep/rtw_android.c b/os_dep/rtw_android.c index b853018..a20d900 100644 --- a/os_dep/rtw_android.c +++ b/os_dep/rtw_android.c @@ -181,7 +181,11 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) ret = -ENOMEM; goto exit; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) + if (!access_ok(priv_cmd.buf, priv_cmd.total_len)) { +#else if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)) { +#endif DBG_88E("%s: failed to access memory\n", __func__); ret = -EFAULT; goto exit;