From patchwork Wed Oct 7 16:49: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: 79924 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 93068A04BA; Wed, 7 Oct 2020 18:35:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 62DF81BC92; Wed, 7 Oct 2020 18:34:50 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (unknown [192.19.221.30]) by dpdk.org (Postfix) with ESMTP id E390E1B9F8 for ; Wed, 7 Oct 2020 18:34:44 +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 BD84882D0E for ; Wed, 7 Oct 2020 09:34:41 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BD84882D0E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1602088481; bh=57yetiMLX/CRFWExo0xmk4Q+1eu1VlGOizeUHaXXURU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PqSR4VKBC8ZAH7Z+lRAk85G4Ixz7Wq/DLTFzIhQ/WnWnOS/uPFiPphtAyfVXbycRu 0gRtKMb+zjFtQRzpo9Zs6BGRWqdYWdLytGhawqJZMWl5rIZEHBnDKuB789+3Q4ZP2c xp696aKAguNlUK9BcQmx69QuWpa18bVGVZoR/0/0= From: Kalesh A P To: dev@dpdk.org Date: Wed, 7 Oct 2020 22:19:12 +0530 Message-Id: <20201007164915.14375-1-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> References: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH v5 0/3] librte_ethdev: error recovery support 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 The error recovery solution is a protocol implemented between firmware and bnxt PMD to recover from the fatal errors without a system reboot. There is an alarm thread which constantly monitors the health of the firmware and initiates a recovery when needed. There are two scenarios here: 1. Hardware or firmware encountered an error which firmware detected. Firmware is in operational status here. In this case, firmware can reset the chip and notify the driver about the reset. 2. Hardware or firmware encountered an error but firmware is dead/hung. Firmware is not in operational status. In this case, the only possible way to recover the adapter is through host driver(bnxt PMD). In both cases, bnxt PMD reinitializes with the FW again after the reset. During that recovery process, data path will be halted and any control path operation would fail. So, the PMD has to notify the application about this reset/error event to prevent any activities from the application while the PMD is recovering from the error. This patch set adds support for the reset and recovery event in the rte_eth_event framework. FW error and FW reset conditions would be managed by the PMD. Driver uses RTE_ETH_EVENT_RESET event to notify the applications about the FW reset or error. In such cases, PMD use the RTE_ETH_EVENT_RECOVERED event to notify application about PMD has recovered from FW reset or FW error. v5: Addressed comments from Ophir. 1. Renamed the new event name to RTE_ETH_EVENT_ERR_RECOVERING. 2. Fixed testpmd logs. 3. Documented the new recovery events. v4: Added doxygen comments about new events. V3: Fixed a typo in commit log. V2: Added a new event RTE_ETH_EVENT_RESET instead of using the RTE_ETH_EVENT_INTR_RESET to notify applications about device reset. Kalesh AP (3): ethdev: support device reset and recovery events net/bnxt: notify applications about device reset/recovery app/testpmd: handle device recovery event app/test-pmd/testpmd.c | 6 +++++- doc/guides/prog_guide/poll_mode_drv.rst | 18 ++++++++++++++++++ drivers/net/bnxt/bnxt_cpr.c | 3 +++ drivers/net/bnxt/bnxt_ethdev.c | 9 +++++++++ lib/librte_ethdev/rte_ethdev.h | 17 +++++++++++++++++ 5 files changed, 52 insertions(+), 1 deletion(-)