aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/lantiq/ltq-adsl
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/lantiq/ltq-adsl')
-rw-r--r--package/kernel/lantiq/ltq-adsl/Makefile2
-rw-r--r--package/kernel/lantiq/ltq-adsl/patches/200-fix-elapsed-time.patch122
-rw-r--r--package/kernel/lantiq/ltq-adsl/patches/201-fix-compilation-warning-fallthrough.patch36
-rw-r--r--package/kernel/lantiq/ltq-adsl/patches/202-g997_danube-dynamically-allocate-hlogdata.patch65
-rw-r--r--package/kernel/lantiq/ltq-adsl/patches/203-g997_danube-fix-compilation-warning.patch26
5 files changed, 250 insertions, 1 deletions
diff --git a/package/kernel/lantiq/ltq-adsl/Makefile b/package/kernel/lantiq/ltq-adsl/Makefile
index 31874acaca4..ac966749338 100644
--- a/package/kernel/lantiq/ltq-adsl/Makefile
+++ b/package/kernel/lantiq/ltq-adsl/Makefile
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=ltq-adsl
PKG_VERSION:=3.24.4.4
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=drv_dsl_cpe_api_danube-$(PKG_VERSION).tar.gz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/ltq-dsl-$(BUILD_VARIANT)/drv_dsl_cpe_api-$(PKG_VERSION)
PKG_SOURCE_URL:=@OPENWRT
diff --git a/package/kernel/lantiq/ltq-adsl/patches/200-fix-elapsed-time.patch b/package/kernel/lantiq/ltq-adsl/patches/200-fix-elapsed-time.patch
new file mode 100644
index 00000000000..42ec2143715
--- /dev/null
+++ b/package/kernel/lantiq/ltq-adsl/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
+@@ -1525,9 +1525,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
+@@ -1445,7 +1445,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);
+
+@@ -1501,7 +1501,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);
+
+@@ -2418,7 +2418,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);
+
+@@ -3190,7 +3190,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);
+
+@@ -3950,7 +3950,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);
+
+@@ -4602,7 +4602,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();
+
+@@ -5131,7 +5131,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);
+
+@@ -5670,7 +5670,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
+@@ -61,6 +61,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;
+@@ -100,10 +101,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;
+@@ -141,7 +145,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;
+ }
diff --git a/package/kernel/lantiq/ltq-adsl/patches/201-fix-compilation-warning-fallthrough.patch b/package/kernel/lantiq/ltq-adsl/patches/201-fix-compilation-warning-fallthrough.patch
new file mode 100644
index 00000000000..dfaf29f4498
--- /dev/null
+++ b/package/kernel/lantiq/ltq-adsl/patches/201-fix-compilation-warning-fallthrough.patch
@@ -0,0 +1,36 @@
+--- a/src/pm/drv_dsl_cpe_pm_core.c
++++ b/src/pm/drv_dsl_cpe_pm_core.c
+@@ -2274,16 +2274,18 @@ DSL_Error_t DSL_DRV_PM_CountersReset(
+ }
+ #endif /* #ifdef INCLUDE_DSL_CPE_PM_HISTORY*/
+
+- if (ResetType == DSL_PM_RESET_HISTORY)
+- break;
++ if (ResetType == DSL_PM_RESET_HISTORY)
++ break;
+
++ fallthrough;
+ case DSL_PM_RESET_TOTAL:
+ #ifdef INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS
+ memset(EpData.pRecTotal, 0x0, EpData.nEpRecElementSize);
+ #endif /* #ifdef INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS*/
+- if (ResetType == DSL_PM_RESET_TOTAL)
+- break;
++ if (ResetType == DSL_PM_RESET_TOTAL)
++ break;
+
++ fallthrough;
+ case DSL_PM_RESET_HISTORY_SHOWTIME:
+ #ifdef INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS
+ nErrCode = DSL_DRV_PM_HistoryDelete(pContext, EpData.pHistShowtime );
+--- a/src/device/drv_dsl_cpe_device_danube.c
++++ b/src/device/drv_dsl_cpe_device_danube.c
+@@ -3193,7 +3193,7 @@ DSL_Error_t DSL_DRV_DEV_AutobootHandleTraining(
+ DSL_DEV_NUM(pContext)));
+ }
+ #endif /* INCLUDE_DSL_DELT*/
+- /* Pass through */
++ fallthrough ;
+ case DSL_LINESTATE_IDLE:
+ #if defined(INCLUDE_DSL_PM) && defined(INCLUDE_DSL_CPE_PM_LINE_COUNTERS)
+ if ( (pContext->bGotFullInit == DSL_TRUE) &&
diff --git a/package/kernel/lantiq/ltq-adsl/patches/202-g997_danube-dynamically-allocate-hlogdata.patch b/package/kernel/lantiq/ltq-adsl/patches/202-g997_danube-dynamically-allocate-hlogdata.patch
new file mode 100644
index 00000000000..c3b1047a2ab
--- /dev/null
+++ b/package/kernel/lantiq/ltq-adsl/patches/202-g997_danube-dynamically-allocate-hlogdata.patch
@@ -0,0 +1,65 @@
+--- a/src/g997/drv_dsl_cpe_api_g997_danube.c
++++ b/src/g997/drv_dsl_cpe_api_g997_danube.c
+@@ -1984,41 +1984,53 @@ DSL_Error_t DSL_DRV_DEV_G997_DeltHlogGet(
+ {
+ if (nDirection == DSL_DOWNSTREAM)
+ {
+- DSL_G997_DeltHlogData_t HlogData;
++ DSL_G997_DeltHlogData_t *HlogData;
+
+- memset(&HlogData, 0x0, sizeof(DSL_G997_DeltHlogData_t));
++ HlogData = kzalloc(sizeof(*HlogData), GFP_KERNEL);
++ if (!HlogData)
++ {
++ DSL_DEBUG(DSL_DBG_ERR,
++ (pContext, "DSL[%02d]: ERROR - Alloc HlogData failed!"DSL_DRV_CRLF,
++ DSL_DEV_NUM(pContext)));
++ return DSL_ERR_MEMORY;
++ }
++
++ memset(HlogData, 0x0, sizeof(DSL_G997_DeltHlogData_t));
+
+ /* Get SHOWTIME Hlog values*/
+ nErrCode = DSL_DRV_DANUBE_G997_DeltHlogGet(
+- pContext, nDirection, &HlogData);
++ pContext, nDirection, HlogData);
+ if (nErrCode != DSL_SUCCESS)
+ {
+ DSL_DEBUG(DSL_DBG_ERR,
+ (pContext, "DSL[%02d]: ERROR - Showtime Hlog get failed!"DSL_DRV_CRLF,
+ DSL_DEV_NUM(pContext)));
++ kfree(HlogData);
+ return nErrCode;
+ }
+
+ /* if actual group size != 1, values should be spread */
+- if (HlogData.nGroupSize != 1)
++ if (HlogData->nGroupSize != 1)
+ {
+ nErrCode = DSL_DRV_DANUBE_G997_DeltValuesSpread(
+- 0x1, HlogData.nGroupSize, HlogData.deltHlog.nNumData,
+- HlogData.deltHlog.nNSCData, pData->deltHlog.nNSCData);
++ 0x1, HlogData->nGroupSize, HlogData->deltHlog.nNumData,
++ HlogData->deltHlog.nNSCData, pData->deltHlog.nNSCData);
+
+ if (nErrCode == DSL_SUCCESS)
+ {
+ pData->deltHlog.nNumData =
+- (DSL_uint16_t)(HlogData.deltHlog.nNumData * HlogData.nGroupSize);
++ (DSL_uint16_t)(HlogData->deltHlog.nNumData * HlogData->nGroupSize);
+ pData->nGroupSize = 1;
+- pData->nMeasurementTime = HlogData.nMeasurementTime;
++ pData->nMeasurementTime = HlogData->nMeasurementTime;
+ }
+ }
+ else
+ {
+ /* No spread needed, copy data*/
+- memcpy(pData, &HlogData, sizeof(DSL_G997_DeltHlogData_t));
++ memcpy(pData, HlogData, sizeof(DSL_G997_DeltHlogData_t));
+ }
++
++ kfree(HlogData);
+ }
+ else
+ {
diff --git a/package/kernel/lantiq/ltq-adsl/patches/203-g997_danube-fix-compilation-warning.patch b/package/kernel/lantiq/ltq-adsl/patches/203-g997_danube-fix-compilation-warning.patch
new file mode 100644
index 00000000000..c6a0e70f1f9
--- /dev/null
+++ b/package/kernel/lantiq/ltq-adsl/patches/203-g997_danube-fix-compilation-warning.patch
@@ -0,0 +1,26 @@
+--- a/src/g997/drv_dsl_cpe_api_g997_danube.c
++++ b/src/g997/drv_dsl_cpe_api_g997_danube.c
+@@ -2512,6 +2524,7 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManagementStateForcedTrigger(
+ else
+ {
+ /* read L3 request failure reason */
++ DSL_uint8_t nErrCodeL3;
+ nErrCode = DSL_DRV_DANUBE_CmvRead(pContext, DSL_CMV_GROUP_STAT,
+ DSL_CMV_ADDRESS_STAT_L3_FAILURE_REASON, 0, 1, &nVal);
+ DSL_DEBUG(DSL_DBG_MSG,
+@@ -2525,11 +2538,13 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManagementStateForcedTrigger(
+ nErrCode = DSL_ERR_MSG_EXCHANGE;
+ break;
+ }
+- if (((nVal >> 4) & 0x15) == 0x5)
++
++ nErrCodeL3 = (nVal >> 4) & 0x15;
++ if (nErrCodeL3 == 0x5)
+ {
+ nErrCode = DSL_ERR_L3_NOT_IN_L0;
+ }
+- else if (((nVal >> 4) & 0x15) == 0x9)
++ else if (nErrCodeL3 == 0x9)
+ {
+ nErrCode = DSL_ERR_L3_TIMED_OUT;
+ }