This allows to attempt an orderly shutdown via L3 request while avoiding
excessive delay in the failure case (up to 6 seconds with the currently
hard-coded 3 attempts).

Signed-off-by: Jan Hoffmann <j...@3e8.eu>
---
 package/kernel/lantiq/ltq-vdsl-vr11/Makefile  |  2 +-
 .../patches/300-l3-request-no-retry.patch     | 46 +++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 
package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch

diff --git a/package/kernel/lantiq/ltq-vdsl-vr11/Makefile 
b/package/kernel/lantiq/ltq-vdsl-vr11/Makefile
index 99d6e3537612..50432986e29c 100644
--- a/package/kernel/lantiq/ltq-vdsl-vr11/Makefile
+++ b/package/kernel/lantiq/ltq-vdsl-vr11/Makefile
@@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-vr11
 PKG_VERSION:=4.23.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 PKG_BASE_NAME:=dsl_cpe_api
 
 UGW_VERSION=8.5.2.10
diff --git 
a/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch 
b/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch
new file mode 100644
index 000000000000..818f676b329c
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch
@@ -0,0 +1,46 @@
+Add option for L3 request without retry on failure
+
+This allows to attempt an orderly shutdown via L3 request while avoiding
+excessive delay in the failure case (up to 6 seconds with the currently
+hard-coded 3 attempts).
+--- a/src/g997/drv_dsl_cpe_api_g997_vrx.c
++++ b/src/g997/drv_dsl_cpe_api_g997_vrx.c
+@@ -1053,6 +1053,7 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManage
+ {
+    DSL_Error_t nErrCode = DSL_SUCCESS, nRet = DSL_SUCCESS;
+    DSL_int_t nAttempt = 0, i = 0;
++   DSL_int_t nAttemptCount = DSL_LX_TO_L3_ATTEMPT_COUNT;
+    const DSL_int_t nMaxRetry = DSL_LX_TO_L3_TIMEOUT/DSL_L3_WAIT_INTERVAL;
+    DSL_G997_PowerManagementStatusData_t PmStatus = {DSL_G997_PMS_NA};
+    DSL_VRX_L3RequestStatus_t L3RequestStatus = DSL_VRX_L3_STATUS_NA;
+@@ -1095,11 +1096,15 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManage
+       nErrCode = DSL_ERR_NOT_SUPPORTED_BY_DEVICE;
+       break;
+ 
++   case DSL_G997_PMSF_LX_TO_L3_NO_RETRY:
++      nAttemptCount = 1;
++      fallthrough;
++
+    case DSL_G997_PMSF_LX_TO_L3:
+       if (PmStatus.nPowerManagementStatus != DSL_G997_PMS_L3)
+       {
+          /* retry it DSL_LX_TO_L3_ATTEMPT_COUNT times */
+-         for (nAttempt = 0; nAttempt < DSL_LX_TO_L3_ATTEMPT_COUNT; nAttempt++)
++         for (nAttempt = 0; nAttempt < nAttemptCount; nAttempt++)
+          {
+             /* L3 shutdown request*/
+             nErrCode = DSL_DRV_VRX_SendMsgShutdownRequest(pContext);
+--- a/src/include/drv_dsl_cpe_api_g997.h
++++ b/src/include/drv_dsl_cpe_api_g997.h
+@@ -1199,7 +1199,10 @@ typedef enum
+    procedure. After reaching the L3 state, the line shall remain in the L3 
idle
+    state until it is forced into another state through this configuration
+    parameter. */
+-   DSL_G997_PMSF_LX_TO_L3 = 3
++   DSL_G997_PMSF_LX_TO_L3 = 3,
++   /**
++   Same as above, but does not retry in case of failure. */
++   DSL_G997_PMSF_LX_TO_L3_NO_RETRY = 4
+ } DSL_G997_PowerManagementStateForce_t;
+ 
+ /**
-- 
2.48.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to