aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/lantiq/ltq-vdsl-vr9/patches
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2022-07-15 14:32:59 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2022-09-17 17:39:23 +0200
commit07536cff513f38ea167c3b1d870d27f1d71a292d (patch)
treeca3d68f41ab213cd8c3a64d9755374cbc3c28d17 /package/kernel/lantiq/ltq-vdsl-vr9/patches
parent5d53b8e9f91c7e434861c30bb4d62ffe0c5b121e (diff)
downloadupstream-07536cff513f38ea167c3b1d870d27f1d71a292d.tar.gz
upstream-07536cff513f38ea167c3b1d870d27f1d71a292d.tar.bz2
upstream-07536cff513f38ea167c3b1d870d27f1d71a292d.zip
lantiq: rename ltq-vdsl folder to ltq-vdsl-vr9
Now PKG_NAME matches the folder name, and this will avoid confusion with any future version. Signed-off-by: Andre Heider <a.heider@gmail.com>
Diffstat (limited to 'package/kernel/lantiq/ltq-vdsl-vr9/patches')
-rw-r--r--package/kernel/lantiq/ltq-vdsl-vr9/patches/001-fix-compile.patch12
-rw-r--r--package/kernel/lantiq/ltq-vdsl-vr9/patches/020-not-leak-cflags.patch32
-rw-r--r--package/kernel/lantiq/ltq-vdsl-vr9/patches/100-compat.patch129
-rw-r--r--package/kernel/lantiq/ltq-vdsl-vr9/patches/110-semaphore-lock.patch107
-rw-r--r--package/kernel/lantiq/ltq-vdsl-vr9/patches/200-fix-elapsed-time.patch122
5 files changed, 402 insertions, 0 deletions
diff --git a/package/kernel/lantiq/ltq-vdsl-vr9/patches/001-fix-compile.patch b/package/kernel/lantiq/ltq-vdsl-vr9/patches/001-fix-compile.patch
new file mode 100644
index 0000000000..1355a1a791
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr9/patches/001-fix-compile.patch
@@ -0,0 +1,12 @@
+--- a/src/include/drv_dsl_cpe_os_linux.h
++++ b/src/include/drv_dsl_cpe_os_linux.h
+@@ -33,6 +33,9 @@
+ #endif
+
+ #include <linux/sched.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
++#include <linux/sched/signal.h>
++#endif
+
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
diff --git a/package/kernel/lantiq/ltq-vdsl-vr9/patches/020-not-leak-cflags.patch b/package/kernel/lantiq/ltq-vdsl-vr9/patches/020-not-leak-cflags.patch
new file mode 100644
index 0000000000..96e69acca0
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr9/patches/020-not-leak-cflags.patch
@@ -0,0 +1,32 @@
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -244,10 +244,7 @@ else
+ drv_dsl_cpe_api_common_mod_cflags =
+ endif
+
+-drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB \
+- -pipe -Wall -Wformat -Wimplicit -Wunused -Wswitch -Wcomment -Winline \
+- -Wuninitialized -Wparentheses -Wsign-compare -Wreturn-type \
+- -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
++drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB
+
+ if DSL_DBG_MAX_LEVEL_SET
+ drv_dsl_cpe_api_common_cflags += -DDSL_DBG_MAX_LEVEL=$(DSL_DBG_MAX_LEVEL_PRE)
+@@ -257,7 +254,7 @@ endif
+ drv_dsl_cpe_api_target_cflags = $(ADD_DRV_CFLAGS)
+
+ # compile cflags
+-drv_dsl_cpe_api_compile_cflags = $(EXTRA_DRV_CFLAGS)
++drv_dsl_cpe_api_compile_cflags =
+
+ if !KERNEL_2_6
+ # the headerfile of linux kernels 2.6.x contain to much arithmetic
+@@ -311,7 +308,7 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
+ @echo -e "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
+ @echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
+ @echo -e "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
+- @echo -e "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
++ @echo -e "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
+ $(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
+
+ clean-generic:
diff --git a/package/kernel/lantiq/ltq-vdsl-vr9/patches/100-compat.patch b/package/kernel/lantiq/ltq-vdsl-vr9/patches/100-compat.patch
new file mode 100644
index 0000000000..7670fe6a00
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr9/patches/100-compat.patch
@@ -0,0 +1,129 @@
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -117,7 +117,7 @@ POST_UNINSTALL = :
+
+ # the headerfile of linux kernels 2.6.x contain to much arithmetic
+ # with void pointers (which is allowed for gcc!)
+-@KERNEL_2_6_FALSE@am__append_6 = -Wpointer-arith
++@KERNEL_2_6_FALSE@am__append_6 =
+ subdir = src
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/configure.in
+--- a/src/common/drv_dsl_cpe_os_linux.c
++++ b/src/common/drv_dsl_cpe_os_linux.c
+@@ -11,6 +11,7 @@
+
+ #define DSL_INTERN
+
++#include <linux/device.h>
+ #include "drv_dsl_cpe_api.h"
+ #include "drv_dsl_cpe_api_ioctl.h"
+
+@@ -249,14 +250,7 @@ static DSL_long_t DSL_DRV_Ioctls(DSL_DRV
+ }
+
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+- if (pFile->f_dentry != DSL_NULL)
+- {
+- pINode = pFile->f_dentry->d_inode;
+- }
+- else
+- {
+- pINode = DSL_NULL;
+- }
++ pINode = file_inode(pFile);
+ #endif
+
+ if (pINode == DSL_NULL)
+@@ -491,7 +485,11 @@ DSL_void_t* DSL_DRV_VMalloc(
+ DSL_DRV_size_t nSize)
+ {
+ /* VRX500-BU: Better to use vmalloc or vzmalloc here?! */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0)
+ return __vmalloc((unsigned long)nSize, GFP_KERNEL, PAGE_KERNEL);
++#else
++ return __vmalloc((unsigned long)nSize, GFP_KERNEL);
++#endif
+ /* return vmalloc(nSize);*/
+ }
+
+@@ -917,12 +915,19 @@ DSL_int32_t DSL_DRV_ThreadShutdown(
+
+ DSL_uint32_t DSL_DRV_SysTimeGet(DSL_uint32_t nOffset)
+ {
+- struct timeval tv;
+ DSL_uint32_t nTime = 0;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
++ struct timeval tv;
+
+ memset(&tv, 0, sizeof(tv));
+ do_gettimeofday(&tv);
+ nTime = (DSL_uint32_t)tv.tv_sec;
++#else
++ struct timespec64 now;
++
++ ktime_get_real_ts64(&now);
++ nTime = (DSL_uint32_t)now.tv_sec;
++#endif
+
+ if ( (nOffset == 0) || (nOffset > nTime) )
+ {
+@@ -1203,6 +1208,9 @@ static void DSL_DRV_NlSendMsg(DSL_char_t
+ }
+ #endif
+
++static struct class *dsl_class;
++static dev_t dsl_devt;
++
+ /* Entry point of driver */
+ int __init DSL_ModuleInit(void)
+ {
+@@ -1241,6 +1249,10 @@ int __init DSL_ModuleInit(void)
+
+ DSL_DRV_DevNodeInit();
+
++ dsl_class = class_create(THIS_MODULE, DRV_DSL_CPE_API_DEV_NAME);
++ dsl_devt = MKDEV(DRV_DSL_CPE_API_DEV_MAJOR, 0);
++ device_create(dsl_class, NULL, dsl_devt, NULL, "dsl_cpe_api/0");
++
+ return 0;
+ }
+
+@@ -1248,6 +1260,11 @@ void __exit DSL_ModuleCleanup(void)
+ {
+ printk("Module will be unloaded"DSL_DRV_CRLF);
+
++ device_destroy(dsl_class, dsl_devt);
++ dsl_devt = NULL;
++ class_destroy(dsl_class);
++ dsl_class = NULL;
++
+ unregister_chrdev(nMajorNum, DRV_DSL_CPE_API_DEV_NAME);
+
+ DSL_DRV_Cleanup();
+--- a/src/device/drv_dsl_cpe_device_vrx.c
++++ b/src/device/drv_dsl_cpe_device_vrx.c
+@@ -5337,6 +5337,7 @@ DSL_Error_t DSL_DRV_DEV_HybridTypeGet(
+ #undef DSL_DBG_BLOCK
+ #define DSL_DBG_BLOCK DSL_DBG_NOTIFICATIONS
+
++#if 0
+ DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignaling
+ (
+ DSL_Context_t *pContext,
+@@ -5384,6 +5385,15 @@ DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignal
+
+ return nErrCode;
+ }
++#else
++DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignaling
++(
++ DSL_Context_t *pContext,
++ DSL_TcLayerSelection_t nTcLayer)
++{
++ return DSL_SUCCESS;
++}
++#endif
+
+ DSL_Error_t DSL_DRV_DEV_MeiShowtimeSignaling
+ (
diff --git a/package/kernel/lantiq/ltq-vdsl-vr9/patches/110-semaphore-lock.patch b/package/kernel/lantiq/ltq-vdsl-vr9/patches/110-semaphore-lock.patch
new file mode 100644
index 0000000000..12c00c33ec
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr9/patches/110-semaphore-lock.patch
@@ -0,0 +1,107 @@
+--- a/src/include/drv_dsl_cpe_pm_core.h
++++ b/src/include/drv_dsl_cpe_pm_core.h
+@@ -1510,9 +1510,9 @@ typedef struct
+ /** Common PM module mutex*/
+ DSL_DRV_Mutex_t pmMutex;
+ /** PM module direction Near-End mutex*/
+- DSL_DRV_Mutex_t pmNeMutex;
++ struct semaphore pmNeMutex;
+ /** PM module direction Far-End mutex*/
+- DSL_DRV_Mutex_t pmFeMutex;
++ struct semaphore pmFeMutex;
+ /** PM module Near-End access mutex*/
+ DSL_DRV_Mutex_t pmNeAccessMutex;
+ /** PM module Far-End access mutex*/
+--- a/src/pm/drv_dsl_cpe_api_pm.c
++++ b/src/pm/drv_dsl_cpe_api_pm.c
+@@ -220,9 +220,9 @@ DSL_Error_t DSL_DRV_PM_Start(
+ /* init PM module common mutex */
+ DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmMutex);
+ /* init PM module direction Near-End mutex */
+- DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
++ sema_init(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex),1);
+ /* init PM module direction Far-End mutex */
+- DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
++ sema_init(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex),1);
+ /* init PM module Near-End access mutex */
+ DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmNeAccessMutex);
+ /* init PM module Far-End access mutex */
+@@ -592,7 +592,7 @@ DSL_Error_t DSL_DRV_PM_Stop(
+ if( DSL_DRV_PM_CONTEXT(pContext)->pmThreadFe.bRun != DSL_TRUE )
+ {
+ DSL_DEBUG(DSL_DBG_WRN,
+- (pContext, SYS_DBG_WRN"DSL[%02d]: PM module Near-End thread already stopped"
++ (pContext, SYS_DBG_WRN"DSL[%02d]: PM module Far-End thread already stopped"
+ DSL_DRV_CRLF, DSL_DEV_NUM(pContext)));
+ }
+ else
+--- a/src/pm/drv_dsl_cpe_pm_core.c
++++ b/src/pm/drv_dsl_cpe_pm_core.c
+@@ -1022,7 +1022,7 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
+ {
+ if( bLock )
+ {
+- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex) )
++ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex)))
+ {
+ DSL_DEBUG( DSL_DBG_ERR,
+ (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM NE mutex!"
+@@ -1034,14 +1034,14 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
+ else
+ {
+ /* Unlock PM module NE Mutex*/
+- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
++ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex));
+ }
+ }
+ else
+ {
+ if( bLock )
+ {
+- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex) )
++ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex)))
+ {
+ DSL_DEBUG( DSL_DBG_ERR,
+ (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM FE mutex!"
+@@ -1053,7 +1053,7 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
+ else
+ {
+ /* Unlock PM module FE Mutex*/
+- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
++ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex));
+ }
+ }
+
+@@ -1139,7 +1139,7 @@ DSL_Error_t DSL_DRV_PM_Lock(DSL_Context_
+ if( !(DSL_DRV_PM_CONTEXT(pContext)->bPmLock) )
+ {
+ /* Lock PM module Near-End Mutex*/
+- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex) )
++ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex)))
+ {
+ DSL_DEBUG( DSL_DBG_ERR,
+ (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM NE mutex!"
+@@ -1148,8 +1148,8 @@ DSL_Error_t DSL_DRV_PM_Lock(DSL_Context_
+ return DSL_ERR_SEMAPHORE_GET;
+ }
+
+- /* Lock PM module Near-End Mutex*/
+- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex) )
++ /* Lock PM module Far-End Mutex*/
++ if( down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex)) )
+ {
+ DSL_DEBUG( DSL_DBG_ERR,
+ (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM FE mutex!"
+@@ -1193,10 +1193,10 @@ DSL_Error_t DSL_DRV_PM_UnLock(DSL_Contex
+ if( DSL_DRV_PM_CONTEXT(pContext)->bPmLock )
+ {
+ /* Unlock PM module NE Mutex*/
+- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
++ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex));
+
+ /* Unlock PM module FE Mutex*/
+- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
++ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex));
+
+ /* Clear bPmLock flag*/
+ DSL_DRV_PM_CONTEXT(pContext)->bPmLock = DSL_FALSE;
diff --git a/package/kernel/lantiq/ltq-vdsl-vr9/patches/200-fix-elapsed-time.patch b/package/kernel/lantiq/ltq-vdsl-vr9/patches/200-fix-elapsed-time.patch
new file mode 100644
index 0000000000..3ec85460b2
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr9/patches/200-fix-elapsed-time.patch
@@ -0,0 +1,122 @@
+--- a/src/include/drv_dsl_cpe_pm_core.h
++++ b/src/include/drv_dsl_cpe_pm_core.h
+@@ -1552,9 +1552,9 @@ typedef struct
+ DSL_boolean_t bShowtimeProcessingStart;
+ /** Showtime reached flag*/
+ DSL_boolean_t bShowtimeInvTrigger;
+- /** Current Showtime synchronization time to be used, (msec) */
++ /** Current Showtime synchronization time to be used, (sec) */
+ DSL_uint32_t nCurrShowtimeTime;
+- /** Showtime synchronization time to be used, (msec) */
++ /** Showtime synchronization time to be used, (sec) */
+ DSL_uint32_t nElapsedShowtimeTime;
+ /** Actual Line state*/
+ DSL_LineStateValue_t nLineState;
+--- a/src/pm/drv_dsl_cpe_api_pm.c
++++ b/src/pm/drv_dsl_cpe_api_pm.c
+@@ -1475,7 +1475,7 @@ DSL_Error_t DSL_DRV_PM_ChannelCountersTo
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pChCounters = DSL_DRV_PM_PTR_CHANNEL_COUNTERS_TOTAL(pCounters->nChannel,pCounters->nDirection);
+
+@@ -1535,7 +1535,7 @@ DSL_Error_t DSL_DRV_PM_ChannelCountersEx
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pChCounters = DSL_DRV_PM_PTR_CHANNEL_COUNTERS_TOTAL_EXT(pCounters->nChannel);
+
+@@ -2518,7 +2518,7 @@ DSL_Error_t DSL_DRV_PM_DataPathCountersT
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pDpCounters = DSL_DRV_PM_PTR_DATAPATH_COUNTERS_TOTAL(pCounters->nChannel,pCounters->nDirection);
+
+@@ -3352,7 +3352,7 @@ DSL_Error_t DSL_DRV_PM_DataPathFailureCo
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pDpCounters = DSL_DRV_PM_PTR_DATAPATH_FAILURE_COUNTERS_TOTAL(pCounters->nChannel,pCounters->nDirection);
+
+@@ -4130,7 +4130,7 @@ DSL_Error_t DSL_DRV_PM_LineSecCountersTo
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pLineCounters = DSL_DRV_PM_PTR_LINE_SEC_COUNTERS_TOTAL(pCounters->nDirection);
+
+@@ -4787,7 +4787,7 @@ DSL_Error_t DSL_DRV_PM_LineInitCountersT
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pLinitCounters = DSL_DRV_PM_PTR_LINE_INIT_COUNTERS_TOTAL();
+
+@@ -5240,7 +5240,7 @@ DSL_Error_t DSL_DRV_PM_LineEventShowtime
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pLfCounters = DSL_DRV_PM_PTR_LINE_EVENT_SHOWTIME_COUNTERS_TOTAL(pCounters->nDirection);
+
+@@ -5720,7 +5720,7 @@ DSL_Error_t DSL_DRV_PM_ReTxCountersTotal
+ }
+
+ /* Fill Total Counters elapsed time*/
+- pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime/DSL_PM_MSEC;
++ pCounters->total.nElapsedTime = DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime;
+
+ pReTxCounters = DSL_DRV_PM_PTR_RETX_COUNTERS_TOTAL(pCounters->nDirection);
+
+--- a/src/pm/drv_dsl_cpe_pm_core.c
++++ b/src/pm/drv_dsl_cpe_pm_core.c
+@@ -60,6 +60,7 @@ static DSL_Error_t DSL_DRV_PM_SyncTimeUp
+ {
+ DSL_Error_t nErrCode = DSL_SUCCESS;
+ DSL_uint32_t msecTimeFrame = DSL_PM_COUNTER_POLLING_CYCLE,
++ secTimeFrame = DSL_PM_COUNTER_POLLING_CYCLE/DSL_PM_MSEC,
+ nCurrMsTime = 0;
+ #ifdef INCLUDE_DSL_CPE_PM_HISTORY
+ DSL_uint32_t nCurrSysTime = 0, nPrevElapsedTime = 0;
+@@ -99,10 +100,13 @@ static DSL_Error_t DSL_DRV_PM_SyncTimeUp
+ {
+ /* Get elapsed time [msec] since the last entry*/
+ msecTimeFrame = nCurrMsTime - DSL_DRV_PM_CONTEXT(pContext)->nLastMsTimeCheck;
++
++ /* Get elapsed time [sec] since the last entry*/
++ secTimeFrame = (nCurrMsTime/DSL_PM_MSEC) - (DSL_DRV_PM_CONTEXT(pContext)->nLastMsTimeCheck/DSL_PM_MSEC);
+ }
+
+ /* Get Total Elapsed Time Since the PM module startup*/
+- DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime += msecTimeFrame;
++ DSL_DRV_PM_CONTEXT(pContext)->nPmTotalElapsedTime += secTimeFrame;
+
+ /* Set last time check to the current time*/
+ DSL_DRV_PM_CONTEXT(pContext)->nLastMsTimeCheck = nCurrMsTime;
+@@ -140,7 +144,7 @@ static DSL_Error_t DSL_DRV_PM_SyncTimeUp
+ else
+ {
+ /* Update current showtime elapsed time*/
+- DSL_DRV_PM_CONTEXT(pContext)->nCurrShowtimeTime += (msecTimeFrame/DSL_PM_MSEC);
++ DSL_DRV_PM_CONTEXT(pContext)->nCurrShowtimeTime += secTimeFrame;
+ DSL_DRV_PM_CONTEXT(pContext)->nElapsedShowtimeTime =
+ DSL_DRV_PM_CONTEXT(pContext)->nCurrShowtimeTime;
+ }