[openwrt/openwrt] ltq-tapi: fix build with Linux 6.6
LEDE Commits
lede-commits at lists.infradead.org
Sat Jul 6 08:54:59 PDT 2024
hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8a40d49a563bac15fd61468d322c7aa875aefb3e
commit 8a40d49a563bac15fd61468d322c7aa875aefb3e
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Jun 28 03:06:08 2024 +0100
ltq-tapi: fix build with Linux 6.6
Satisfy compiler expectations in a hell of typedef's and get rid of
system-wide workqueue flush. Results in warning-free compile of the TAPI
driver also with Linux 6.6.
Signed-off-by: Daniel Golle <daniel at makrotopia.org>
Link: https://github.com/openwrt/openwrt/pull/15811
Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
package/kernel/lantiq/ltq-tapi/Makefile | 2 +-
.../patches/610-flush-only-local-workqueue.patch | 11 +++
.../patches/611-ifxos-typedef-madness.diff | 87 ++++++++++++++++++++++
3 files changed, 99 insertions(+), 1 deletion(-)
diff --git a/package/kernel/lantiq/ltq-tapi/Makefile b/package/kernel/lantiq/ltq-tapi/Makefile
index d44eeae565..41e0ccf816 100644
--- a/package/kernel/lantiq/ltq-tapi/Makefile
+++ b/package/kernel/lantiq/ltq-tapi/Makefile
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=drv_tapi
PKG_VERSION:=3.13.0
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@OPENWRT
diff --git a/package/kernel/lantiq/ltq-tapi/patches/610-flush-only-local-workqueue.patch b/package/kernel/lantiq/ltq-tapi/patches/610-flush-only-local-workqueue.patch
new file mode 100644
index 0000000000..a56f04d10e
--- /dev/null
+++ b/package/kernel/lantiq/ltq-tapi/patches/610-flush-only-local-workqueue.patch
@@ -0,0 +1,11 @@
+--- a/src/drv_tapi_linux.c
++++ b/src/drv_tapi_linux.c
+@@ -3351,7 +3351,7 @@ static void __exit ifx_tapi_module_exit(
+ /* as we are using work queues to schedule events from the interrupt
+ context to the process context, we use work queues in case of
+ Linux 2.6. they must be flushed on driver unload... */
+- flush_scheduled_work();
++ flush_workqueue(pTapiWq);
+ destroy_workqueue(pTapiWq);
+ #endif /* LINUX_2_6 */
+
diff --git a/package/kernel/lantiq/ltq-tapi/patches/611-ifxos-typedef-madness.diff b/package/kernel/lantiq/ltq-tapi/patches/611-ifxos-typedef-madness.diff
new file mode 100644
index 0000000000..a3cd2c4993
--- /dev/null
+++ b/package/kernel/lantiq/ltq-tapi/patches/611-ifxos-typedef-madness.diff
@@ -0,0 +1,87 @@
+--- a/src/drv_tapi_linux.c
++++ b/src/drv_tapi_linux.c
+@@ -274,7 +274,7 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
+ TRACE( TAPI_DRV, DBG_LEVEL_HIGH,
+ ("IFX_TAPI_Register_LL_Drv: unable to register chrdev major number "
+ "%d\n", majorNumber));
+- return TAPI_statusErr;
++ return IFX_ERROR;
+ }
+
+ #if 0
+@@ -290,7 +290,7 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
+ #endif /* LINUX_2_6 */
+ #endif /* 0 */
+
+- return TAPI_statusOk;
++ return IFX_SUCCESS;
+ }
+
+
+@@ -316,7 +316,7 @@ IFX_return_t TAPI_OS_UnregisterLLDrv (IF
+ {
+ unregister_chrdev (pLLDrvCtx->majorNumber, pHLDrvCtx->registeredDrvName);
+
+- return TAPI_statusOk;
++ return IFX_SUCCESS;
+ }
+
+
+@@ -3589,7 +3589,7 @@ static IFX_void_t Deferred_Worker (struc
+ */
+ IFX_return_t TAPI_DeferWork (IFX_void_t *pFunc, IFX_void_t *pParam)
+ {
+- IFX_return_t ret = TAPI_statusOk;
++ IFX_return_t ret = IFX_SUCCESS;
+ IFX_TAPI_EXT_EVENT_PARAM_t *pEvParam = (IFX_TAPI_EXT_EVENT_PARAM_t *) pParam;
+ #ifdef LINUX_2_6
+ struct work_struct *pTapiWs;
+@@ -3605,7 +3605,7 @@ IFX_return_t TAPI_DeferWork (IFX_void_t
+
+ if (queue_work (pTapiWq, pTapiWs) == 0)
+ {
+- ret = TAPI_statusWorkFail;
++ ret = IFX_ERROR;
+ }
+ #else
+ struct tq_struct *pTapiTq;
+@@ -3617,7 +3617,7 @@ IFX_return_t TAPI_DeferWork (IFX_void_t
+ pTapiTq->sync = 0;
+ if (schedule_task (pTapiTq) == 0)
+ {
+- ret = TAPI_statusWorkFail;
++ ret = IFX_ERROR;
+ }
+ #endif /* LINUX_2_6 */
+ return ret;
+--- a/src/drv_tapi_event.c
++++ b/src/drv_tapi_event.c
+@@ -1394,7 +1394,7 @@ IFX_return_t IFX_TAPI_Event_Dispatch (TA
+ pTapiDev->error.nCode =
+ (IFX_uint32_t)pTapiEvent->data.error->nLlCode;
+ }
+- return TAPI_statusOk;
++ return IFX_SUCCESS;
+ }
+
+ /* global irq lock - multiple drivers may be loaded and all share this
+@@ -2660,7 +2660,7 @@ IFX_return_t TAPI_EVENT_PKT_EV_Generate
+ /* start/stop generation of rfc 2833 pkt */
+ (IFX_void_t)pDrvCtx->COD.RTP_EV_Generate(pChannel->pLLChannel,
+ pPacketEvent->event,
+- pPacketEvent->action,
++ (IFX_boolean_t)pPacketEvent->action,
+ pPacketEvent->duration,
+ nVolume);
+ }
+--- a/src/drv_tapi_cid.c
++++ b/src/drv_tapi_cid.c
+@@ -2278,7 +2278,7 @@ static FSM_STATUS_t cid_fsm_ack_exec(TAP
+
+ memset(&tapiEvent, 0, sizeof(IFX_TAPI_EVENT_t));
+ tapiEvent.id = IFX_TAPI_EVENT_CID_TX_NOACK_ERR;
+- ret = IFX_TAPI_Event_Dispatch(pChannel,&tapiEvent);
++ ret = (FSM_STATUS_t)IFX_TAPI_Event_Dispatch(pChannel,&tapiEvent);
+ TRACE (TAPI_DRV,DBG_LEVEL_HIGH, ("no CID ack received!\n"));
+ }
+ ret = E_FSM_ERROR;
More information about the lede-commits
mailing list