rockchip64: bump edge to 6.16-rc3 (#8328)

* Fix wifi drivers on kernel v6.16

These patches can get deleted after merged upstream.

* initial commit

* fix header

* remove ssv6051 driver

---------

Co-authored-by: amazingfate <liujianfeng1994@gmail.com>
This commit is contained in:
Werner
2025-06-24 15:25:34 +00:00
committed by GitHub
parent 530fbc86e8
commit fa9302f162
274 changed files with 785 additions and 50493 deletions

View File

@@ -0,0 +1,16 @@
diff --git a/drivers/net/wireless/rtl8189es/include/osdep_service_linux.h b/drivers/net/wireless/rtl8189es/include/osdep_service_linux.h
index 55df7069010..b33f3416159 100644
--- a/drivers/net/wireless/rtl8189es/include/osdep_service_linux.h
+++ b/drivers/net/wireless/rtl8189es/include/osdep_service_linux.h
@@ -370,7 +370,11 @@ static inline void timer_hdl(unsigned long cntx)
#endif
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _timer *ptimer = timer_container_of(ptimer, in_timer, timer);
+#else
_timer *ptimer = from_timer(ptimer, in_timer, timer);
+#endif
#else
_timer *ptimer = (_timer *)cntx;
#endif

View File

@@ -0,0 +1,16 @@
diff --git a/drivers/net/wireless/rtl8192eu/include/osdep_service_linux.h b/drivers/net/wireless/rtl8192eu/include/osdep_service_linux.h
index 1146d8d77d2..6a9f9d7a704 100644
--- a/drivers/net/wireless/rtl8192eu/include/osdep_service_linux.h
+++ b/drivers/net/wireless/rtl8192eu/include/osdep_service_linux.h
@@ -360,7 +360,11 @@ static inline void timer_hdl(unsigned long cntx)
#endif
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _timer *ptimer = timer_container_of(ptimer, in_timer, timer);
+#else
_timer *ptimer = from_timer(ptimer, in_timer, timer);
+#endif
#else
_timer *ptimer = (_timer *)cntx;
#endif

View File

@@ -0,0 +1,280 @@
diff --git a/drivers/net/wireless/rtl8723ds/core/rtw_p2p.c b/drivers/net/wireless/rtl8723ds/core/rtw_p2p.c
index 17cd93a1819..4e1bf442b6a 100644
--- a/drivers/net/wireless/rtl8723ds/core/rtw_p2p.c
+++ b/drivers/net/wireless/rtl8723ds/core/rtw_p2p.c
@@ -3377,7 +3377,11 @@ static void ro_ch_timer_process(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.reset_ch_sitesurvey);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -4534,7 +4538,11 @@ static void reset_ch_sitesurvey_timer_process(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.reset_ch_sitesurvey2);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey2);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -4561,7 +4569,11 @@ static void reset_ch_sitesurvey_timer_process2 (void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.reset_ch_sitesurvey2);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey2);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -4588,7 +4600,11 @@ static void restore_p2p_state_timer_process (void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.restore_p2p_state_timer);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.restore_p2p_state_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -4607,7 +4623,11 @@ static void pre_tx_scan_timer_process(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.pre_tx_scan_timer);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.pre_tx_scan_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -4648,8 +4668,12 @@ static void find_phase_timer_process(struct timer_list *t)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
_adapter *adapter = (_adapter *)FunctionContext;
+#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.find_phase_timer);
#else
_adapter *adapter = from_timer(adapter, t, wdinfo.find_phase_timer);
+#endif
#endif
struct wifidirect_info *pwdinfo = &adapter->wdinfo;
@@ -4669,7 +4693,11 @@ void ap_p2p_switch_timer_process (void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, wdinfo.ap_p2p_switch_timer);
+#else
_adapter *adapter = from_timer(adapter, t, wdinfo.ap_p2p_switch_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
diff --git a/drivers/net/wireless/rtl8723ds/core/rtw_pwrctrl.c b/drivers/net/wireless/rtl8723ds/core/rtw_pwrctrl.c
index 2141d29f307..abef8c91b40 100644
--- a/drivers/net/wireless/rtl8723ds/core/rtw_pwrctrl.c
+++ b/drivers/net/wireless/rtl8723ds/core/rtw_pwrctrl.c
@@ -401,8 +401,12 @@ void pwr_state_check_handler(struct timer_list *t)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
_adapter *padapter = (_adapter *)FunctionContext;
+#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct pwrctrl_priv *pwrpriv = timer_container_of(pwrpriv, t, pwr_state_check_timer);
#else
struct pwrctrl_priv *pwrpriv = from_timer(pwrpriv, t, pwr_state_check_timer);
+#endif
_adapter *padapter = pwrpriv->padapter;
#endif
rtw_ps_cmd(padapter);
@@ -1455,8 +1459,12 @@ static void pwr_rpwm_timeout_handler(struct timer_list *t)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
PADAPTER padapter = (PADAPTER)FunctionContext;
struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
+#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct pwrctrl_priv *pwrpriv = timer_container_of(pwrpriv, t, pwr_rpwm_timer);
#else
struct pwrctrl_priv *pwrpriv = from_timer(pwrpriv, t, pwr_rpwm_timer);
+#endif
#endif
RTW_INFO("+%s: rpwm=0x%02X cpwm=0x%02X\n", __func__, pwrpriv->rpwm, pwrpriv->cpwm);
diff --git a/drivers/net/wireless/rtl8723ds/core/rtw_recv.c b/drivers/net/wireless/rtl8723ds/core/rtw_recv.c
index e2f29d213f7..bfc6df6250a 100644
--- a/drivers/net/wireless/rtl8723ds/core/rtw_recv.c
+++ b/drivers/net/wireless/rtl8723ds/core/rtw_recv.c
@@ -4186,8 +4186,12 @@ void rtw_signal_stat_timer_hdl(struct timer_list *t)
{
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0))
_adapter *adapter = (_adapter *)FunctionContext;
+#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, recvpriv.signal_stat_timer);
#else
_adapter *adapter = from_timer(adapter, t, recvpriv.signal_stat_timer);
+#endif
#endif
struct recv_priv *recvpriv = &adapter->recvpriv;
diff --git a/drivers/net/wireless/rtl8723ds/hal/led/hal_sdio_led.c b/drivers/net/wireless/rtl8723ds/hal/led/hal_sdio_led.c
index bda1d421c84..b294a14288b 100644
--- a/drivers/net/wireless/rtl8723ds/hal/led/hal_sdio_led.c
+++ b/drivers/net/wireless/rtl8723ds/hal/led/hal_sdio_led.c
@@ -826,7 +826,11 @@ void BlinkTimerCallback(void *data)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ PLED_SDIO pLed = timer_container_of(pLed, t, BlinkTimer);
+#else
PLED_SDIO pLed = from_timer(pLed, t, BlinkTimer);
+#endif
#else
PLED_SDIO pLed = (PLED_SDIO)data;
#endif
diff --git a/drivers/net/wireless/rtl8723ds/os_dep/linux/mlme_linux.c b/drivers/net/wireless/rtl8723ds/os_dep/linux/mlme_linux.c
index 6509df0aec4..985102bf887 100644
--- a/drivers/net/wireless/rtl8723ds/os_dep/linux/mlme_linux.c
+++ b/drivers/net/wireless/rtl8723ds/os_dep/linux/mlme_linux.c
@@ -75,7 +75,11 @@ void rtw_join_timeout_handler(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, mlmepriv.assoc_timer);
+#else
_adapter *adapter = from_timer(adapter, t, mlmepriv.assoc_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -90,7 +94,11 @@ void _rtw_scan_timeout_handler(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, mlmepriv.scan_to_timer);
+#else
_adapter *adapter = from_timer(adapter, t, mlmepriv.scan_to_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -105,7 +113,11 @@ void _dynamic_check_timer_handlder(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct dvobj_priv *pdvobj = timer_container_of(pdvobj, t, dynamic_chk_timer);
+#else
struct dvobj_priv *pdvobj = from_timer(pdvobj, t, dynamic_chk_timer);
+#endif
#else
struct dvobj_priv *pdvobj = (struct dvobj_priv *)FunctionContext;
#endif
@@ -132,7 +144,11 @@ void _rtw_set_scan_deny_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *adapter = timer_container_of(adapter, t, mlmepriv.set_scan_deny_timer);
+#else
_adapter *adapter = from_timer(adapter, t, mlmepriv.set_scan_deny_timer);
+#endif
#else
_adapter *adapter = (_adapter *)FunctionContext;
#endif
@@ -350,7 +366,11 @@ void _survey_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *padapter = timer_container_of(padapter, t, mlmeextpriv.survey_timer);
+#else
_adapter *padapter = from_timer(padapter, t, mlmeextpriv.survey_timer);
+#endif
#else
_adapter *padapter = (_adapter *)FunctionContext;
#endif
@@ -365,7 +385,11 @@ void _link_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *padapter = timer_container_of(padapter, t, mlmeextpriv.link_timer);
+#else
_adapter *padapter = from_timer(padapter, t, mlmeextpriv.link_timer);
+#endif
#else
_adapter *padapter = (_adapter *)FunctionContext;
#endif
@@ -380,7 +404,11 @@ void _ft_link_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *padapter = timer_container_of(padapter, t, mlmeextpriv.ft_link_timer);
+#else
_adapter *padapter = from_timer(padapter, t, mlmeextpriv.ft_link_timer);
+#endif
#else
_adapter *padapter = (_adapter *)FunctionContext;
#endif
@@ -395,7 +423,11 @@ void _ft_roam_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ _adapter *padapter = timer_container_of(padapter, t, mlmeextpriv.ft_roam_timer);
+#else
_adapter *padapter = from_timer(padapter, t, mlmeextpriv.ft_roam_timer);
+#endif
#else
_adapter *padapter = (_adapter *)FunctionContext;
#endif
@@ -411,7 +443,11 @@ void _addba_timer_hdl(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct sta_info *psta = timer_container_of(psta, t, addba_retry_timer);
+#else
struct sta_info *psta = from_timer(psta, t, addba_retry_timer);
+#endif
#else
struct sta_info *psta = (struct sta_info *)FunctionContext;
#endif
diff --git a/drivers/net/wireless/rtl8723ds/os_dep/linux/recv_linux.c b/drivers/net/wireless/rtl8723ds/os_dep/linux/recv_linux.c
index dd64495b792..49b9a70e72d 100644
--- a/drivers/net/wireless/rtl8723ds/os_dep/linux/recv_linux.c
+++ b/drivers/net/wireless/rtl8723ds/os_dep/linux/recv_linux.c
@@ -866,7 +866,11 @@ void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct recv_reorder_ctrl *preorder_ctrl = timer_container_of(preorder_ctrl, t, reordering_ctrl_timer);
+#else
struct recv_reorder_ctrl *preorder_ctrl = from_timer(preorder_ctrl, t, reordering_ctrl_timer);
+#endif
#else
struct recv_reorder_ctrl *preorder_ctrl = (struct recv_reorder_ctrl *)FunctionContext;
#endif

View File

@@ -0,0 +1,196 @@
diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
index adfa41507d0..70909e98324 100644
--- a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
+++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
@@ -113,20 +113,24 @@ int bluesleep_init(void)
retval = -ENOMEM;
goto fail;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
tx_ws = wakeup_source_create("BT_TX_wakelock");
rx_ws = wakeup_source_create("BT_RX_wakelock");
wakeup_source_add(tx_ws);
wakeup_source_add(rx_ws);
+#endif
return 0;
fail:
remove_proc_entry("btwrite", sleep_dir);
remove_proc_entry("sleep", bluetooth_dir);
remove_proc_entry("bluetooth", 0);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
wakeup_source_remove(tx_ws);
wakeup_source_remove(rx_ws);
wakeup_source_destroy(tx_ws);
wakeup_source_destroy(rx_ws);
+#endif
return retval;
}
@@ -136,10 +140,12 @@ void bluesleep_exit(void)
remove_proc_entry("btwrite", sleep_dir);
remove_proc_entry("sleep", bluetooth_dir);
remove_proc_entry("bluetooth", 0);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
wakeup_source_remove(tx_ws);
wakeup_source_remove(rx_ws);
wakeup_source_destroy(tx_ws);
wakeup_source_destroy(rx_ws);
+#endif
}
/*module_init(bluesleep_init);*/
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c
index 2fd7f39888a..b577ee560b4 100644
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c
@@ -302,9 +302,11 @@ int mdbg_ring_init(void)
return -MDBG_ERR_MALLOC_FAIL;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
/*wakeup_source pointer*/
ring_dev->rw_wake_lock = wakeup_source_create("mdbg_wake_lock");
wakeup_source_add(ring_dev->rw_wake_lock);
+#endif
spin_lock_init(&ring_dev->rw_lock);
mutex_init(&ring_dev->mdbg_read_mutex);
@@ -332,9 +334,11 @@ void mdbg_ring_remove(void)
}
mutex_destroy(&ring_dev->mdbg_read_mutex);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
/*wakeup_source pointer*/
wakeup_source_remove(ring_dev->rw_wake_lock);
wakeup_source_destroy(ring_dev->rw_wake_lock);
+#endif
mdbg_ring_destroy(ring_dev->ring);
mdbg_dev->ring_dev = NULL;
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c
index 8dbf21437b5..cf38d8d31fd 100644
--- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c
@@ -254,6 +254,7 @@ void sdiohal_unlock_scan_ws(void)
void sdiohal_wakelock_init(void)
{
struct sdiohal_data_t *p_data = sdiohal_get_data();
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
/*wakeup_source pointer*/
p_data->tx_ws = wakeup_source_create("sdiohal_tx_wakelock");
wakeup_source_add(p_data->tx_ws);
@@ -261,18 +262,21 @@ void sdiohal_wakelock_init(void)
wakeup_source_add(p_data->rx_ws);
p_data->scan_ws = wakeup_source_create("sdiohal_scan_wakelock");
wakeup_source_add(p_data->scan_ws);
+#endif
}
void sdiohal_wakelock_deinit(void)
{
struct sdiohal_data_t *p_data = sdiohal_get_data();
/*wakeup_source pointer*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
wakeup_source_remove(p_data->tx_ws);
wakeup_source_destroy(p_data->tx_ws);
wakeup_source_remove(p_data->rx_ws);
wakeup_source_destroy(p_data->rx_ws);
wakeup_source_remove(p_data->scan_ws);
wakeup_source_destroy(p_data->scan_ws);
+#endif
}
/* for callback */
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c
index f3dec551e97..6b65e1bfdc5 100644
--- a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c
@@ -315,9 +315,11 @@ int sdio_pub_int_init(int irq)
atomic_set(&flag_pub_int_done, 1);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
/*wakeup_source pointer*/
sdio_int.pub_int_ws = wakeup_source_create("pub_int_ws");
wakeup_source_add(sdio_int.pub_int_ws);
+#endif
init_completion(&(sdio_int.pub_int_completion));
@@ -348,9 +350,11 @@ int sdio_pub_int_deinit(void)
disable_irq(sdio_int.pub_int_num);
free_irq(sdio_int.pub_int_num, NULL);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
/*wakeup_source pointer*/
wakeup_source_remove(sdio_int.pub_int_ws);
wakeup_source_destroy(sdio_int.pub_int_ws);
+#endif
SLP_MGR_INFO("%s ok!\n", __func__);
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
index 35e1317f137..0014d0946f3 100755
--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
@@ -1374,7 +1374,11 @@ void sprdwl_sched_scan_done(struct sprdwl_vif *vif, bool abort)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
void sprdwl_scan_timeout(struct timer_list *t)
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct sprdwl_priv *priv = timer_container_of(priv, t, scan_timer);
+#else
struct sprdwl_priv *priv = from_timer(priv, t, scan_timer);
+#endif
#else
void sprdwl_scan_timeout(unsigned long data)
{
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/qos.c b/drivers/net/wireless/uwe5622/unisocwifi/qos.c
index 4dc12e57764..426810c6976 100755
--- a/drivers/net/wireless/uwe5622/unisocwifi/qos.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/qos.c
@@ -708,7 +708,11 @@ void update_admitted_time(struct sprdwl_priv *priv, u8 tsid, u16 medium_time, bo
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
void update_wmmac_edcaftime_timeout(struct timer_list *t)
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct sprdwl_priv *priv = timer_container_of(priv, t, wmmac.wmmac_edcaf_timer);
+#else
struct sprdwl_priv *priv = from_timer(priv, t, wmmac.wmmac_edcaf_timer);
+#endif
#else
void update_wmmac_edcaftime_timeout(unsigned long data)
{
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/reorder.c b/drivers/net/wireless/uwe5622/unisocwifi/reorder.c
index 98e74d0450b..f95088560f5 100644
--- a/drivers/net/wireless/uwe5622/unisocwifi/reorder.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/reorder.c
@@ -926,7 +926,11 @@ get_first_seqno_in_buff(struct rx_ba_node_desc *ba_node_desc)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
static void ba_reorder_timeout(struct timer_list *t)
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ struct rx_ba_node *ba_node = timer_container_of(ba_node, t, reorder_timer);
+#else
struct rx_ba_node *ba_node = from_timer(ba_node, t, reorder_timer);
+#endif
#else
static void ba_reorder_timeout(unsigned long data)
{
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c b/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c
index 4abfa9d04e1..a8e824e5742 100644
--- a/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c
@@ -21,7 +21,11 @@ static void sprdwl_tcp_ack_timeout(unsigned long data)
struct sprdwl_tcp_ack_manage *ack_m = NULL;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
+ ack_info = (struct sprdwl_tcp_ack_info *)timer_container_of(ack_info, t, timer);
+#else
ack_info = (struct sprdwl_tcp_ack_info *)from_timer(ack_info, t, timer);
+#endif
#else
ack_info = (struct sprdwl_tcp_ack_info *)data;
#endif