From patchwork Fri Jul 12 13:49:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Hoffmann X-Patchwork-Id: 1959915 X-Patchwork-Delegate: hauke@hauke-m.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Q8y1UrIt; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=3e8.eu header.i=@3e8.eu header.a=rsa-sha256 header.s=mail20211217 header.b=d2qRuhd7; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WLF1D5yBBz20MX for ; Sat, 13 Jul 2024 00:52:00 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=O4fbg5Nf6OMpvVr8kL8ghvqxjpKe2FkcR4CDMIvCNBw=; b=Q8y1UrItnf3L4x ToYGge1Ut031ec74NYQRi+kL4iKa5SMVbiOnFrtm2wHQPrHtvcNfNtpw9ccCSq7FiFxyySY27XAkf 6xpZl/4ro7zvHdma9mk3ori27lGR258qRY9ZgdPjZ+CuHBvUnq+sH4vx0RPkMP8O0pI9txf1SlucW VIWBV4G4YsFFmJ51EhZ09g0qkhpe09l1zFOzvAzccwovsiEeUJ2z0EpkQkemYK9bYP5+OSizvDBtd +BuXLDtZlu1XcfhHjp7fIkpHp8PU/h+x+BsgmP3NswGbclCguAdSPBTuh3kUwPKtaZEy58iDIdJ6c 9sEpXnUQHPf1jMAinFmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sSHbY-00000000O1d-31Kl; Fri, 12 Jul 2024 14:50:36 +0000 Received: from srv5.3e8.eu ([2a03:4000:28:8d0::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sSHbV-00000000Nzl-48of for openwrt-devel@lists.openwrt.org; Fri, 12 Jul 2024 14:50:35 +0000 Received: from localhost.localdomain (p200300c6cf02cba0ae21e636d180025d.dip0.t-ipconnect.de [IPv6:2003:c6:cf02:cba0:ae21:e636:d180:25d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by srv5.3e8.eu (Postfix) with ESMTPSA id B0868120B77; Fri, 12 Jul 2024 16:49:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=3e8.eu; s=mail20211217; t=1720795773; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tOkgA4J+YeguPaUXN2hKy/mrQ3OV6E7bzRxQDGY1jU4=; b=d2qRuhd7QnTyT+/sRTzLVfntYE+aMXgW4KNRgyj220FIAJy8bdbeDD60qo1U2KJI7j1Dqo JiXLmOpkJmCLazCMp0hCM1lZvHCJZtdv5ClpWOCois/YGM7kRguUOlAfLSAxUBTZ37rQOZ 1z0VgNk9E+UskkrvnbD8Z313ISA4C+rBpzZlQvMAu5YNuZVMYOiGsoyr15BmiESTRtXffi WjMq0TFHH3euuRhj1w0hy7Z2OK7Lb5UkMqNzqmwi23zBQAykZeZWW4zi5AR00lRx4fa9TP G560a1ozQ9BuAOdRa7HoUDcMrcplzaiAwSwL359bnY8S7zL+cyIPmbtwuvK/IQ== From: Jan Hoffmann To: openwrt-devel@lists.openwrt.org Cc: Jan Hoffmann Subject: [PATCH 5/5] ltq-vdsl-vr11-app: perform orderly shutdown on exit Date: Fri, 12 Jul 2024 15:49:53 +0200 Message-ID: <20240712144801.1192493-6-jan@3e8.eu> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240712144801.1192493-1-jan@3e8.eu> References: <20240712144801.1192493-1-jan@3e8.eu> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240712_075034_223869_E018A5E7 X-CRM114-Status: GOOD ( 16.49 ) X-Spam-Score: -2.1 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Try to do a clean disconnection via L3 request before the connection is stopped. Because this might take up to 6 seconds (the driver does 3 attempts with a timeout of 2 seconds each), a termination timeout needs to be defined in the init script. Content analysis details: (-2.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org Try to do a clean disconnection via L3 request before the connection is stopped. Because this might take up to 6 seconds (the driver does 3 attempts with a timeout of 2 seconds each), a termination timeout needs to be defined in the init script. Signed-off-by: Jan Hoffmann --- .../network/config/ltq-vdsl-vr11-app/Makefile | 2 +- .../ltq-vdsl-vr11-app/files/dsl_control | 1 + .../patches/201-orderly-shutdown.patch | 73 +++++++++++++++++++ .../ltq-vdsl-vr11-app/patches/300-ubus.patch | 4 +- 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch diff --git a/package/network/config/ltq-vdsl-vr11-app/Makefile b/package/network/config/ltq-vdsl-vr11-app/Makefile index e56e90f99642..f1782db285c0 100644 --- a/package/network/config/ltq-vdsl-vr11-app/Makefile +++ b/package/network/config/ltq-vdsl-vr11-app/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-vr11-app PKG_VERSION:=4.23.1 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_BASE_NAME:=dsl_cpe_control UGW_VERSION=8.5.2.10 diff --git a/package/network/config/ltq-vdsl-vr11-app/files/dsl_control b/package/network/config/ltq-vdsl-vr11-app/files/dsl_control index d960a7726181..8d85cfd5fb40 100644 --- a/package/network/config/ltq-vdsl-vr11-app/files/dsl_control +++ b/package/network/config/ltq-vdsl-vr11-app/files/dsl_control @@ -254,6 +254,7 @@ start_service() { ${mode} \ ${tc_layer} \ $autoboot + procd_set_param term_timeout 10 procd_close_instance } diff --git a/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch b/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch new file mode 100644 index 000000000000..eabeaaedcb9a --- /dev/null +++ b/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch @@ -0,0 +1,73 @@ +Try to perform an orderly shutdown via L3 request before the connection +is stopped on exit. + +--- a/src/dsl_cpe_control.c ++++ b/src/dsl_cpe_control.c +@@ -7252,15 +7252,58 @@ static DSL_boolean_t DSL_CPE_DebugAndTes + #endif /* defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT) */ + #endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */ + ++DSL_CPE_STATIC DSL_void_t DSL_CPE_EnableConnection(void) ++{ ++ DSL_Error_t nRet = DSL_SUCCESS; ++ DSL_int_t nDevice = 0; ++ DSL_G997_PowerManagementStateForcedTrigger_t sPowerManagementStateForcedTrigger; ++ ++ for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; ++nDevice) ++ { ++ memset(&sPowerManagementStateForcedTrigger, 0x0, ++ sizeof(DSL_G997_PowerManagementStateForcedTrigger_t)); ++ sPowerManagementStateForcedTrigger.data.nPowerManagementState = DSL_G997_PMSF_L3_TO_L0; ++ ++ nRet = (DSL_Error_t)DSL_CPE_Ioctl( ++ DSL_CPE_GetGlobalContext()->fd[nDevice], ++ DSL_FIO_G997_POWER_MANAGEMENT_STATE_FORCED_TRIGGER, ++ (DSL_int_t)&sPowerManagementStateForcedTrigger); ++ ++ if (nRet < DSL_SUCCESS) ++ { ++ DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX ++ "Transition to L0 state (%d) failed!, nRet = %d!" ++ DSL_CPE_CRLF, nDevice, sPowerManagementStateForcedTrigger.accessCtl.nReturn)); ++ } ++ } ++} ++ + DSL_CPE_STATIC DSL_void_t DSL_CPE_ShutdownConnection(void) + { + DSL_Error_t nRet = DSL_SUCCESS; + DSL_int_t nDevice = 0; ++ DSL_G997_PowerManagementStateForcedTrigger_t sPowerManagementStateForcedTrigger; + DSL_AutobootConfig_t sAutobootCfg; + DSL_AutobootControl_t sAutobootCtl; + + for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; ++nDevice) + { ++ memset(&sPowerManagementStateForcedTrigger, 0x0, ++ sizeof(DSL_G997_PowerManagementStateForcedTrigger_t)); ++ sPowerManagementStateForcedTrigger.data.nPowerManagementState = DSL_G997_PMSF_LX_TO_L3; ++ ++ nRet = (DSL_Error_t)DSL_CPE_Ioctl( ++ DSL_CPE_GetGlobalContext()->fd[nDevice], ++ DSL_FIO_G997_POWER_MANAGEMENT_STATE_FORCED_TRIGGER, ++ (DSL_int_t)&sPowerManagementStateForcedTrigger); ++ ++ if (nRet < DSL_SUCCESS) ++ { ++ DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX ++ "Transition to L3 state (%d) failed!, nRet = %d!" ++ DSL_CPE_CRLF, nDevice, sPowerManagementStateForcedTrigger.accessCtl.nReturn)); ++ } ++ + g_bWaitBeforeConfigWrite[nDevice] = DSL_TRUE; + g_bWaitBeforeLinkActivation[nDevice] = DSL_TRUE; + g_bWaitBeforeRestart[nDevice] = DSL_TRUE; +@@ -8318,6 +8361,8 @@ DSL_int_t dsl_cpe_daemon ( + #endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */ + } + ++ DSL_CPE_EnableConnection(); ++ + #ifdef INCLUDE_DSL_CPE_CLI_SUPPORT + #ifndef DSL_CPE_REMOVE_PIPE_SUPPORT + if (DSL_CPE_Pipe_Init (pCtrlCtx) == DSL_ERROR) diff --git a/package/network/config/ltq-vdsl-vr11-app/patches/300-ubus.patch b/package/network/config/ltq-vdsl-vr11-app/patches/300-ubus.patch index 1fe1eac1e8ab..0f2007cdbac9 100644 --- a/package/network/config/ltq-vdsl-vr11-app/patches/300-ubus.patch +++ b/package/network/config/ltq-vdsl-vr11-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}; -@@ -7839,6 +7842,8 @@ DSL_int_t dsl_cpe_daemon ( +@@ -7882,6 +7885,8 @@ DSL_int_t dsl_cpe_daemon ( #endif /* defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1) */ #endif /* RTEMS*/ @@ -19,7 +19,7 @@ /* Open DSL_CPE_MAX_DSL_ENTITIES devices*/ for (nDevice = 0; nDevice < DSL_CPE_DSL_ENTITIES; nDevice++) { -@@ -8375,6 +8380,7 @@ DSL_int_t dsl_cpe_daemon ( +@@ -8420,6 +8425,7 @@ DSL_int_t dsl_cpe_daemon ( #endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */ DSL_CPE_CONTROL_EXIT: