diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c index 2ad2b19..dbca8e5 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c @@ -106,7 +106,7 @@ void tcp_ack_deinit(struct rwnx_hw *priv) drop_msg = NULL; write_seqlock_bh(&ack_m->ack_info[i].seqlock); - del_timer(&ack_m->ack_info[i].timer); + timer_delete(&ack_m->ack_info[i].timer); drop_msg = ack_m->ack_info[i].msgbuf; ack_m->ack_info[i].msgbuf = NULL; write_sequnlock_bh(&ack_m->ack_info[i].seqlock); @@ -375,7 +375,7 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, //printk("%lx \n",ack_info->msgbuf); drop_msg = ack_info->msgbuf; ack_info->msgbuf = NULL; - del_timer(&ack_info->timer); + timer_delete(&ack_info->timer); }else{ //printk("msgbuf is NULL \n"); } @@ -409,7 +409,7 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, atomic_read(&ack_m->max_drop_cnt)))) { ack_info->drop_cnt = 0; ack_info->in_send_msg = new_msgbuf; - del_timer(&ack_info->timer); + timer_delete(&ack_info->timer); } else { ret = 1; ack_info->msgbuf = new_msgbuf; @@ -472,7 +472,7 @@ int tcp_ack_handle_new(struct msg_buf *new_msgbuf, ack_info->drop_cnt = 0; send_msg = new_msgbuf; ack_info->in_send_msg = send_msg; - del_timer(&ack_info->timer); + timer_delete(&ack_info->timer); }else{ ret = 1; ack_info->msgbuf = new_msgbuf; diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c index 679ee83..ce90485 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c @@ -123,7 +123,7 @@ int aicwf_bus_init(uint bus_hdrlen, struct device *dev) #if 1 //waiting for rx/tx thread init finish -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) while(bus_if->busrx_thread->__state != TASK_INTERRUPTIBLE || bus_if->bustx_thread->__state != TASK_INTERRUPTIBLE) #else diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c index bc2d087..e2f4efa 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c @@ -1244,7 +1244,7 @@ int usb_bustx_thread(void *data) int set_cpu_ret = 0; #ifdef CONFIG_THREAD_INFO_IN_TASK -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->thread_info.cpu); #else AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->cpu); @@ -1253,7 +1253,7 @@ int usb_bustx_thread(void *data) set_cpu_ret = set_cpus_allowed_ptr(current, cpumask_of(1)); #ifdef CONFIG_THREAD_INFO_IN_TASK AICWFDBG(LOGINFO, "%s set_cpu_ret is:%d\n", __func__, set_cpu_ret); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) AICWFDBG(LOGINFO, "%s change cpu to:%d\n", __func__, current->thread_info.cpu); #else AICWFDBG(LOGINFO, "%s change cpu to:%d\n", __func__, current->cpu); @@ -1311,7 +1311,7 @@ int usb_busrx_thread(void *data) int set_cpu_ret = 0; #ifdef CONFIG_THREAD_INFO_IN_TASK -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->thread_info.cpu); #else AICWFDBG(LOGINFO, "%s the cpu is:%d\n", __func__, current->cpu); @@ -1320,7 +1320,7 @@ int usb_busrx_thread(void *data) set_cpu_ret = set_cpus_allowed_ptr(current, cpumask_of(1)); #ifdef CONFIG_THREAD_INFO_IN_TASK AICWFDBG(LOGINFO, "%s set_cpu_ret is:%d\n", __func__, set_cpu_ret); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) AICWFDBG(LOGINFO, "%s change cpu to:%d\n", __func__, current->thread_info.cpu); #else AICWFDBG(LOGINFO, "%s change cpu to:%d\n", __func__, current->cpu); diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_compat.h b/drivers/aic8800/aic8800_fdrv/rwnx_compat.h index f088f9c..8f0d365 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_compat.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_compat.h @@ -27,6 +27,77 @@ #error "Minimum kernel version supported is 3.10" #endif +/* Kernel 6.x compatibility fixes */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) +/* cfg80211_ch_switch_notify signature changed in kernel 6.0 */ +#define cfg80211_ch_switch_notify(dev, chandef, count) \ + cfg80211_ch_switch_notify(dev, chandef, count) + +/* ieee80211_amsdu_to_8023s signature changed in kernel 6.3 */ +#define ieee80211_amsdu_to_8023s(skb, list, addr, iftype, extra_headroom, check_da, check_sa, amsdu) \ + ieee80211_amsdu_to_8023s(skb, list, addr, iftype, extra_headroom, check_da, check_sa, amsdu) + +/* cfg80211_change_beacon signature changed in kernel 6.8 */ +#define cfg80211_change_beacon(wiphy, dev, info) \ + cfg80211_change_beacon(wiphy, dev, info) + +/* Thread info access changed in kernel 6.x */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) +#define CURRENT_CPU current->thread_info.cpu +#else +#define CURRENT_CPU current->cpu +#endif + +/* sched_set_fifo_low availability check */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) +#define SCHED_FIFO_LOW_AVAILABLE 1 +#else +#define SCHED_FIFO_LOW_AVAILABLE 0 +#endif + +/* Task state access changed in kernel 6.x */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) +#define TASK_STATE_ACCESS(task) task->__state +#else +#define TASK_STATE_ACCESS(task) task->state +#endif + +/* sched_set_fifo_low function availability */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) +#define sched_set_fifo_low(task) sched_set_fifo_low(task) +#else +#define sched_set_fifo_low(task) do { \ + struct sched_param param = { .sched_priority = 1 }; \ + sched_setscheduler(task, SCHED_FIFO, ¶m); \ +} while (0) +#endif + +/* IEEE80211_HE_PHY_CAP3 and IEEE80211_HE_PHY_CAP6 availability - only define if not already defined */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0) +#ifndef IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM +#define IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM 0x01 +#endif +#ifndef IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 +#define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 0x02 +#endif +#ifndef IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU +#define IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU 0x04 +#endif +#ifndef IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU +#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU 0x01 +#endif +#ifndef IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU +#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU 0x02 +#endif +#ifndef IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB +#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB 0x04 +#endif +#ifndef IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB +#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB 0x08 +#endif +#endif +#endif + /* Generic */ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) #define __bf_shf(x) (__builtin_ffsll(x) - 1) diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_defs.h b/drivers/aic8800/aic8800_fdrv/rwnx_defs.h index 8437fe8..607e172 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_defs.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_defs.h @@ -66,11 +66,15 @@ #define HIGH_KERNEL_VERSION2 KERNEL_VERSION(5, 15, 41) #define HIGH_KERNEL_VERSION3 KERNEL_VERSION(5, 15, 104) #define HIGH_KERNEL_VERSION4 KERNEL_VERSION(6, 1, 0) +#define HIGH_KERNEL_VERSION5 KERNEL_VERSION(6, 3, 0) +#define HIGH_KERNEL_VERSION6 KERNEL_VERSION(6, 8, 0) #else #define HIGH_KERNEL_VERSION KERNEL_VERSION(6, 0, 0) #define HIGH_KERNEL_VERSION2 KERNEL_VERSION(6, 1, 0) #define HIGH_KERNEL_VERSION3 KERNEL_VERSION(6, 3, 0) #define HIGH_KERNEL_VERSION4 KERNEL_VERSION(6, 3, 0) +#define HIGH_KERNEL_VERSION5 KERNEL_VERSION(6, 8, 0) +#define HIGH_KERNEL_VERSION6 KERNEL_VERSION(6, 9, 0) #endif #ifndef IEEE80211_MAX_AMPDU_BUF diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_main.c b/drivers/aic8800/aic8800_fdrv/rwnx_main.c index 8c5eebc..be14018 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_main.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_main.c @@ -1948,7 +1948,7 @@ void aicwf_p2p_alive_timeout(struct timer_list *t) rwnx_vif = (struct rwnx_vif *)data; rwnx_hw = rwnx_vif->rwnx_hw; #else - rwnx_hw = from_timer(rwnx_hw, t, p2p_alive_timer); + rwnx_hw = container_of(t, struct rwnx_hw, p2p_alive_timer); rwnx_vif = rwnx_hw->p2p_dev_vif; #endif @@ -2195,7 +2195,7 @@ static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wde #if 0 if (rwnx_vif == rwnx_hw->p2p_dev_vif) { if (timer_pending(&rwnx_hw->p2p_alive_timer)) { - del_timer_sync(&rwnx_hw->p2p_alive_timer); + timer_delete_sync(&rwnx_hw->p2p_alive_timer); } } #endif @@ -2444,7 +2444,7 @@ static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev if (rwnx_vif == rwnx_hw->p2p_dev_vif) { rwnx_hw->is_p2p_alive = 0; if (timer_pending(&rwnx_hw->p2p_alive_timer)) { - del_timer_sync(&rwnx_hw->p2p_alive_timer); + timer_delete_sync(&rwnx_hw->p2p_alive_timer); } if (rwnx_vif->up) { rwnx_send_remove_if(rwnx_hw, rwnx_vif->vif_index, true); @@ -3725,7 +3725,7 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, * @change_beacon: Change the beacon parameters for an access point mode * interface. This should reject the call when AP mode wasn't started. */ -#if LINUX_VERSION_CODE > KERNEL_VERSION(6, 7, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0) static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_update *info) #else @@ -3745,7 +3745,7 @@ static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *d elem.dma_addr = 0; // Build the beacon -#if LINUX_VERSION_CODE > KERNEL_VERSION(6, 7, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0) buf = rwnx_build_bcn(bcn, &info->beacon); #else buf = rwnx_build_bcn(bcn, info); @@ -3842,6 +3842,7 @@ cfg80211_chandef_identical(const struct cfg80211_chan_def *chandef1, #endif static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, + struct net_device *dev, struct cfg80211_chan_def *chandef) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -4367,7 +4368,7 @@ static int rwnx_cfg80211_get_channel(struct wiphy *wiphy, if (rwnx_vif->vif_index == rwnx_hw->monitor_vif) { //retrieve channel from firmware - rwnx_cfg80211_set_monitor_channel(wiphy, NULL); + rwnx_cfg80211_set_monitor_channel(wiphy, NULL, NULL); } //Check if channel context is valid @@ -4547,11 +4548,12 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, static int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_chan_def *chandef - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) - , u32 cac_time_ms + struct cfg80211_chan_def *chandef, + u32 cac_time_ms + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) + , int radar_cac_time_ms #endif - ) + ) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -8540,7 +8542,7 @@ static void __exit rwnx_mod_exit(void) module_init(rwnx_mod_init); module_exit(rwnx_mod_exit); #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) -MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); +// MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); #endif MODULE_FIRMWARE(RWNX_CONFIG_FW_NAME); diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c b/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c index 661b5a9..d0a59e4 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c @@ -1222,7 +1222,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; @@ -1238,7 +1238,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | @@ -1352,7 +1352,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; @@ -1368,7 +1368,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | @@ -1466,7 +1466,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; @@ -1482,7 +1482,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_radar.c b/drivers/aic8800/aic8800_fdrv/rwnx_radar.c index e6dc578..02989bf 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_radar.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_radar.c @@ -1399,7 +1399,7 @@ static void rwnx_radar_cac_work(struct work_struct *ws) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) &ctxt->chan_def, #endif - NL80211_RADAR_CAC_FINISHED, GFP_KERNEL); + NL80211_RADAR_CAC_FINISHED, GFP_KERNEL, 0); rwnx_send_apm_stop_cac_req(rwnx_hw, radar->cac_vif); rwnx_chanctx_unlink(radar->cac_vif); @@ -1499,7 +1499,7 @@ void rwnx_radar_cancel_cac(struct rwnx_radar *radar) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) &ctxt->chan_def, #endif - NL80211_RADAR_CAC_ABORTED, GFP_KERNEL); + NL80211_RADAR_CAC_ABORTED, GFP_KERNEL, 0); rwnx_chanctx_unlink(radar->cac_vif); } diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_rx.c b/drivers/aic8800/aic8800_fdrv/rwnx_rx.c index e1b08d6..ea0e513 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_rx.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_rx.c @@ -1426,7 +1426,7 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) preorder_ctrl->enable = false; spin_unlock_irqrestore(&preorder_ctrl->reord_list_lock, flags); if (timer_pending(&preorder_ctrl->reord_timer)) - ret = del_timer_sync(&preorder_ctrl->reord_timer); + ret = timer_delete_sync(&preorder_ctrl->reord_timer); cancel_work_sync(&preorder_ctrl->reord_timer_work); return 0; @@ -1452,7 +1452,7 @@ void reord_deinit_sta(struct aicwf_rx_priv* rx_priv, struct reord_ctrl_info *reo if(preorder_ctrl->enable){ preorder_ctrl->enable = false; if (timer_pending(&preorder_ctrl->reord_timer)) { - ret = del_timer_sync(&preorder_ctrl->reord_timer); + ret = timer_delete_sync(&preorder_ctrl->reord_timer); } cancel_work_sync(&preorder_ctrl->reord_timer_work); } @@ -1664,7 +1664,7 @@ void reord_timeout_handler (struct timer_list *t) #if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0) struct reord_ctrl *preorder_ctrl = (struct reord_ctrl *)data; #else - struct reord_ctrl *preorder_ctrl = from_timer(preorder_ctrl, t, reord_timer); + struct reord_ctrl *preorder_ctrl = container_of(t, struct reord_ctrl, reord_timer); #endif AICWFDBG(LOGTRACE, "%s Enter \r\n", __func__); @@ -1831,7 +1831,7 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s } } else { if(timer_pending(&preorder_ctrl->reord_timer)) { - ret = del_timer(&preorder_ctrl->reord_timer); + ret = timer_delete(&preorder_ctrl->reord_timer); } } diff --git a/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c b/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c index be05052..100a14b 100644 --- a/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c +++ b/drivers/aic8800/aic_load_fw/aic_bluetooth_main.c @@ -70,7 +70,7 @@ module_init(aic_bluetooth_mod_init); module_exit(aic_bluetooth_mod_exit); #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) -MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); +// MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); #endif MODULE_FIRMWARE(DRV_CONFIG_FW_NAME);