mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 05:38:00 +00:00
ltq-vdsl-vr11-app: always disconnect on exit
Move the code for disconnection on exit to a separate function, and also call it in the code paths for SIGINT and the "quit" CLI command. While at it, make the patch description a bit clearer. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
This commit is contained in:
parent
663389c4cf
commit
23826115e1
@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=ltq-vdsl-vr11-app
|
PKG_NAME:=ltq-vdsl-vr11-app
|
||||||
PKG_VERSION:=4.23.1
|
PKG_VERSION:=4.23.1
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
PKG_BASE_NAME:=dsl_cpe_control
|
PKG_BASE_NAME:=dsl_cpe_control
|
||||||
|
|
||||||
UGW_VERSION=8.5.2.10
|
UGW_VERSION=8.5.2.10
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
This enables automatic connection after the control daemon is started,
|
This enables automatic connection after the control daemon is started,
|
||||||
and also changes the way the connection is stopped on termination.
|
and also changes the way the connection is stopped on termination.
|
||||||
|
|
||||||
Using the autoboot restart command is necessary because the stop command
|
Using the autoboot restart command (in combination with configuring the
|
||||||
would stop the autoboot thread, and the driver offers no working way to
|
state machine to wait) is necessary because the stop command would stop
|
||||||
start it again later, short of unloading and reloading the module.
|
the autoboot thread, and the driver offers no working way to start it
|
||||||
|
again later, short of unloading and reloading the module.
|
||||||
|
|
||||||
|
The disconnection code is also moved to a separate function, so it can
|
||||||
|
be called in other exit code paths than the one for SIGTERM.
|
||||||
|
|
||||||
--- a/src/dsl_cpe_init_cfg.c
|
--- a/src/dsl_cpe_init_cfg.c
|
||||||
+++ b/src/dsl_cpe_init_cfg.c
|
+++ b/src/dsl_cpe_init_cfg.c
|
||||||
@ -18,18 +22,19 @@ start it again later, short of unloading and reloading the module.
|
|||||||
DSL_CPE_LINE_ACTIVATE_CTRL_SET(DSL_G997_INHIBIT_LDSF, DSL_G997_INHIBIT_ACSF, DSL_G997_NORMAL_STARTUP),
|
DSL_CPE_LINE_ACTIVATE_CTRL_SET(DSL_G997_INHIBIT_LDSF, DSL_G997_INHIBIT_ACSF, DSL_G997_NORMAL_STARTUP),
|
||||||
--- a/src/dsl_cpe_control.c
|
--- a/src/dsl_cpe_control.c
|
||||||
+++ b/src/dsl_cpe_control.c
|
+++ b/src/dsl_cpe_control.c
|
||||||
@@ -7338,6 +7338,7 @@ DSL_CPE_STATIC DSL_void_t DSL_CPE_Termi
|
@@ -7252,6 +7252,58 @@ static DSL_boolean_t DSL_CPE_DebugAndTes
|
||||||
{
|
#endif /* defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT) */
|
||||||
DSL_Error_t nRet = DSL_SUCCESS;
|
#endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */
|
||||||
DSL_int_t nDevice = 0;
|
|
||||||
|
+DSL_CPE_STATIC DSL_void_t DSL_CPE_ShutdownConnection(void)
|
||||||
|
+{
|
||||||
|
+ DSL_Error_t nRet = DSL_SUCCESS;
|
||||||
|
+ DSL_int_t nDevice = 0;
|
||||||
+ DSL_AutobootConfig_t sAutobootCfg;
|
+ DSL_AutobootConfig_t sAutobootCfg;
|
||||||
DSL_AutobootControl_t sAutobootCtl;
|
+ DSL_AutobootControl_t sAutobootCtl;
|
||||||
DSL_CPE_Control_Context_t *pCtrlCtx = DSL_NULL;
|
+
|
||||||
|
+ for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; ++nDevice)
|
||||||
@@ -7349,8 +7350,32 @@ DSL_CPE_STATIC DSL_void_t DSL_CPE_Termi
|
+ {
|
||||||
|
|
||||||
for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; ++nDevice)
|
|
||||||
{
|
|
||||||
+ g_bWaitBeforeConfigWrite[nDevice] = DSL_TRUE;
|
+ g_bWaitBeforeConfigWrite[nDevice] = DSL_TRUE;
|
||||||
+ g_bWaitBeforeLinkActivation[nDevice] = DSL_TRUE;
|
+ g_bWaitBeforeLinkActivation[nDevice] = DSL_TRUE;
|
||||||
+ g_bWaitBeforeRestart[nDevice] = DSL_TRUE;
|
+ g_bWaitBeforeRestart[nDevice] = DSL_TRUE;
|
||||||
@ -54,29 +59,88 @@ start it again later, short of unloading and reloading the module.
|
|||||||
+ DSL_CPE_CRLF, nDevice, sAutobootCfg.accessCtl.nReturn));
|
+ DSL_CPE_CRLF, nDevice, sAutobootCfg.accessCtl.nReturn));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
memset(&sAutobootCtl, 0, sizeof(DSL_AutobootControl_t));
|
+ memset(&sAutobootCtl, 0, sizeof(DSL_AutobootControl_t));
|
||||||
- sAutobootCtl.data.nCommand = DSL_AUTOBOOT_CTRL_STOP;
|
|
||||||
+ sAutobootCtl.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART;
|
+ sAutobootCtl.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART;
|
||||||
|
+
|
||||||
nRet = (DSL_Error_t)DSL_CPE_Ioctl(
|
+ nRet = (DSL_Error_t)DSL_CPE_Ioctl(
|
||||||
DSL_CPE_GetGlobalContext()->fd[nDevice],
|
+ DSL_CPE_GetGlobalContext()->fd[nDevice],
|
||||||
@@ -7359,13 +7384,13 @@ DSL_CPE_STATIC DSL_void_t DSL_CPE_Termi
|
+ DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t)&sAutobootCtl);
|
||||||
if (nRet < DSL_SUCCESS)
|
+
|
||||||
{
|
+ if (nRet < DSL_SUCCESS)
|
||||||
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
+ {
|
||||||
- "Autoboot stop for device (%d) failed!, nRet = %d!"
|
+ DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
+ "Autoboot restart for device (%d) failed!, nRet = %d!"
|
+ "Autoboot restart for device (%d) failed!, nRet = %d!"
|
||||||
DSL_CPE_CRLF, nDevice, sAutobootCtl.accessCtl.nReturn));
|
+ DSL_CPE_CRLF, nDevice, sAutobootCtl.accessCtl.nReturn));
|
||||||
}
|
+ }
|
||||||
}
|
+ }
|
||||||
|
+
|
||||||
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
+ DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
- "Autoboot stop executed" DSL_CPE_CRLF));
|
+ "Connection shutdown finished." DSL_CPE_CRLF));
|
||||||
+ "Autoboot restart executed" DSL_CPE_CRLF));
|
+}
|
||||||
|
+
|
||||||
|
#ifndef RTEMS
|
||||||
|
/**
|
||||||
|
Signal handler.
|
||||||
|
@@ -7327,6 +7379,8 @@ DSL_CPE_STATIC DSL_void_t DSL_CPE_CLI_Q
|
||||||
|
|
||||||
|
DSL_CPE_STATIC DSL_void_t DSL_CPE_Interruption(void)
|
||||||
|
{
|
||||||
|
+ DSL_CPE_ShutdownConnection();
|
||||||
|
+
|
||||||
DSL_CPE_DaemonExit();
|
DSL_CPE_DaemonExit();
|
||||||
|
|
||||||
@@ -8798,4 +8823,4 @@ DSL_CPE_STATIC DSL_Error_t DSL_CPE_Firmw
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
@@ -7336,37 +7390,16 @@ DSL_CPE_STATIC DSL_void_t DSL_CPE_Inter
|
||||||
|
|
||||||
|
DSL_CPE_STATIC DSL_void_t DSL_CPE_Termination(void)
|
||||||
|
{
|
||||||
|
- DSL_Error_t nRet = DSL_SUCCESS;
|
||||||
|
- DSL_int_t nDevice = 0;
|
||||||
|
- DSL_AutobootControl_t sAutobootCtl;
|
||||||
|
DSL_CPE_Control_Context_t *pCtrlCtx = DSL_NULL;
|
||||||
|
|
||||||
|
+ DSL_CPE_ShutdownConnection();
|
||||||
|
+
|
||||||
|
pCtrlCtx = DSL_CPE_GetGlobalContext();
|
||||||
|
if (pCtrlCtx != DSL_NULL)
|
||||||
|
{
|
||||||
|
pCtrlCtx->bEvtRun = DSL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; ++nDevice)
|
||||||
|
- {
|
||||||
|
- memset(&sAutobootCtl, 0, sizeof(DSL_AutobootControl_t));
|
||||||
|
- sAutobootCtl.data.nCommand = DSL_AUTOBOOT_CTRL_STOP;
|
||||||
|
-
|
||||||
|
- nRet = (DSL_Error_t)DSL_CPE_Ioctl(
|
||||||
|
- DSL_CPE_GetGlobalContext()->fd[nDevice],
|
||||||
|
- DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t)&sAutobootCtl);
|
||||||
|
-
|
||||||
|
- if (nRet < DSL_SUCCESS)
|
||||||
|
- {
|
||||||
|
- DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
- "Autoboot stop for device (%d) failed!, nRet = %d!"
|
||||||
|
- DSL_CPE_CRLF, nDevice, sAutobootCtl.accessCtl.nReturn));
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
- "Autoboot stop executed" DSL_CPE_CRLF));
|
||||||
|
-
|
||||||
|
DSL_CPE_DaemonExit();
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
@@ -8551,6 +8584,9 @@ void DSL_CPE_main(void)
|
||||||
|
DSL_CPE_STATIC DSL_Error_t DSL_CPE_Control_Exit (DSL_void_t * pContext)
|
||||||
|
{
|
||||||
|
dummy_console_t *pConsole = pContext;
|
||||||
|
+
|
||||||
|
+ DSL_CPE_ShutdownConnection();
|
||||||
|
+
|
||||||
|
pConsole->bRun = DSL_FALSE;
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
@@ -8798,4 +8834,4 @@ DSL_CPE_STATIC DSL_Error_t DSL_CPE_Firmw
|
||||||
pDecimal));
|
pDecimal));
|
||||||
|
|
||||||
return nErrCode;
|
return nErrCode;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
DSL_char_t *g_sFirmwareName1 = DSL_NULL;
|
DSL_char_t *g_sFirmwareName1 = DSL_NULL;
|
||||||
DSL_FirmwareFeatures_t g_nFwFeatures1 = {DSL_FW_XDSLMODE_CLEANED, DSL_FW_XDSLFEATURE_CLEANED,
|
DSL_FirmwareFeatures_t g_nFwFeatures1 = {DSL_FW_XDSLMODE_CLEANED, DSL_FW_XDSLFEATURE_CLEANED,
|
||||||
DSL_FW_XDSLFEATURE_CLEANED};
|
DSL_FW_XDSLFEATURE_CLEANED};
|
||||||
@@ -7831,6 +7834,8 @@ DSL_int_t dsl_cpe_daemon (
|
@@ -7839,6 +7842,8 @@ DSL_int_t dsl_cpe_daemon (
|
||||||
#endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */
|
#endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */
|
||||||
#endif /* RTEMS*/
|
#endif /* RTEMS*/
|
||||||
|
|
||||||
@ -19,7 +19,7 @@
|
|||||||
/* Open DSL_CPE_MAX_DSL_ENTITIES devices*/
|
/* Open DSL_CPE_MAX_DSL_ENTITIES devices*/
|
||||||
for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; nDevice++)
|
for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; nDevice++)
|
||||||
{
|
{
|
||||||
@@ -8367,6 +8372,7 @@ DSL_int_t dsl_cpe_daemon (
|
@@ -8375,6 +8380,7 @@ DSL_int_t dsl_cpe_daemon (
|
||||||
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
||||||
|
|
||||||
DSL_CPE_CONTROL_EXIT:
|
DSL_CPE_CONTROL_EXIT:
|
||||||
|
Loading…
Reference in New Issue
Block a user