mirror of
https://github.com/cjdelisle/openwrt.git
synced 2025-05-13 00:03:19 +00:00
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 <jan@3e8.eu> Link: https://patchwork.ozlabs.org/project/openwrt/patch/20250130102108.1606919-2-jan@3e8.eu/ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
47 lines
1.9 KiB
Diff
47 lines
1.9 KiB
Diff
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;
|
|
|
|
/**
|