From patchwork Fri Dec 22 21:56:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 135543 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2FFF743762; Fri, 22 Dec 2023 22:58:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 569A742EB7; Fri, 22 Dec 2023 22:57:27 +0100 (CET) Received: from mail-io1-f43.google.com (mail-io1-f43.google.com [209.85.166.43]) by mails.dpdk.org (Postfix) with ESMTP id 29CA842E65 for ; Fri, 22 Dec 2023 22:57:24 +0100 (CET) Received: by mail-io1-f43.google.com with SMTP id ca18e2360f4ac-7ba737ee9b5so115929239f.0 for ; Fri, 22 Dec 2023 13:57:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1703282243; x=1703887043; darn=dpdk.org; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=ZcgY4C6QXwyHzaQ55P3P0JdCBmQMWenc82FkxKhkXfE=; b=QePgkEQtYWTxzMLGJSWXKx2ZlkNlGjdJMiHK2XoVQMZF1WToM5Yqj79GazULy1BMQe 48X5Z+xafGMTs/RYsLFUrRrRAwhG52XggC7zaSRWhsjdLlrcfIU9jN1d51bb2+fhtYNn SyZbctipBtqdLBr2POzX8JFYyu6qyJ3d886CA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703282243; x=1703887043; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZcgY4C6QXwyHzaQ55P3P0JdCBmQMWenc82FkxKhkXfE=; b=kdVfY4JcwJbbLA5bCmGG2IhaR3CRmVYBkHiKSpUpzrORtIO3vFpEvtuVtcOR9XQ6ke QKE5NgP5Irgfz3u73QpSqcdpTo0CxvQeSZDW6y7RHxsDO0WVZUFQ4SBRM/wU/K9TrJ7a 9dIyJhZBabHtcCj6dJJQbqu0FfufohFpYNwafsuKnzMSOZmYToqKyevGmAR95gow6NXJ 9soNHR+r5+MTEmdcTo/WDZbbs+uC8r0DFoeVZNWYtUJms+oJsmFm3Rb+PtWOjiIpx5Q8 6hqwPbj2XP2brv5ZTSJbPBXUrAz/0k6C7tskY8clkZu42he2mKlAjUEjAzRxpTOij5bz 6jVQ== X-Gm-Message-State: AOJu0YzXR/CXk8ZVnacZoFXA5F1ZIcXNSaNowrcf/wtOigOx3etBpVbd y/FaoqRnzst40Pw5V8/qx+TZPbNsYYvotMA4gXTaq3xaxWry3Qrmh8rgTXYL1lbKhF79HTo6SEP 4JZSn8t/JTQ6Dbap7DKkzlMPqV2vi1M2tcUDye6L+FP5Gy8a5gLgwLVWFIdUp0x3Be/PjvMjpKG c= X-Google-Smtp-Source: AGHT+IGjQ+E+z37e8yKIIUd3qg305kDXBMDMQlmD6O3mXJWkrgz4VT6nZ6nmlJg96ohqwMFWrJTNjg== X-Received: by 2002:a05:6e02:1be5:b0:35f:af72:1d9b with SMTP id y5-20020a056e021be500b0035faf721d9bmr2314969ilv.127.1703282242829; Fri, 22 Dec 2023 13:57:22 -0800 (PST) Received: from C02GC2QQMD6T.wifi.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id sr5-20020a17090b4e8500b0028afd8b1e0bsm3540700pjb.57.2023.12.22.13.57.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Dec 2023 13:57:21 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Jay Ding Subject: [PATCH v2 13/18] net/bnxt: add VF FLR async event handler Date: Fri, 22 Dec 2023 13:56:54 -0800 Message-Id: <20231222215659.64993-14-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) In-Reply-To: <20231222215659.64993-1-ajit.khaparde@broadcom.com> References: <20231222215659.64993-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Jay Ding When a VF undergoes an FLR, the firmware indicates this via an async notification to the PF. Note that the PF driver needs to register for the notification with the firmware. Add support for VF_FLR async event handling when the driver is running on a PF. Signed-off-by: Jay Ding Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_cpr.c | 20 ++++++++++++++++++++ drivers/net/bnxt/bnxt_hwrm.c | 6 ++++-- drivers/net/bnxt/bnxt_hwrm.h | 2 ++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index 0733cf4df2..fb43bc58da 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -127,6 +127,23 @@ void bnxt_handle_vf_cfg_change(void *arg) } } +static void +bnxt_process_vf_flr(struct bnxt *bp, uint32_t data1) +{ + uint16_t pfid, vfid; + + if (!BNXT_TRUFLOW_EN(bp)) + return; + + pfid = (data1 & HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_PF_ID_MASK) >> + HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_PF_ID_SFT; + vfid = (data1 & HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_MASK) >> + HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_SFT; + + PMD_DRV_LOG(INFO, "VF FLR async event received pfid: %u, vfid: %u\n", + pfid, vfid); +} + /* * Async event handling */ @@ -264,6 +281,9 @@ void bnxt_handle_async_event(struct bnxt *bp, case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_ERROR_REPORT: bnxt_handle_event_error_report(bp, data1, data2); break; + case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR: + bnxt_process_vf_flr(bp, data1); + break; default: PMD_DRV_LOG(DEBUG, "handle_async_event id = 0x%x\n", event_id); break; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 1ac3f30074..3c16abea69 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1125,9 +1125,11 @@ int bnxt_hwrm_func_driver_register(struct bnxt *bp) req.async_event_fwd[1] |= rte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_DBG_NOTIFICATION); - if (BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp)) + if (BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp)) { req.async_event_fwd[1] |= - rte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE); + rte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE | + ASYNC_CMPL_EVENT_ID_VF_FLR); + } req.async_event_fwd[2] |= rte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_ECHO_REQUEST | diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 56b232d7de..6116253787 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -29,6 +29,8 @@ struct hwrm_func_qstats_output; (1 << HWRM_ASYNC_EVENT_CMPL_EVENT_ID_ERROR_RECOVERY) #define ASYNC_CMPL_EVENT_ID_PF_DRVR_UNLOAD \ (1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD - 32)) +#define ASYNC_CMPL_EVENT_ID_VF_FLR \ + (1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR - 32)) #define ASYNC_CMPL_EVENT_ID_VF_CFG_CHANGE \ (1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE - 32)) #define ASYNC_CMPL_EVENT_ID_DBG_NOTIFICATION \