[openwrt/openwrt] ltq-vdsl-vr9-app: always disconnect on exit

LEDE Commits lede-commits at lists.infradead.org
Sat Aug 31 10:51:27 PDT 2024


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/663389c4cf1029f5c76f9f7f5c9ce01d2029f833

commit 663389c4cf1029f5c76f9f7f5c9ce01d2029f833
Author: Jan Hoffmann <jan at 3e8.eu>
AuthorDate: Fri Jul 12 15:49:51 2024 +0200

    ltq-vdsl-vr9-app: always disconnect on exit
    
    Move the code for disconnection on exit to a separate function, and also
    call it in the code path for the "quit" CLI command.
    
    While at it, make the patch description a bit clearer.
    
    Signed-off-by: Jan Hoffmann <jan at 3e8.eu>
---
 package/network/config/ltq-vdsl-vr9-app/Makefile   |  2 +-
 .../ltq-vdsl-vr9-app/patches/200-autoboot.patch    | 52 +++++++++++++---------
 .../ltq-vdsl-vr9-app/patches/201-sigterm.patch     |  4 +-
 .../config/ltq-vdsl-vr9-app/patches/300-ubus.patch |  4 +-
 4 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/package/network/config/ltq-vdsl-vr9-app/Makefile b/package/network/config/ltq-vdsl-vr9-app/Makefile
index e2042bf314..51b88231f7 100644
--- a/package/network/config/ltq-vdsl-vr9-app/Makefile
+++ b/package/network/config/ltq-vdsl-vr9-app/Makefile
@@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-vr9-app
 PKG_VERSION:=4.17.18.6
-PKG_RELEASE:=6
+PKG_RELEASE:=7
 PKG_BASE_NAME:=dsl_cpe_control
 PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@OPENWRT
diff --git a/package/network/config/ltq-vdsl-vr9-app/patches/200-autoboot.patch b/package/network/config/ltq-vdsl-vr9-app/patches/200-autoboot.patch
index d949162f58..2d3a6a822e 100644
--- a/package/network/config/ltq-vdsl-vr9-app/patches/200-autoboot.patch
+++ b/package/network/config/ltq-vdsl-vr9-app/patches/200-autoboot.patch
@@ -1,9 +1,10 @@
 This enables automatic connection after the control daemon is started,
 and also stops the connection on termination.
 
-Using the autoboot restart command is necessary because the stop command
-doesn't actually stop the connection, and would also leave the driver in
-a state where an explicit start command is necessary to connect again.
+Using the autoboot restart command (in combination with configuring the
+state machine to wait) is necessary because the stop command doesn't
+actually stop the connection, and would also leave the driver in a state
+where an explicit start command is necessary to connect again.
 
 --- a/src/dsl_cpe_init_cfg.c
 +++ b/src/dsl_cpe_init_cfg.c
@@ -18,25 +19,17 @@ a state where an explicit start command is necessary to connect again.
     DSL_CPE_LINE_ACTIVATE_CTRL_SET(DSL_G997_INHIBIT_LDSF, DSL_G997_INHIBIT_ACSF, DSL_G997_NORMAL_STARTUP),
 --- a/src/dsl_cpe_control.c
 +++ b/src/dsl_cpe_control.c
-@@ -6515,10 +6515,13 @@ DSL_CPE_STATIC  void DSL_CPE_Termination
- DSL_CPE_STATIC  DSL_void_t DSL_CPE_Termination (void)
- {
- #ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
--   DSL_int_t nDevice = 0;
-    DSL_char_t buf[32] = "quit";
- #endif
+@@ -6491,6 +6491,57 @@ DSL_int32_t DSL_CPE_DeviceInit (
+    return ret;
+ }
  
++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_AutobootControl_t sAutobootCtl;
-    DSL_CPE_Control_Context_t *pCtrlCtx;
- 
-    pCtrlCtx = DSL_CPE_GetGlobalContext();
-@@ -6527,6 +6530,50 @@ DSL_CPE_STATIC  DSL_void_t DSL_CPE_Termi
-       pCtrlCtx->bRun = DSL_FALSE;
-    }
- 
++
 +   for (nDevice = 0; nDevice < DSL_CPE_MAX_DSL_ENTITIES; ++nDevice)
 +   {
 +      g_bWaitBeforeConfigWrite[nDevice]    = DSL_TRUE;
@@ -79,8 +72,27 @@ a state where an explicit start command is necessary to connect again.
 +   }
 +
 +   DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
-+      "Autoboot restart executed" DSL_CPE_CRLF));
++      "Connection shutdown finished." DSL_CPE_CRLF));
++}
+ 
+ /**
+    Termination handler. Will clean up in case of ctrl-c.
+@@ -6521,6 +6572,8 @@ DSL_CPE_STATIC  DSL_void_t DSL_CPE_Termi
+ 
+    DSL_CPE_Control_Context_t *pCtrlCtx;
+ 
++   DSL_CPE_ShutdownConnection();
 +
- #ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
-    for (nDevice = 0; nDevice < DSL_CPE_MAX_DSL_ENTITIES; nDevice++)
+    pCtrlCtx = DSL_CPE_GetGlobalContext();
+    if (pCtrlCtx != DSL_NULL)
     {
+@@ -7416,6 +7469,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;
+ }
diff --git a/package/network/config/ltq-vdsl-vr9-app/patches/201-sigterm.patch b/package/network/config/ltq-vdsl-vr9-app/patches/201-sigterm.patch
index 4e97835983..5397a139f5 100644
--- a/package/network/config/ltq-vdsl-vr9-app/patches/201-sigterm.patch
+++ b/package/network/config/ltq-vdsl-vr9-app/patches/201-sigterm.patch
@@ -1,6 +1,6 @@
 --- a/src/dsl_cpe_control.c
 +++ b/src/dsl_cpe_control.c
-@@ -6504,7 +6504,7 @@ DSL_CPE_STATIC  void DSL_CPE_Termination
+@@ -6555,7 +6555,7 @@ DSL_CPE_STATIC  void DSL_CPE_Termination
     /* ignore the signal, we'll handle by ourself */
     signal (sig, SIG_IGN);
  
@@ -9,7 +9,7 @@
     {
        DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX "terminated" DSL_CPE_CRLF));
        DSL_CPE_Termination ();
-@@ -6803,6 +6803,7 @@ DSL_int_t dsl_cpe_daemon (
+@@ -6809,6 +6809,7 @@ DSL_int_t dsl_cpe_daemon (
  
  #ifndef RTEMS
     signal (SIGINT, DSL_CPE_TerminationHandler);
diff --git a/package/network/config/ltq-vdsl-vr9-app/patches/300-ubus.patch b/package/network/config/ltq-vdsl-vr9-app/patches/300-ubus.patch
index d257ca2fc4..b0cdaa1bcf 100644
--- a/package/network/config/ltq-vdsl-vr9-app/patches/300-ubus.patch
+++ b/package/network/config/ltq-vdsl-vr9-app/patches/300-ubus.patch
@@ -10,7 +10,7 @@
  DSL_char_t *g_sFirmwareName1 = DSL_NULL;
  DSL_FirmwareFeatures_t g_nFwFeatures1 = {DSL_FW_XDSLMODE_CLEANED, DSL_FW_XDSLFEATURE_CLEANED,
     DSL_FW_XDSLFEATURE_CLEANED};
-@@ -6806,6 +6809,8 @@ DSL_int_t dsl_cpe_daemon (
+@@ -6812,6 +6815,8 @@ DSL_int_t dsl_cpe_daemon (
     signal (SIGTERM, DSL_CPE_TerminationHandler);
  #endif /* RTEMS*/
  
@@ -19,7 +19,7 @@
     /* Open DSL_CPE_MAX_DSL_ENTITIES devices*/
     for (nDevice = 0; nDevice < DSL_CPE_MAX_DSL_ENTITIES; nDevice++)
     {
-@@ -7260,6 +7265,7 @@ DSL_int_t dsl_cpe_daemon (
+@@ -7266,6 +7271,7 @@ DSL_int_t dsl_cpe_daemon (
  #endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
  
  DSL_CPE_CONTROL_EXIT:




More information about the lede-commits mailing list