diff --git a/lib/functions/compilation/patch/drivers_network.sh b/lib/functions/compilation/patch/drivers_network.sh index fda260b30..3e60118a4 100644 --- a/lib/functions/compilation/patch/drivers_network.sh +++ b/lib/functions/compilation/patch/drivers_network.sh @@ -245,6 +245,8 @@ driver_xradio_xr819() { >> "$kerneldir/drivers/net/wireless/Makefile" sed -i '/source "drivers\/net\/wireless\/ti\/Kconfig"/a source "drivers\/net\/wireless\/xradio\/Kconfig"' \ "$kerneldir/drivers/net/wireless/Kconfig" + + process_patch_file "${SRC}/patch/misc/xradio-Switching-from-del_timer_sync-to-timer_delete_sync.patch" "applying" fi } diff --git a/patch/misc/xradio-Switching-from-del_timer_sync-to-timer_delete_sync.patch b/patch/misc/xradio-Switching-from-del_timer_sync-to-timer_delete_sync.patch new file mode 100644 index 000000000..748050302 --- /dev/null +++ b/patch/misc/xradio-Switching-from-del_timer_sync-to-timer_delete_sync.patch @@ -0,0 +1,123 @@ +From 4cec41678369fae41c37ccfecaa4e0eadc04f472 Mon Sep 17 00:00:00 2001 +From: The-going <48602507+The-going@users.noreply.github.com> +Date: Sat, 7 Jun 2025 17:00:14 +0000 +Subject: xradio: Switching from del_timer_sync to timer_delete_sync + +This was introduced in 6.2 but was removed from the kernel code +in 6.15. +We are currently building cores for sunxi starting from 6.6. +Therefore, a simple replacement without conditions. + +Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> +--- + drivers/net/wireless/xradio/ap.c | 4 ++-- + drivers/net/wireless/xradio/main.c | 2 +- + drivers/net/wireless/xradio/pm.c | 2 +- + drivers/net/wireless/xradio/queue.c | 2 +- + drivers/net/wireless/xradio/sta.c | 8 ++++---- + 5 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/net/wireless/xradio/ap.c b/drivers/net/wireless/xradio/ap.c +index 649d6bf97674..266106322143 100644 +--- a/drivers/net/wireless/xradio/ap.c ++++ b/drivers/net/wireless/xradio/ap.c +@@ -874,7 +874,7 @@ void xradio_multicast_stop_work(struct work_struct *work) + container_of(work, struct xradio_vif, multicast_stop_work); + + if (priv->aid0_bit_set) { +- del_timer_sync(&priv->mcast_timeout); ++ timer_delete_sync(&priv->mcast_timeout); + wsm_lock_tx(priv->hw_priv); + priv->aid0_bit_set = false; + xradio_set_tim_impl(priv, false); +@@ -954,7 +954,7 @@ void xradio_suspend_resume(struct xradio_vif *priv, struct wsm_suspend_resume *a + } + spin_unlock_bh(&priv->ps_state_lock); + if (cancel_tmo) +- del_timer_sync(&priv->mcast_timeout); ++ timer_delete_sync(&priv->mcast_timeout); + } else { + spin_lock_bh(&priv->ps_state_lock); + xradio_ps_notify(priv, arg->link_id, arg->stop); +diff --git a/drivers/net/wireless/xradio/main.c b/drivers/net/wireless/xradio/main.c +index a30c604f5337..902c173c03e8 100644 +--- a/drivers/net/wireless/xradio/main.c ++++ b/drivers/net/wireless/xradio/main.c +@@ -440,7 +440,7 @@ void xradio_free_common(struct ieee80211_hw *dev) + struct xradio_common *hw_priv = dev->priv; + + cancel_work_sync(&hw_priv->query_work); +- del_timer_sync(&hw_priv->ba_timer); ++ timer_delete_sync(&hw_priv->ba_timer); + mutex_destroy(&hw_priv->wsm_oper_lock); + mutex_destroy(&hw_priv->conf_mutex); + mutex_destroy(&hw_priv->wsm_cmd_mux); +diff --git a/drivers/net/wireless/xradio/pm.c b/drivers/net/wireless/xradio/pm.c +index 0a7bd14b5c8c..85ca676d69ad 100644 +--- a/drivers/net/wireless/xradio/pm.c ++++ b/drivers/net/wireless/xradio/pm.c +@@ -291,7 +291,7 @@ int xradio_pm_init(struct xradio_pm_state *pm, + + void xradio_pm_deinit(struct xradio_pm_state *pm) + { +- del_timer_sync(&pm->stay_awake); ++ timer_delete_sync(&pm->stay_awake); + xradio_pm_deinit_common(pm); + } + +diff --git a/drivers/net/wireless/xradio/queue.c b/drivers/net/wireless/xradio/queue.c +index 1bb7f0e90330..103259f4d869 100644 +--- a/drivers/net/wireless/xradio/queue.c ++++ b/drivers/net/wireless/xradio/queue.c +@@ -328,7 +328,7 @@ void xradio_queue_deinit(struct xradio_queue *queue) + int i; + + xradio_queue_clear(queue, XRWL_ALL_IFS); +- del_timer_sync(&queue->gc); ++ timer_delete_sync(&queue->gc); + INIT_LIST_HEAD(&queue->free_pool); + kfree(queue->pool); + for (i = 0; i < XRWL_MAX_VIFS; i++) { +diff --git a/drivers/net/wireless/xradio/sta.c b/drivers/net/wireless/xradio/sta.c +index 2dddb26a905d..53013de18743 100644 +--- a/drivers/net/wireless/xradio/sta.c ++++ b/drivers/net/wireless/xradio/sta.c +@@ -139,7 +139,7 @@ void xradio_stop(struct ieee80211_hw *dev) + cancel_delayed_work_sync(&hw_priv->scan.probe_work); + cancel_delayed_work_sync(&hw_priv->scan.timeout); + flush_workqueue(hw_priv->workqueue); +- del_timer_sync(&hw_priv->ba_timer); ++ timer_delete_sync(&hw_priv->ba_timer); + + mutex_lock(&hw_priv->conf_mutex); + +@@ -169,7 +169,7 @@ void xradio_stop(struct ieee80211_hw *dev) + cancel_delayed_work_sync(&priv->bss_loss_work); + cancel_delayed_work_sync(&priv->connection_loss_work); + cancel_delayed_work_sync(&priv->link_id_gc_work); +- del_timer_sync(&priv->mcast_timeout); ++ timer_delete_sync(&priv->mcast_timeout); + } + + wsm_unlock_tx(hw_priv); +@@ -329,7 +329,7 @@ void xradio_remove_interface(struct ieee80211_hw *dev, + cancel_delayed_work_sync(&priv->set_cts_work); + cancel_delayed_work_sync(&priv->pending_offchanneltx_work); + +- del_timer_sync(&priv->mcast_timeout); ++ timer_delete_sync(&priv->mcast_timeout); + /* TODO:COMBO: May be reset of these variables "delayed_link_loss and + * join_status to default can be removed as dev_priv will be freed by + * mac80211 */ +@@ -1571,7 +1571,7 @@ void xradio_unjoin_work(struct work_struct *work) + priv->ht_compat_cnt = 0; + #endif + +- del_timer_sync(&hw_priv->ba_timer); ++ timer_delete_sync(&hw_priv->ba_timer); + mutex_lock(&hw_priv->conf_mutex); + if (unlikely(atomic_read(&hw_priv->scan.in_progress))) { + if (atomic_xchg(&priv->delayed_unjoin, 1)) { +-- +2.34.1 +