From patchwork Wed Sep 30 12:33:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 79333 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 34EECA04B5; Wed, 30 Sep 2020 14:18:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A54B91DAFD; Wed, 30 Sep 2020 14:18:42 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (saphodev.broadcom.com [192.19.232.172]) by dpdk.org (Postfix) with ESMTP id 3726C1D669 for ; Wed, 30 Sep 2020 14:18:40 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 396B73CE63 for ; Wed, 30 Sep 2020 05:18:38 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 396B73CE63 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1601468318; bh=zYGZl6zMMdf1aM73bEY3HwQBLICWTS5bcrGsBuu8ttw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=WECrourF//bpPHP4T2hrCotRkNJJXSkmtihOY5CBI1TyFFL43XdlPFIiGwZo23Fhm RdIsq6GCWOnJ1COiCbE/HLssqPjVKec7vKNSA/Nkpt6pIFEWt/lRpQ/T5qO/sWDMP/ 45RZWR0gt7GnVpPnmkm0EMjbw/vzn1JX2VOrnf50= From: Kalesh A P To: dev@dpdk.org Date: Wed, 30 Sep 2020 18:03:12 +0530 Message-Id: <20200930123314.27669-2-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> References: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [RFC PATCH v4 1/3] ethdev: support device reset and recovery events X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP Adding support for device reset and recovery events in the rte_eth_event framework. FW error and FW reset conditions would be managed internally by PMD without needing application intervention. In such cases, PMD would need reset/recovery events to notify application that PMD is undergoing a reset. Signed-off-by: Somnath Kotur Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde --- lib/librte_ethdev/rte_ethdev.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 9759f13..c0c90b7 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -3207,6 +3207,23 @@ enum rte_eth_event_type { RTE_ETH_EVENT_DESTROY, /**< port is released */ RTE_ETH_EVENT_IPSEC, /**< IPsec offload related event */ RTE_ETH_EVENT_FLOW_AGED,/**< New aged-out flows is detected */ + RTE_ETH_EVENT_RESET, + /**< port resetting from an error + * + * PMD detected a FW reset or error condition. + * PMD will try to recover from the error. + * Data path will be halted and Control path operations + * would fail at this time. + */ + RTE_ETH_EVENT_RECOVERED, + /**< port recovered from an error + * + * PMD has recovered from the error condition. + * Control path and Data path are up now. + * Since the device undergone a reset, flow rules + * offloaded prior to the reset will be lost and + * the application has to recreate the rules again. + */ RTE_ETH_EVENT_MAX /**< max value of this enum */ }; From patchwork Wed Sep 30 12:33:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 79334 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3019EA04B5; Wed, 30 Sep 2020 14:19:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC6F81DB0D; Wed, 30 Sep 2020 14:18:45 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (saphodev.broadcom.com [192.19.232.172]) by dpdk.org (Postfix) with ESMTP id 4FEAF1D686 for ; Wed, 30 Sep 2020 14:18:41 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 507AE3CE61 for ; Wed, 30 Sep 2020 05:18:39 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 507AE3CE61 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1601468319; bh=LwO5VhGupQSxFxvWy5YqTVGQzbo+qLe7jSJMSO6t1s8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=fgsXj2vnTHF+Vm9IHiobyHrxJkcdfx1TE20diWo7lElto2+AeSnWniY4/XzxBdCxv jsIEaq2RFPT8dPqiNfBTDeUNt4rWwDvx8rGIKXW8LXE7GUldWcv7bmF17RPrd1naCH 73UYN2stlwDYPV8E863ZYLkvZEu+mEV+ajEKcmAM= From: Kalesh A P To: dev@dpdk.org Date: Wed, 30 Sep 2020 18:03:13 +0530 Message-Id: <20200930123314.27669-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> References: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [RFC PATCH v4 2/3] net/bnxt: notify applications about device reset/recovery X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP When the driver receives RESET_NOTIFY async event from FW or detected an error condition, it should update the application that FW is going to reset. Once the driver recoveres from the reset, update the reset recovery status to application as well. The recovery process is transparent to the application as the driver itself tries to recover from FW reset or FW error conditions. Signed-off-by: Kalesh AP Signed-off-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_cpr.c | 3 +++ drivers/net/bnxt/bnxt_ethdev.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index 8311e26..3b19ef7 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -129,6 +129,9 @@ void bnxt_handle_async_event(struct bnxt *bp, bp->flags |= BNXT_FLAG_FATAL_ERROR; return; } + rte_eth_dev_callback_process(bp->eth_dev, + RTE_ETH_EVENT_RESET, + NULL); event_data = rte_le_to_cpu_32(async_cmp->event_data1); /* timestamp_lo/hi values are in units of 100ms */ diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index b99c712..9a47bfd 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4566,6 +4566,9 @@ static void bnxt_dev_recover(void *arg) goto err_start; PMD_DRV_LOG(INFO, "Recovered from FW reset\n"); + rte_eth_dev_callback_process(bp->eth_dev, + RTE_ETH_EVENT_RECOVERED, + NULL); return; err_start: bnxt_dev_stop_op(bp->eth_dev); @@ -4573,6 +4576,9 @@ static void bnxt_dev_recover(void *arg) bp->flags |= BNXT_FLAG_FATAL_ERROR; bnxt_uninit_resources(bp, false); PMD_DRV_LOG(ERR, "Failed to recover from FW reset\n"); + rte_eth_dev_callback_process(bp->eth_dev, + RTE_ETH_EVENT_INTR_RMV, + NULL); } void bnxt_dev_reset_and_resume(void *arg) @@ -4708,6 +4714,9 @@ static void bnxt_check_fw_health(void *arg) bp->flags |= BNXT_FLAG_FW_RESET; PMD_DRV_LOG(ERR, "Detected FW dead condition\n"); + rte_eth_dev_callback_process(bp->eth_dev, + RTE_ETH_EVENT_RESET, + NULL); if (bnxt_is_master_func(bp)) wait_msec = info->master_func_wait_period; From patchwork Wed Sep 30 12:33:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 79335 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 19822A04B5; Wed, 30 Sep 2020 14:19:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3C47E1DB2C; Wed, 30 Sep 2020 14:18:47 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (saphodev.broadcom.com [192.19.232.172]) by dpdk.org (Postfix) with ESMTP id BA96C1DAFF for ; Wed, 30 Sep 2020 14:18:42 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 6748A3CE63 for ; Wed, 30 Sep 2020 05:18:40 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 6748A3CE63 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1601468321; bh=HYRSapPeowuqMbN1JcORqch1InL3yrDW94rX2G561yc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=s/kGj9IJhYlW5igd3LhBWdjTNQb9r7ne4rTBtMYpi5nPr6DAY0WE2ZAHdg2FZa13a BBqksZUjcmhhAfVjTxFEOvY/4SThfSnDH15OVsQsCfAhXHSNMMSSdTfCImK2mF28Jq wN/9dmKHTh5TMtnYz9hk0FHZgmQMRE86iRHM8vdA= From: Kalesh A P To: dev@dpdk.org Date: Wed, 30 Sep 2020 18:03:14 +0530 Message-Id: <20200930123314.27669-4-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> References: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> <20200930123314.27669-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [RFC PATCH v4 3/3] app/testpmd: handle device recovery event X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP Added code to handle device reset and recovery event in testpmd. This is an indication from the PMD that device has reset and recovered error condition. Signed-off-by: Kalesh AP Reviewed-by: Ajit Kumar Khaparde --- app/test-pmd/testpmd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index fe6450c..1c8fb46 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -380,6 +380,8 @@ static const char * const eth_event_desc[] = { [RTE_ETH_EVENT_NEW] = "device probed", [RTE_ETH_EVENT_DESTROY] = "device released", [RTE_ETH_EVENT_FLOW_AGED] = "flow aged", + [RTE_ETH_EVENT_RESET] = "device reset", + [RTE_ETH_EVENT_RECOVERED] = "device recovery", [RTE_ETH_EVENT_MAX] = NULL, }; @@ -394,7 +396,9 @@ uint32_t event_print_mask = (UINT32_C(1) << RTE_ETH_EVENT_UNKNOWN) | (UINT32_C(1) << RTE_ETH_EVENT_IPSEC) | (UINT32_C(1) << RTE_ETH_EVENT_MACSEC) | (UINT32_C(1) << RTE_ETH_EVENT_INTR_RMV) | - (UINT32_C(1) << RTE_ETH_EVENT_FLOW_AGED); + (UINT32_C(1) << RTE_ETH_EVENT_FLOW_AGED) | + (UINT32_C(1) << RTE_ETH_EVENT_RESET) | + (UINT32_C(1) << RTE_ETH_EVENT_RECOVERED); /* * Decide if all memory are locked for performance. */