From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD1B9C2D0A8 for ; Wed, 30 Sep 2020 06:58:54 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 3543B2075F for ; Wed, 30 Sep 2020 06:58:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="qQdAu2/0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3543B2075F Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4B0CB1DB48; Wed, 30 Sep 2020 08:58:29 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (saphodev.broadcom.com [192.19.232.172]) by dpdk.org (Postfix) with ESMTP id 771511DB16 for ; Wed, 30 Sep 2020 08:58:26 +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 BC823829C; Tue, 29 Sep 2020 23:58:23 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BC823829C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1601449105; bh=ygImelzxlTI8OljNQLYZbWVXfFMm72JtFz0cPuSXz28=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qQdAu2/0HfTkHQjO9TaAlQ1ZFJB+EmA6ac/D9t3WeY78ea0kn4kXf9JUSyhj5f0lL 4birq5GcpOhexjRx48qKVtUUU+9DmxiURDENaxoyD+7ldS5vREH+jGtW31i8gW8bPg VKp8MlfgieVDnAQbZ8yzXlFaPtNSR//6Kp3bxMhQ= From: Kalesh A P To: dev@dpdk.org Cc: thomas@monjalon.net, ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Wed, 30 Sep 2020 12:42:57 +0530 Message-Id: <20200930071258.22457-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200930071258.22457-1-kalesh-anakkur.purayil@broadcom.com> References: <20200122101654.20824-1-kalesh-anakkur.purayil@broadcom.com> <20200930071258.22457-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [RFC PATCH v3 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..f2fddf7 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..609bf46 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; -- 2.10.1