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@makrotopia.org>
Link: https://github.com/openwrt/openwrt/pull/15811
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Daniel Golle 2024-06-28 03:06:08 +01:00 committed by Hauke Mehrtens
parent 289f0ef403
commit 8a40d49a56
3 changed files with 99 additions and 1 deletions

View File

@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=drv_tapi PKG_NAME:=drv_tapi
PKG_VERSION:=3.13.0 PKG_VERSION:=3.13.0
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@OPENWRT PKG_SOURCE_URL:=@OPENWRT

View File

@ -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 */

View File

@ -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;